瀏覽代碼

* Preserve existing param values when changing sql text.
Patch by Lacak2, Mantis #19456

git-svn-id: trunk@19384 -

marco 14 年之前
父節點
當前提交
cb832a5656
共有 1 個文件被更改,包括 10 次插入1 次删除
  1. 10 1
      packages/fcl-db/src/sqldb/sqldb.pp

+ 10 - 1
packages/fcl-db/src/sqldb/sqldb.pp

@@ -930,6 +930,7 @@ end;
 procedure TCustomSQLQuery.OnChangeSQL(Sender : TObject);
 
 var ConnOptions : TConnOptions;
+    NewParams: TParams;
 
 begin
   UnPrepare;
@@ -940,7 +941,15 @@ begin
       ConnOptions := TSQLConnection(DataBase).ConnOptions
     else
       ConnOptions := [sqEscapeRepeat,sqEscapeSlash];
-    Fparams.ParseSQL(FSQL.Text,True, sqEscapeSlash in ConnOptions, sqEscapeRepeat in ConnOptions,psInterbase);
+    //preserve existing param. values
+    NewParams := TParams.Create(Self);
+    try
+      NewParams.ParseSQL(FSQL.Text, True, sqEscapeSlash in ConnOptions, sqEscapeRepeat in ConnOptions, psInterbase);
+      NewParams.AssignValues(FParams);
+      FParams.Assign(NewParams);
+    finally
+      NewParams.Free;
+    end;
     If Assigned(FMasterLink) then
       FMasterLink.RefreshParamNames;
     end;