//Populate database with all rows required for the biggest of the two folders
// If they match, just use the FolderA file count
if FolderAFileCount > FolderBFileCount then
begin
frmSQLiteDBases.Write_INSERT_All_Rows_Required(FolderAFileCount);
end
else if FolderBFileCount > FolderAFileCount then
begin
frmSQLiteDBases.Write_INSERT_All_Rows_Required(FolderBFileCount);
end
else if FolderAFileCount = FolderBFileCount then
begin
frmSQLiteDBases.Write_INSERT_All_Rows_Required(FolderAFileCount);
end;
...
// Populate the database table with empty rows first, to then be populated using UPDATE
procedure TfrmSQLiteDBases.Write_INSERT_All_Rows_Required(RowCount : integer);
var
i : integer;
begin
for i:= 0 to RowCount -1 do
begin
try
sqlCOMPARETWOFOLDERS.Close;
sqlCOMPARETWOFOLDERS.SQL.Text := 'INSERT into TBL_COMPARE_TWO_FOLDERS (FolderAndFileNameA, FolderAndFileNameAHash, FolderAndFileNameB, FolderAndFileNameBHash) values (:FolderAFilename,:FolderAFileHash,:FolderBFilename,:FolderBFileHash)';
SQLTransaction1.Active := True;
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderAFilename').AsString := '';
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderAFileHash').AsString := '';
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderBFilename').AsString := '';
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderBFileHash').AsString := '';
sqlCOMPARETWOFOLDERS.ExecSQL;
except
on E: EDatabaseError do
begin
MessageDlg('Error','Unable to create all rows required for comparison. Technical error message: ' + E.Message,mtError,[mbOK],0);
end;
end;
end;
end;
procedure TfrmSQLiteDBases.Write_COMPARE_TWO_FOLDERS_FolderA(Col1, Col2 : string; Counter : integer);
{ Col1 : Filename from Folder A
Col2 : Hashvalue from FileA in FolderA
}
begin
try
sqlCOMPARETWOFOLDERS.Close;
sqlCOMPARETWOFOLDERS.SQL.Text := 'UPDATE TBL_COMPARE_TWO_FOLDERS SET FolderAndFileNameA =:FolderAFilename, FolderAndFileNameAHash =:FolderAFileHash WHERE Id=:Counter';
SQLTransaction1.Active := True;
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderAFilename').AsString := Col1;
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderAFileHash').AsString := Col2;
sqlCOMPARETWOFOLDERS.Params.ParamByName('Counter').AsString := IntToStr(Counter);
sqlCOMPARETWOFOLDERS.ExecSQL;
except
on E: EDatabaseError do
begin
MessageDlg('Error','A database error has occurred. Technical error message: ' + E.Message,mtError,[mbOK],0);
end;
end;
end;
procedure TfrmSQLiteDBases.Write_COMPARE_TWO_FOLDERS_FolderB(Col3, Col4 : string; Counter : integer);
{ Col3 : Filename from Folder B
Col4 : Hashvalue from FileB in FolderB
}
begin
try
sqlCOMPARETWOFOLDERS.Close;
sqlCOMPARETWOFOLDERS.SQL.Text := 'UPDATE TBL_COMPARE_TWO_FOLDERS SET FolderAndFileNameB =:FolderBFilename, FolderAndFileNameBHash =:FolderBFileHash WHERE Id=:Counter';
SQLTransaction1.Active := True;
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderBFilename').AsString := Col3;
sqlCOMPARETWOFOLDERS.Params.ParamByName('FolderBFileHash').AsString := Col4;
sqlCOMPARETWOFOLDERS.Params.ParamByName('Counter').AsString := IntToStr(Counter);
sqlCOMPARETWOFOLDERS.ExecSQL;
except
on E: EDatabaseError do
begin
MessageDlg('Error','A database error has occurred. Technical error message: ' + E.Message,mtError,[mbOK],0);
end;
end;
end;