je n'avais fait que répondre à la problèmatique LiveBindings maintenant il y a autre chose qui me "choque" ou plus exactement que tu peux améliorer.
Tu utilises deux querys pour tes données , plus un rafraichissement dans ta partie code, il y a mieux et plus facile
- Tu modifies le FDQuerySelect
SELECT id,title, description, level, left_id, right_id FROM TBL_categories (on aura besoin de la colonne id)
- tu ajoutes un FDUpdateSQL
- Tu renseignes la propriété UpdateObject de FDQuerySelect avec FDUpdateSQL1
- double clic ensuite sur le FDUpdateSQL et génère les commandes (sachant qu'ensuite tu peux modifier ces commandes de façon plus "personnelle")
- ensuite plutôt que programmer le btnInsert , tu utilises l'évènement OnNewRecord pour initialiser les colonnes , donc plus besoin du bouton [Ajouter] le plus du bindnavigator suffit avec le bouton de validation pour confirmer ou non la saisie
Code:
1 2 3 4 5 6 7 8 9 10 11
|
procedure TForm23.FDQuery1NewRecord(DataSet: TDataSet);
begin
// plusieurs écoles pour cette partie
Dataset.FieldByName('Level').AsInteger := 0;
Dataset.FieldByName('Left_id').AsInteger := 1;
Dataset.FieldByName('Right_id').AsInteger := 2;
// ou FdQuery1.FieldByName('Level')
// ou Dataset['level']
end; |
maintenant, si tu tiens à passer par une requête Insert libre à toi mais avec le composant FDUpdateSQL tu as tout loisir d'utiliser les "commandes de table"
FDQuery1. Edit, Post, Insert ou Append, Delete
En fait, FDTable agit comme cela (sauf que c'est plus "figé"), un FDTable n'est qu'une requête SELECT * FROM et génére les SQL comme le générateur (image) le fait (bon cela dépend aussi de petites options upWhereKeyOnly, upWhereAll etc..). Dans un cas "simple" comme ce que tu nous montres le FDTable est tout aussi utilisable. Le couple FDQUery+FDUpdateTable (c'est valable aussi pour BDE, ZEOSDBO ...) est beaucoup plus intéressant dés que la Query est plus complexe (genre jointures de tables).
Seule chose que je n'ai pas encore essayé avec Firedac (et qu'il semble possible de faire) une requête avec plusieurs commandes SQL