Browse Source

* fix for bug #7565 + test

git-svn-id: trunk@5778 -
joost 18 years ago
parent
commit
9e9c10bb02
2 changed files with 41 additions and 4 deletions
  1. 1 1
      fcl/db/sqldb/sqldb.pp
  2. 40 3
      fcl/dbtests/testsqlfieldtypes.pas

+ 1 - 1
fcl/db/sqldb/sqldb.pp

@@ -1209,7 +1209,7 @@ Procedure TSQLQuery.ApplyRecUpdate(UpdateKind : TUpdateKind);
     sql_values := '';
     sql_values := '';
     for x := 0 to Fields.Count -1 do
     for x := 0 to Fields.Count -1 do
       begin
       begin
-      if not fields[x].IsNull then
+      if (not fields[x].IsNull) and (pfInUpdate in Fields[x].ProviderFlags) then
         begin
         begin
         sql_fields := sql_fields + fields[x].FieldName + ',';
         sql_fields := sql_fields + fields[x].FieldName + ',';
         sql_values := sql_values + ':' + fields[x].FieldName + ',';
         sql_values := sql_values + ':' + fields[x].FieldName + ',';

+ 40 - 3
fcl/dbtests/testsqlfieldtypes.pas

@@ -27,8 +27,7 @@ type
     procedure RunTest; override;
     procedure RunTest; override;
   published
   published
   
   
-
-
+    procedure TestpfInUpdateFlag; // bug 7565
     procedure TestInt;
     procedure TestInt;
     procedure TestScript;
     procedure TestScript;
 
 
@@ -58,7 +57,7 @@ type
 
 
 implementation
 implementation
 
 
-uses sqldbtoolsunit,toolsunit, variants, sqldb;
+uses sqldbtoolsunit,toolsunit, variants, sqldb, bufdataset;
 
 
 const
 const
   testFloatValuesCount = 21;
   testFloatValuesCount = 21;
@@ -114,6 +113,44 @@ const
   );
   );
 
 
 
 
+procedure TTestFieldTypes.TestpfInUpdateFlag;
+var ds   : TBufDataset;
+    AFld1, AFld2, AFld3 : Tfield;
+begin
+  ds := (DBConnector.GetNDataset(True,5) as TBufDataset);
+  with ds do
+    begin
+    AFld1 := TIntegerField.Create(ds);
+    AFld1.FieldName := 'ID';
+    AFld1.DataSet := ds;
+    AFld1.ProviderFlags := [pfInKey];
+
+    AFld2 := TStringField.Create(ds);
+    AFld2.FieldName := 'NAME';
+    AFld2.DataSet := ds;
+
+    AFld3 := TIntegerField.Create(ds);
+    AFld3.FieldName := 'CALCFLD';
+    AFld3.DataSet := ds;
+    Afld3.FieldKind := fkCalculated;
+    AFld3.ProviderFlags := [];
+
+    Open;
+    Edit;
+    FieldByName('ID').AsInteger := 254;
+    Post;
+    ApplyUpdates;
+    Append;
+    FieldByName('ID').AsInteger := 255;
+    Post;
+    ApplyUpdates;
+    Close;
+    AFld1.Free;
+    AFld2.Free;
+    AFld3.Free;
+    end;
+end;
+
 procedure TTestFieldTypes.TestScript;
 procedure TTestFieldTypes.TestScript;
 
 
 var Ascript : TSQLScript;
 var Ascript : TSQLScript;