Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: sergio - Marzo 04, 2012, 01:59:36 am

Titolo: Aiuto errore Mysql
Inserito da: sergio - Marzo 04, 2012, 01:59:36 am
Scusate , mi stò accingendo ora all'utilizzo di MySQL , ma ho un problema . inserendo questa riga di codice  durante l'esecuzione del programma mi da un errore . La riga di codice è :
  SQLQuery1.SQL.Text:= 'SELECT * FROM articoli WHERE precodice.='+ComboBox1.Text+'AND codice = '+Edit1.Text ;.
L'errore è : You have an error in your SQL syntax , check the manual that corrresponds to your MySQL server version for the right syntax to use near 'codice = 13 ' at line 1 .
Faccio presente che mi vede il contenuto di Edit1.Text che è 13 , ma non capisco dove sbaglio. Io utilizzo MySQL 5.0 .Grazie a chiunque voglia darmi una mano a capire dove sbaglio .
Titolo: Re:Aiuto errore Mysql
Inserito da: Legolas - Marzo 04, 2012, 02:35:01 pm
Dalla query sembra che manchi uno spazio tra l'apice e AND.

Codice: [Seleziona]
 SQLQuery1.SQL.Text := 'SELECT * FROM articoli WHERE precodice =' + ComboBox1.Text + 
                                      ' AND codice = ' + Edit1.Text;
//                        qui sopra:  ^^^

EDIT: ho dovuto spezzare la riga, altrimenti non posizionava bene il commento ^^;
Titolo: Re:Aiuto errore Mysql
Inserito da: xinyiman - Marzo 04, 2012, 06:12:30 pm
dipende se le variabili che passi sono di tipo stringa, tipo i varchar, in tal caso devi scrivere così

SQLQuery1.SQL.Text := 'SELECT * FROM articoli WHERE precodice =''' + ComboBox1.Text +
                                      ''' AND codice = ''' + Edit1.Text + ''';';

Titolo: Re:Aiuto errore Mysql
Inserito da: sergio - Marzo 04, 2012, 06:47:30 pm
Grazie  Xinyiman , come hai detto tu funziona , infatti è un parametro Varchar che devo passare. Mi potresti dire dove posso trovare la sintassi corretta per MySQL  , per Lazarus si intende , se c'è qualche documentazione , o se puoi spiegarmi tu perchè bisogna mettrere tutti quegli apici . Grazie mille
Titolo: Re:Aiuto errore Mysql
Inserito da: sergio - Marzo 04, 2012, 06:50:27 pm
grazie a tutti ! Tutti gli aiuti sono molto ben accetti
Titolo: Re:Aiuto errore Mysql
Inserito da: xinyiman - Marzo 05, 2012, 08:14:47 am
E' a causa della sintassi del SQL. I valori varchar devono essere compresi tra apici e siccome free pascal usa anche gli apici per interpretare le stringhe, ad esempio 'Hello world' è una stringa, allora capirai che per far capire che all'interno di una stringa esiste un apice bisogna usarne 2 di fila più un terzo se subito dopo devi chiudere la stringa per passargli un qualche parametro. E' più chiaro adesso?! Consiglio sempre di usare StringReplace(NomeVariabile,'''','''''', [rfReplaceAll]) per passare una variabile di tipo varchar alla SQLString perchè così eviti che se nel parametro esiste qualche apice il software vada in errore.
Titolo: Re:Aiuto errore Mysql
Inserito da: sergio - Marzo 05, 2012, 01:08:40 pm
Grazie per l'aiuto , sei stato molto chiaro. Scusa se approfitto della tua esperienza , ma sai a passare dal Borland c++builder con l'utilizzo dei DBF a Lazarus e con l'uso di Mysql (che non avevo mai utilizzato)  ho alcune difficolta' . Grazie a tutti
Titolo: Re:Aiuto errore Mysql
Inserito da: xinyiman - Marzo 05, 2012, 01:27:40 pm
Figurati, per così poco!

 ;)