28. Oktober 2005 08:38
Hallo,
ich versuche via Automation Daten aus Access einzulesen.
Das klappt auch wunderbar. Wenn jedoch ein leeres Feld in der Acces Datenbank vorkommt, bekomme ich eine Fehlermeldung:
"Dieser Datentyp wir von C/SIDE nicht unterstützt. Sie haben Zugriff auf Daten der folgenden..."
Folgenden Code habe ich verwendtet:
- Code:
ODBC System-DSN
ODBC DSN='TST'
Quell-DB
MS Access Database 'task.mdb'
MS Access Database Table 'Groups'
Table Field 'GroupID'
VAR:
OBJdbConnection Automation('Microsoft ActiveX Data Objects 2.6 Library'.Connection);
RSGroups Automation('Microsoft ActiveX Data Objects 2.6 Library'.Recordset);
Code:
CREATE(ODBCdbConnection);
ODBCdbConnection.Open('TST','Admin','');
CREATE(RSGroups);
open := 3;
RSGroups.Open('Groups', ODBCdbConnection);
RSGroups.MoveFirst;
IF NOT RSGroups.EOF THEN
REPEAT
MESSAGE('%1', RSGroups.Fields().Item('Name').Value);
RSGroups.MoveNext;
UNTIL RSGroups.EOF;
RSGroups.Close;
ODBCdbConnection.Close;
CLEAR(ODBCdbConnection);
CLEAR(RSGroups);
// Quelle: mibuso.com
Das ich das leere ('NULL') Feld abfangen muss ist klar, nur wie?
Ein IF (RSGroups.Fields().Item('Name').Value = '') THEN ...
Funktioniert nicht!
Gruß Mikka
28. Oktober 2005 11:02
Du kannst ja an die Automation auch ein SQL-Statement übergeben. In diesem Statement könntest du die Abfrage so gestalten, dass erst gar keine Null-Werte als Ergebnis auftauchen.
28. Oktober 2005 13:40
Ja, danke, das Funktioniert. Ich hatte es gestern Abend schon mal probiert und bin verzweifelt. Neuer Tag neues Glück!
Null ist ja nicht '' (sprich zwei Hochkomma) in SQL sondern NULL. (In manchen DB´s bzw. Programiersprachen auch NIL)
Also für alle zum mitschreiben, so ist es richtig:
ADOrs.Open('Select Name,Street from T1 WHERE Name IS NOT NULL',ADOConn,OpenMethod,LockMethod);
So ist es falsch:
ADOrs.Open('Select Name,Street from T1 WHERE Name <>'' ', ADOConn,OpenMethod,LockMethod);
Gruß Mikka
28. Oktober 2005 13:44
Mein erstes gelöstes Problem *schnüff* das ich das noch erleben darf...