PDA

Visualizza la versione completa : [delphi] Insert record tramite IbQuery


123delphi321
15-10-2004, 01:03
ciao a tutti,

volevo eseguire questo comando all'interno di una procedura delphi.

attualmente eseguo questi comandi utilizzando 'Script Executive' di IbExpert e funziona tutto bene.


INSERT INTO banca (CODICE,NOME) VALUES ('001','banca cc 001');
INSERT INTO banca (CODICE,NOME) VALUES ('002','banca cc 002');
INSERT INTO banca (CODICE,NOME) VALUES ('003','banca cc 003');
INSERT INTO banca (CODICE,NOME) VALUES ('004','banca cc 004');
INSERT INTO banca (CODICE,NOME) VALUES ('005','banca cc 005');
INSERT INTO banca (CODICE,NOME) VALUES ('006','banca cc 006');
INSERT INTO banca (CODICE,NOME) VALUES ('007','banca cc 007');
INSERT INTO banca (CODICE,NOME) VALUES ('008','banca cc 008');

aggiungo alla IbTable 8 records. ripeto tranmite IbExpert e' ok!


l'ho provato a scrivere in delphi:


IBQuery1.Close ;
IBQuery1.SQL.Clear;
IBQuery1.SQL.add('INSERT INTO banca (CODICE,NOME) VALUES (''001'',''banca cc 001'');');
IBQuery1.SQL.add('INSERT INTO banca (CODICE,NOME) VALUES (''002'',''banca cc 002'');');
IBQuery1.ExecSQL ;

nel momento che esegue la query mi restituisce errore sql error code=-104
Token unknown - line2, char 1
INSERT'

credo di sbagliare qualcosa nel racchiudere i comandi tra le virgolette..... ho fatto varie prove senza riuscire a risolvere

grazie

AlbertoPicca
15-10-2004, 07:34
Prova a passare i valori come Parametri.
Presumo che l'errore si trovi quando passi il valore del codice, essendo di tipo Integer (...presumo) non puoi indicarlo come hai fatto tu : ''000''

Ciao :ciauz:

123delphi321
15-10-2004, 09:21
non e' un valore integer, bensė un valore char


CREATE TABLE BANCA(
CODICE VARCHAR(3) NOT NULL UNIQUE,
NOME VARCHAR(15));


il fatto e' che se inserisco 1 solo record funziona correttamente....
va in errore quando cerco di inserire il secondo record.


IBQuery1.Close ;
IBQuery1.SQL.Clear;
IBQuery1.SQL.add('INSERT INTO banca (CODICE,NOME) VALUES (''001'',''banca cc 001'')');
IBQuery1.ExecSQL ;

quindi io presumo che il problema sia tutto sull'inserimento del ';' puinto e virgola a fine rigo

grazie

alka
15-10-2004, 09:50
Originariamente inviato da 123delphi321
credo di sbagliare qualcosa nel racchiudere i comandi tra le virgolette... ho fatto varie prove senza riuscire a risolvere
Il problema č che non puoi inserire pių di uno statement SQL all'interno del componente IBQuery.

Supponi di inserire due SELECT differenti: quale recordset dovrebbe restituirti Delphi?

Solo uno statement alla volta, pertanto inserisci il primo, chiama ExecSQL, sostituisci il primo con il secondo e chiama nuovamente ExecSQL.

Ciao! :ciauz:

Loading