Ho scaricato e installato MySQL Connector 5.1 x64 così posso usare MySQL con Delphi. Posso stabilire una connessione con ODBC e fare una connessione dal mio ambiente Delphi e da MySQL Workbench.Ottenere l'eccezione "Gli argomenti sono del tipo errato ..." solo assegnando il testo della query
Ma, quando ho costruire il mio query in fase di esecuzione, ottengo un errore che dice:
Progetto AAA.exe sollevato classe di eccezione EOleException con argomenti di messaggio' sono del tipo errato, sono fuori intervallo accettabile, o sono in conflitto tra loro ". Processo fermato. Usa Step o Esegui per continuare.
Il mio codice:
qDates := TADOQuery.Create(Component);
qDates.Connection := FConnection;
qDates.SQL.Text :=
'select ' +
' * ' +
'from ' +
' resulttable ' +
'where ' +
' oid = :oid ' +
' and datedial >= :datebegin and datedial <= :dateend'; // <<-- Exception here
Dettagli:
L'eccezione accade proprio sulla assegnazione di testo, prima di avere la possibilità di configurare i parametri.
Se commento la clausola where
, l'assegnazione va bene.
Questo è simile a Using parameters with ADO Query (mysql/MyConnector) ma la differenza è che assegno tutto il testo in una volta e ottengo l'eccezione prima che abbia la possibilità di configurare i parametri.
La parte sconcertante - lo stesso codice funziona perfettamente con l'altra macchina, ma non riesco a capire cosa sia diverso.
Quindi la domanda: cosa potrebbe causare l'eccezione sopra al codice Delphi e al server MySQL?
* Non riesco a capire ciò che è diverso * Che dire di stringhe di connessione? Non differiscono in qualcosa relativo ai parametri? – TLama
Le stringhe di connessione sono esattamente le stesse (e anche il codice sorgente è esattamente lo stesso). L'unica grande differenza è OS - WinXPSP3x86 vs Win7x64 – Kromster
Non riesco a riprodurlo sul PC accanto al mio! xD Quindi la domanda. Non un duplicato perché l'eccezione si verifica prima che 'Parameters' e SQL query siano impostati in una volta. – Kromster