Browse Source

* Patch from Luiz Americo to let Tsqlite*Dataset.Applyupdate return false if any error occured. (mantis 9123)

git-svn-id: trunk@7923 -
joost 18 years ago
parent
commit
97d6ae6cd9
1 changed files with 14 additions and 5 deletions
  1. 14 5
      packages/fcl-db/src/sqlite/customsqliteds.pas

+ 14 - 5
packages/fcl-db/src/sqlite/customsqliteds.pas

@@ -1251,7 +1251,7 @@ end;
 
 function TCustomSqliteDataset.ApplyUpdates:Boolean;
 var
-  iFields,iItems,StatementsCounter:Integer;
+  iFields, iItems, StatementsCounter, TempReturnCode:Integer;
   SqlTemp,WhereKeyNameEqual,ASqlLine,TemplateStr:String;
   TempItem: PDataRecord;
 begin
@@ -1264,6 +1264,7 @@ begin
   Result:=False;
   if FPrimaryKeyNo <> -1 then
   begin
+    FReturnCode := SQLITE_OK;
     StatementsCounter:=0;
     WhereKeyNameEqual:=' WHERE '+Fields[FPrimaryKeyNo].FieldName+' = ';
     {$ifdef DEBUG_SQLITEDS}
@@ -1288,7 +1289,9 @@ begin
       if StatementsCounter = 400 then
       begin
         SqlTemp:=SqlTemp+'COMMIT;';
-        FReturnCode:=SqliteExec(PChar(SqlTemp),nil,nil);
+        TempReturnCode := SqliteExec(PChar(SqlTemp),nil,nil);
+        if TempReturnCode <> SQLITE_OK then
+          FReturnCode := TempReturnCode;  
         StatementsCounter:=0;
         SqlTemp:='BEGIN;';
       end;    
@@ -1314,7 +1317,9 @@ begin
       if StatementsCounter = 400 then
       begin
         SqlTemp:=SqlTemp+'COMMIT;';
-        FReturnCode:=SqliteExec(PChar(SqlTemp),nil,nil);
+        TempReturnCode := SqliteExec(PChar(SqlTemp),nil,nil);
+        if TempReturnCode <> SQLITE_OK then
+          FReturnCode := TempReturnCode;
         StatementsCounter:=0;
         SqlTemp:='BEGIN;';
       end;  
@@ -1344,7 +1349,9 @@ begin
       if StatementsCounter = 400 then
       begin
         SqlTemp:=SqlTemp+'COMMIT;';
-        FReturnCode:=SqliteExec(PChar(SqlTemp),nil,nil);
+        TempReturnCode := SqliteExec(PChar(SqlTemp),nil,nil);
+        if TempReturnCode <> SQLITE_OK then
+          FReturnCode := TempReturnCode;
         StatementsCounter:=0;
         SqlTemp:='BEGIN;';
       end;  
@@ -1356,7 +1363,9 @@ begin
    FAddedItems.Clear;
    FUpdatedItems.Clear;
    FDeletedItems.Clear;   
-   FReturnCode:=SqliteExec(PChar(SqlTemp),nil,nil);
+   TempReturnCode := SqliteExec(PChar(SqlTemp),nil,nil);
+   if TempReturnCode <> SQLITE_OK then
+     FReturnCode := TempReturnCode;
    Result:= FReturnCode = SQLITE_OK;
   end;  
   {$ifdef DEBUG_SQLITEDS}