Bonjour à tous,

Je me décide à quitter le BDE pour découvrir firebird. J'ai débuté avec le tuto "officiel " ici sans aucun problème et tout fonctionne parfaitement.

Seulement voila, je voudrais rajouter des enregistrement sans me servir du couple dbnavigator/dbgrid (directement par code) mais cela ne marche pô

Je commence par rajouter un enreg dans ma table avec une requete du type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
with Sql do
 with Campagne do
  begin
    Close;
         s := '10';    // valeur en dur de ma cle primaire juste pour vous expliquer;
   ss := 'XXXXX';
    with Sql do
    begin
      Clear;
      Add('INSERT INTO CAMPAGNE');
      Add('  (CAMPAGNE, NOM_CAMPAGNE)');
      Add('  VALUES (' + QuotedStr(s) + ',' + quotedstr(ss) + ')');
    end;
 
    Try
      ExecSql;
      frmMain.DBGrid1.Refresh;
      // display('  ok');
    except
      on e: Exception do
        showmessage('  *** pb_insert ' + e.Message);
    end;
  end; // with SqlQuery1
Parfais, je valide avec un ApplyUpdates de mon clientdatatset et tout se passe bien.

Seulement, mon dbgrid ne fait pas apparaitre le nouvel enreg, donc je tente d'ouvrir et de fermer mon sqlquery (sans aucun effet sur le refresh du dbgrid). Je tente alors d'ouvrir et de fermer mon clientdatatset et la erreur de cle primaire ('violation of primary or unique key constraint') incompréhensible car la cle est bien renseignée avec une valeur unique.

Information : si je ferme et relance l'application, l'enregistrement que je viens de créer apparait bien dans mon dbgrid.

Donc question : si quelqu'un peut me dire ou est mon erreur je prend (grave) ou si quelqu'un sait comment rafraichir ce foutu dbgrid ben je prend aussi

Merci d'avoir lu jusque la, de prendre le temps de répondre si vous avez un début de solution et désolé pour le roman...