Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [DELPHI] IBUpdateSQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    10

    [Delphi]IBUpdateSQL

    Dopo aver rinunciato alla dbe, mi sono buttata sui componenti InterBase del mio Delphi 5 e pian pianino li sto imparando.
    Ho un probelam però con il componente IBUpdateSQL in una form.
    Al momento in cui voglio eseguire la query scrivo il seguente codice:

    IBUpdateSQL1.ExecSQL(insert(Query));

    dove insert è il tipo di update e query è la mia stringa contenente l'insert into in linguaggio sql.
    Il problema è che l'insert richiede, oltre alla stringa contenente la query, altri due parametri, ma non capisco quali parametri siano. Ho provato a guardare nell'help, ma non sono indicati nel dettaglio questi tre parametri della insert....

    Sapete spiegarmeli (o indicarmi un manuale o un tutorial dove sono spiegati dettagliatamente)????

    Grazie grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Ciao,
    il componente IBUpdateSQL serve per poter essere associato ad un componente IBQuery, generalmente di sola lettura, per renderlo aggiornabile fornendo ad esso gli statement SQL necessari per rinfrescare i dati, inserirne di nuovi, modificare i dati esistenti o eliminarli.

    Devi utilizzare il suddetto componente IBQuery per eseguire statement SQL di inserimento diretto, oppure IBDataSet.

    Ti serve comunque un minimo di istruzione e documentazione per poterli utilizzare correttamente.

    Prova a dare un'occhiata a questa pagina (in lingua inglese) per cominciare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    10
    Grazie Alka del suggerimento....

    Ora sto infatti usando una IBQuery e sembra andare tutto bene, l'unica cosa è che all'interno della quesry mi da un errore:
    SQL code error -104
    unknow token RELEASE'
    dove release è il nome di uno dei miei campi......

    Ho pensato che fosse un errore di sintassi, ma ho controllato e ricontrollato la query, l'ho riscritta a mano e usando l'editor ma continua. La mia domanda è: che tipo di errori indica il codice 104?

    Grazie di nuovo

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da KayW
    Ora sto infatti usando una IBQuery e sembra andare tutto bene, l'unica cosa è che all'interno della quesry mi da un errore:
    SQL code error -104
    unknow token RELEASE'
    dove release è il nome di uno dei miei campi......
    Più che altro, non vorrei che RELEASE fosse in qualche modo una parola chiave.

    Magari, scrivi lo statement SQL che ti dà problemi...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    10
    Giusto, non ci avevo pensato. Infatti ho cambiato il nome al campo e adesso non mi da più errore su quel campo, mi da errore poi in un'altra riga.....

    Riga 3 char 39...
    questa è la query

    INSERT INTO CLIENTI (IDCLIENTE, RAGIONESOCIALE, INDIRIZZO,
    LOCALITA, CAP, PROV, SAP, NSERIE, SW, VERSIONE, TIPO,
    TEL, FAX, REFERENTI, PERCORSO) VALUES (:Edit4.Text, :Edit1.Text, :Edit2.Text, :Edit3.Text, :Edit5.Text, :Edit6.Text, :Edit7.Text, :Edit11.Text, :Sw.Text, :Edit10.Text, :Versione.Text, :Edit9.Text,
    :Edit13.Text, :Edit12.Text, :Edit8.Text)

    I limiti del forum mi sono andati a capo, quindi posso dire che il char 39 è la parentesi aperta dopo VALUES....

    A questo punto mi viene il dubbio di aver sbagliato i comandi sql.... Tu noti qualche errore?

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da KayW
    A questo punto mi viene il dubbio di aver sbagliato i comandi sql.... Tu noti qualche errore?
    Sì, hai utilizzato nomi invalidi per i parametri (Edit1.Text e così via): il punto non è sicuramente tollerato.

    Inoltre, spero che tu non voglia indicare in questo modo a Delphi di introdurre automaticamente nello statement il contenuto delle proprietà che hai indicato nello statement SQL, poichè quello statement è una stringa che viene inviata così come al server il quale non ha idea di cosa sia Edit1 né conosce variabili o valori nel contesto dell'applicazione Delphi.

    Se usi i parametri con la notazione :IDENTIFICATORE, in tal caso devi valorizzarli (usando ParamsByName e definendo il valore) uno per uno.

    Un esempio per chiarire:
    codice:
    IBQuery1.SQL.Text := 'SELECT FROM Tabella WHERE CAMPO = :PARAMETRO';
    IBQuery.ParamByName('PARAMETRO').AsString := Edit1.Text;
    IBQuery.Open;
    L'alternativa è quella di concatenare nella stringa SQL i valori stringa prelevati dai controlli visuali, ma è un metodo molto meno sicuro del precedente poichè nelle caselle di testo è possibile inserire di tutto e il sistema viene pertanto esposto a facili errori di parsing, vulnerabilità a "SQL injection" e così via.

    Vedo che brancoli un po' nel buio in questo frangente... non conviene prima che tu legga documentazione cercando su Google, ad esempio? In caso contrario, credo che ti ritroverai spesso ferma o a risolvere situazioni ritenute strane poichè manca un "background" essenziale.
    Questa è comunque un'opinione del tutto personale.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    10
    In effetti brancolo un po' troppo nel buio. E' che con le nuove versioni di delphi utilizzano tutti gli ADO o la libreria dbExpress, quindi del manuale (on-line) più vecchiotto faccio + fatica a trovarlo. Ti ringrazio comunque dell'aiuto e soprattutto della pazienza....

    Ciao

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.