Bonjour,
je cherche une documentation synthétique pour utiliser le couple TFDQuery + TFDUpdateSQL. Jusqu'à présent en Lazarus comme en Delphi, j'utilisais 2 DataSet : un pour le rafraîchissement de la Grid (Open) et l'autre pour toutes les opérations d'insertion, suppression, modification et duplication (ExecSQL). L'avantage de ma solution étant de réduire les temps de chargement avec une méthode adaptée et la complication étant le rafraîchissement de la table. Par contre, je dispose de la duplication. Je ne sais pas si on peut l'émuler avec le TFDUpdateSQL.
Après avoir lu un article récent dans ce forum, j'ai testé la TMSFMXLiveGrid et en effet même sur une table MySQL distante conséquente on peut rendre l'affichage des données assez rapide. C'est même assez surprenant. Le problème c'est que le FDUPdateSQL m'est totalement étranger. Je me lance, consulte des docs, mais non synthétiques et je ne suis pas loin d'abandonner... Je peux y passer une journée de mon WE pour faire le point mais guère plus. J'ai consommé 50% du temps et les lacunes sont encore très nombreuses.
Le DataSet est en LiveBindings avec une TDGrid. La Grid est en lecture seule. Je voudrais supprimer et insérer des enregistrements. Dans le FDUpdateSQL, voici les requêtes de suppression
et d'insertion
Code : Sélectionner tout - Visualiser dans une fenêtre à part DELETE FROM test WHERE teID = :OLD_teID LIMIT 1;
Le code du bouton de suppression pour supprimer l'enregistrement sélectionné dans la Grid :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO test (teID, teNOM, tePRENOM) VALUES (:NEW_teID, :NEW_teNOM, :NEW_tePRENOM);
Cela semble fonctionnel (dans la Grid et dans la table). Trop simple certainement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm1.BtDELClick(Sender: TObject); begin with FDQuery1 do try Delete; except on e: Exception do begin ShowMessage(e.Message); end; end; end;
Pour l'insertion, il me semble avoir compris à la lecture de la documentation éparpillée de Delphi que pour changer les paramètres, on utilise
Je vois en effet des changements dans la Grid.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FindField('teID').NewValue := 'AAAAA'; FindField('teNOM').NewValue := 'NOM A '; FindField('tePRENOM').NewValue := 'Prénom A' ;Mais c'est après que cela se complique. Comment articule-ton la gestion de la transaction ?Postit : Et quid d'un champ NUL ? En Params, FireDac est mauvais (peu simple) pour cette gestion.
J'utilise quoi exactement dans les CachedUpdates := True; Insert; ApplyUpdates(); CommitUpdates; CachedUpdates := False; Connection.Commit; ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with FDQuery 1 do begin Connection.StartTransaction; try [???] end;
Pour l'instant mon FDQuery et son FDUpdateSQL sont réglés avec les réglages par défaut.
Merci de votre aide. Zac.
Partager