Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315

    [delphi] Insert record tramite IbQuery

    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.

    codice:
    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:

    codice:
    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

  2. #2
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    non e' un valore integer, bensì un valore char

    codice:
    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.

    codice:
    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

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Re: [delphi] Insert record tramite IbQuery

    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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.