var
FrmCntksMain: TFrmCntksMain;
Keys: TStringList;
IntRecCount: Integer;
ConnectCntks : TSQLite3Connection;
TransCntks : TSQLTransaction;
QryCntks : TSQLQuery;
QryStates : TSQLQuery;
QryCntries : TSQLQuery;
QryCat : TSQLQuery;
implementation
{$R *.lfm}
{ TFrmCntksMain }
procedure TFrmCntksMain.FormCreate(Sender: TObject);
begin
SetupDB;
ConnectCntks.Open; //-> Open the Contacts Database...
//-> Clear/Assign index items to the CmboBxSelIndex component...
CmboBxSelIndex.Items.Clear;
CmboBxSelIndex.Items.Add('Name (L,F,M)');
CmboBxSelIndex.Items.Add('Company');
CmboBxSelIndex.Items.Add('Category');
CmboBxSelIndex.Items.Add('City/Town');
CmboBxSelIndex.Items.Add('State/Province');
CmboBxSelIndex.Items.Add('Country');
end;
procedure TFrmCntksMain.SetupDB;
var
CntksDB : string = 'ContactsDB.sqlite3';
begin
//-> Create the connection to the ContactsDB sqlite3 database ...
CntksDB:= Application.Location + CntksDB;
if not FileExists(CntksDB) then begin
showmessage('Contacts Database file '+CntksDB+', is missing!');
exit;
end;
ConnectCntks:= TSQLite3Connection.Create(Nil);
ConnectCntks.DatabaseName:= CntksDB;
//-> Create the transaction for the connection ...
{ Next line Error??? Error: identifier idents no member "TSQLTransaction"
TransCntks.TSQLTransaction.Create(ConnectCntks); }
TransCntks.DataBase:= ConnectCntks;
TransCntks.Action:= caCommit;
TransCntks.Active:= True;
//-> Now Query/Open/Connect to the ContactsDB database ...
ConnectCntks.Connected:= True;
QryCntks.Transaction:= TransCntks;
QryCntks.Options:= [sqoAutoApplyUpdates,sqoAutoCommit];
QryCntks.DataBase:= ConnectCntks;
end;
procedure TFrmCntksMain.FormShow(Sender: TObject);
begin
//-> Create/Select the CONTACTS Table query...
QryCntks.SQL.Text:=
'SELECT * FROM CONTACTS ContactsDB ORDER BY LASTNAME, FIRSTNAME, MI';
QryCntks.UpdateSQL.Text:=
'UPDATE CONTACTS SET CNTKID=:CNTKID, DATESTAMP=:DATESTAMP, LASTNAME=:LASTNAME, '+
'FIRSTNAME=:FIRSTNAME, MI=:MI, CATEGORY=:CATEGORY, DOB=:DOB, COMPANY=:COMPANY, '+
'TITLE=:TITLE, SPOUSE=:SPOUSE, ADDRESS=:ADDRESS, ADDRESS2=:ADDRESS2, '+
'CITYTOWN=:CITYTOWN, COUNTY=:COUNTY, STATEPROV=:STATEPROV, POSTALCODE=:POSTALCODE, '+
'COUNTRY=:COUNTRY, CELLNO=:CELLNO, MAINPHONE=:MAINPHONE, PHONE=:PHONE, '+
'FAX=:FAX, EMAIL=:EMAIL, EMAIL2=:EMAIL2, WEBURL=:WEBURL, NOTES=:NOTES '+
'WHERE CNTKID=:OLD_CNTKID';
DSrcCntks.DataSet:= QryCntks;
//-> Create/Select the STATES Table query...
QryStates.DataBase:= ConnectCntks;
QryStates.Options:= [sqoAutoApplyUpdates, sqoAutoCommit];
QryStates.SQL.Text:= 'SELECT * FROM STPROVCODES ContactsDB ORDER BY STPROVCODE';
QryStates.UpdateSQL.Text:=
'UPDATE STPROVCODES SET STPROVCODE=:STPROVCODE, STPROVNAME=:STPROVCODE, '+
'STPROVISO=:STPROVISO WHERE STPROVCODE=:OLD_STPROVCODE';
DSrcStates.DataSet:= QryStates;
//-> Create/Select the COUNTRIES Table query...
QryCntries.DataBase:= ConnectCntks;
QryCntries.Options:= [sqoAutoApplyUpdates, sqoAutoCommit];
QryCntries.SQL.Text:= 'SELECT * FROM COUNTRIES ContactsDB ORDER BY CODE';
QryCntries.UpdateSQL.Text:= 'UPDATE COUNTRIES SET CODE=:CODE, COUNTRY=:COUNTRY'+
'WHERE CODE=:OLD_CODE';
DSrcCntries.DataSet:= QryCntries;
//-> Create/Select the CATEGORIES Table query...
QryCat.DataBase:= ConnectCntks;
QryCat.Options:= [sqoAutoApplyUpdates, sqoAutoCommit];
QryCat.SQL.Text:= 'SELECT * FROM CATEGORIES ContactsDB ORDER BY CATID';
QryCat.UpdateSQL.Text:= 'UPDATE CATEGORIES SET CATID=:CATID, CATEGORY=:CATEGORY'+
'WHERE CATID=:OLD_CATID';
DSrcCat.DataSet:= QryCat;
//-> Open all Contacts Database table queries...
QryCntks.Open;
QryStates.Open;
QryCntries.Open;
QryCat.Open;
//-> Show total Contacts...
EditTTLCntks.ReadOnly:= False;
IntRecCount:= DSrcCntks.DataSet.RecordCount;
EditTTLCntks.Text:= IntToStr(IntRecCount);
EditTTLCntks.ReadOnly:= True;
//-> Disable Save/Cancel buttons...
BitBtnSaveCntk.Enabled:= False;
BitBtnCancel.Enabled:= False;
end;
procedure TFrmCntksMain.BitBtnSaveCntkClick(Sender: TObject);
begin
if DSrcCntks.DataSet.Modified then
DSrcCntks.DataSet.Post;
end;