Fiches Delphi avec nxCachedDataSet

  • Déposer une TNxQuery (qXXX), un TNxCachedDataset (cXXX), un TDataSource (dsXXX) et un TNxSqlUpdateObject (uXXX).
  • Rattacher le dsXXX à cXXX
  • Rattacher qXXX à cXXX (champ cXXX.SourceDataSet)
  • Rattacher uXXX à cXXX (champ cXXX.UpdateObject)
  • Définir la requête qXXX.Text pour récupérer le contenu de la table
  • Ajouter les champs persistants à qXXX et cXXX
  • Si qXXX a une Datasource, définir un événement cXXX.AfterInsert et y placer :

===

procedure TFFicheContrat.cLienContratCategorieAfterInsert(DataSet: TDataSet);
begin
  cLienContratCategorieidcontrat.AsInteger:=fContratsId.Value;
end;
  • Définir des requêtes pour uXXX

INSERT

INSERT INTO lienscontratscategories (idcontrat,idcategorie,abattement)
VALUES (:idcontrat,:idcategorie,:abattement)

MODIFY

UPDATE lienscontratscategories 
SET idcategorie=:idcategorie, abattement=:abattement
WHERE id=:id

DELETE

DELETE FROM lienscontratscategories WHERE id=:id

Les paramètres :zzz se rapportent à cXXX

  • Ajouter une demande de confirmation de suppression dans cXXX.BeforeDelete :

#

procedure TFFicheContrat.cLienContratCategorieBeforeDelete(DataSet: TDataSet);
begin
  if (MessageDlg('Retirer cet abattement pour cette catégorie de ce support  ?', mtWarning, [mbYes, mbNo], 0) = mrNo) then
    Abort;
end;

NexusDB

LastAutoInc

START TRANSACTION;
insert into titres (nom) values ('test IDENTITY');
SELECT LASTAUTOINC;
COMMIT;

Dans du Delphi, ça donne :

q:=TNxQuery.Create(application);
try
  q.Database:=dm.dbinpro;
  q.sql.text:='START TRANSACTION; '+
              'INSERT INTO titres (isrc,nom,interprete) values (:isrc,:titre,:interprete); ';
              'SELECT LASTAUTOINC; '+
              'COMMIT; ';
  q.ParamByName('titre').AsString:=LTitre.Caption;
  q.ParamByName('isrc').AsString:=LIsrc.Caption;
  q.ParamByName('interprete').AsString:=LArtistes.Caption;
  q.Open;
  i:=q.FieldValues['LastAutoInc'];
finally
  q.free;
end;

Insérer des valeurs nulles

with q.ParamByName('idtitre') do Begin
  Clear;
  Bound:=True;
  DataType:=ftString;
End;