bonjour à tous,
Voila mon problème est simple, je veux accéder à une base interbase et créer une nouvelle colonne dans une table existante.
voila mon code:

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
24
25
26
27
28
29
30
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   IBQuery1.Create(NIL);
   IBDatabase1.create(NIL);
   IBDatabase1.connected:=false;
   IBDatabase1.DatabaseName:=databasetest;
   IBDatabase1.Params.Add('USER_NAME=SYSDBA');
   IBDatabase1.Params.Add('PASSWORD='+Password);
   IBDatabase1.LoginPrompt:=false;
   IBDatabase1.Connected:=true;
   with  IBQuery1 do
    begin
          Transaction:=TIbTransaction.Create(Nil);
          Transaction.DefaultDatabase:= IBDatabase1;
          close;
          SQL.Clear;
          SQL.add('ALTER TABLE P1XXXXX ADD DEMANDEUR2 varchar(30)  NOT NULL');
          try
              ExecSQL;
              Transaction.Commit;
              Edit1.Text:='P1.........ok';
              except on E:exception do
                                      begin showmessage('marche pas');
                                            Transaction.Rollback;
                                      end;
         end;
    end;
    IBDatabase1.connected:=false;
end;
Quand j'exécute, tout ce passe bien, ma table est bien modifié, mais quand je veux fermer mon application j'ai un message d'erreur: 'Erreur ElistERROR, indice de liste hors limite (0)'

J'ai lu que ce type d'erreur se produisait quand on faisait des requetes en utilisant les parameters, ce qui n'ait pas mon cas.
Le plus curieux dans cette histoire c'est que la commande SQL est exécutée....

Voila merci d'avance pour vos lumières sur ce problème.
vince