Moștenitor de la TIBUpdateSQL cu o tranzacție de scriere
Iată o încercare de a introduce principiul separării tranzacțiilor în "citire" și "scriere" pentru componentele IBCustomDataset din IBX. Utilizarea IBUpdateSQL ca și componentă de bază este explicată de dorința de a minimiza activitatea de schimbare a codului sursă și de capacitatea sa de reparații IBDataset poate provoca probleme probabile la utilizarea noilor versiuni ale IBX.
Pentru a înțelege mecanismul IBUpdateSQL, trebuie să evidențiați următoarele proprietăți și metode: private
FQueries: matrice [TUpdateKind] din TIBQuery;
public
proprietate interogare [UpdateKind: TUpdateKind]: TIBQuery citiți GetQuery; Proprietatea array FQueries stochează indicii către obiecte de tip TIBQuery ale căror valori sunt inițial zero. Când suni pentru prima dată interogare, se numește metoda GetQuery - creează un obiect și inițiază proprietățile IBDatabase și IBTransaction. Observ că este probabil că unul sau mai multe obiecte TIBQuery nu vor fi create, pur și simplu, adică Nu a existat nicio modificare a datelor și FDataset nu a accesat metoda UpdateObject.Apply. Pur și simplu, componenta IBUpdateSQL face o lucrare "manuală" ca var
MySql: TIBSQL;
MySql: = TIBSQL.Creați (zero);
MySql.database: = dm.Base;
MySql.Transaction: = dm.trCitiți;
MySql.SQL: = 'la-la-la';
finalizare
dacă este atribuită (MySql) atunci
MySql.Free; Toate acestea sunt implementate în metoda GetQuery.
- manipularea evenimentului SetUpdateTransaction
- efectuați modificări la GetQuery
- gestionați evenimentul de notificare
- bypass privacy și static