var Criteria: TCriteria<TTBLXLSImport>; begin Criteria := mgrManager.Find<TTBLXLSImport>; Criteria.Add((Linq['LebensmittelCD'] = '') or Linq.IsNull('LebensmittelCD') ); Data:=Criteria.List;
results in
Error -1: [Microsoft][ODBC SQL Server Driver]Ung?ltiger Genauigkeitswert.
If I Change the blank
Criteria.Add((Linq['LebensmittelCD'] = '5') or Linq.IsNull('LebensmittelCD') );
RezeptSchnittst c44-254 ENTER SQLPrepareW HSTMT 0x048D7B80 WCHAR * 0x03ABFBBC [ 142] "SELECT t.name as TABLE_NAME, SCHEMA_NAME(t.schema_id) as TABLE_SCHEMA FROM sys.tables t WHERE t.is_ms_shipped = 0 ORDER BY t.schema_id, t.name" SDWORD 142
...
This is where the error occurs:
RezeptSchnittst c44-254 ENTER SQLPrepareW HSTMT 0x049004D0 WCHAR * 0x070AB46C [ 308] "SELECT A.ID AS A_ID, A.IDExtern AS A_IDExtern, A.BezeichnungExtern AS A_BezeichnungExtern, A.HerkunftCD AS A_HerkunftCD, A.LebensmittelCD AS A_LebensmittelCD, A.Bezeichnung AS A_Bezeichnung\ d\ aFROM TBLXLSImport A\ d\ aWHERE A.BezeichnungExtern LIKE ? AND \ d\ a(A.LebensmittelCD Is Not Null And A.LebensmittelCD <> ?)" SDWORD 308
RezeptSchnittst c44-254 EXIT SQLPrepareW with return code 0 (SQL_SUCCESS) HSTMT 0x049004D0 WCHAR * 0x070AB46C [ 308] "SELECT A.ID AS A_ID, A.IDExtern AS A_IDExtern, A.BezeichnungExtern AS A_BezeichnungExtern, A.HerkunftCD AS A_HerkunftCD, A.LebensmittelCD AS A_LebensmittelCD, A.Bezeichnung AS A_Bezeichnung\ d\ aFROM TBLXLSImport A\ d\ aWHERE A.BezeichnungExtern LIKE ? AND \ d\ a(A.LebensmittelCD Is Not Null And A.LebensmittelCD <> ?)" SDWORD 308
I then installed the MSSQL 2012 Native Driver and the problem did not occur. So it seems as if the ODBC driver has a problem with empty parameters. I recall having theis problem already when I inserted data in the DB.
So the solution is: Do not use the default ODBC driver, but install sqlncli.msi.
Ok, thank you. Indeed you were using a very old ODBC driver. You don't necessarily need to use native driver, you can still use ODBC, but you need a more recent version.