ADO.NET --> Prüfen ob Feldwert ist NULL

25. Mai 2021 17:05

Hallo zusammen,
über ADO greife ich Werte aus einer MySQL-Datenbank ab und verarbeite diese unter bestimmten Bedingungen.
Wenn der Feldwert einer Bedingung jedoch NULL ist, dann "verabschiedet" sich der Code mit "Der Wert eines NULL-SQL-Datensatzes kann nicht zurückgegeben werden".

Code:
IF ADOMySQLDataPos.GetString('org_id') <>'' THEN BEGIN


Wenn also der Datenbankfeldwert von org_id NULL ist, dann wirft er obigen Fehler, weil das mit <>'' nicht abgefangen werden kann.
Ein Workaround wäre die SQL-Abfrage so zu ändern, dass NULL-Werte mit '0' ersetzt werden. Das ist aber zB bei Datumswerten oder sehr vielen Feldern dann alles andere als gut.
Gibt es also eine Möglichkeit im C/AL auf NULL zu prüfen?

Diese Methodik scheint nicht mehr möglich zu sein:
Code:
IF FORMAT(ADORecSet.Fields.Item(ItxtFieldName).ActualSize) = FORMAT(0) THEN // NULL-value


Vielen Dank.

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

25. Mai 2021 20:07

Hallo,

schon mal ISNULL(DotnetVarilable) probiert?

Gruß Fiddi

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

26. Mai 2021 09:19

Das habe ich natürlich gefunden, an der Implementierung aber gescheitert:

Code:
IF ISNULL(ADOMySQLDataPos.GetString('org_id')) THEN BEGIN
ELSE BEGIN


auch mit := TRUE usw ohne Erfolg. Liegt das an der "GetString"-Funktion?

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

26. Mai 2021 09:28

Hallo,

ich bin da im Moment nicht ganz drin, aber das könnte auch "DBNull.Value" und nicht "NULL" als Ergebnis sein.

Gruß Fiddi

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

26. Mai 2021 10:24

fliegt nicht bzw. ich checks nicht. :-(
Ich denke "GetString" kann mit NULL nicht umgehen.

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

26. Mai 2021 14:48

Hi,
was ist ADOMySQLDataPos für ein Datentyp? Ist das ein SQLDataReader? Es gibt im DataReader Funktionen zum überprüfen auf NULL, die man vorher aufrufen muss. (IsDBNull)

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

27. Mai 2021 08:02

Hallo,

ADOMySQLDataPos --> MySql.Data.MySqlClient.MySqlDataReader.'MySql.Data, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'
Datatype: DotNet

dem wäre also so....

Ein Datensatz wird immer gefunden, nur wenn ein Feld im Datensatz NULL ist und dieser Feldwert zB für eine Bedingung ausgelesen wird gehts leider nicht weiter.

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

27. Mai 2021 08:30

Schau doch mal: https://dev.mysql.com/doc/dev/connector-net/8.0/html/M_MySql_Data_MySqlClient_MySqlDataReader_IsDBNull.htm Wie ich sagte, gibt es eine Funktion zum Überprüfen auf einen NULL-Wert in der Spalte. Gib der Funktion den Spaltenindex (ich kenne den Spaltenindex deines Feldes org_id nicht und habe als Platzhalter die 1 genommen) zum überprüfen.
Beispiel:
Code:
IF NOT ADOMySQLDataPos.IsDBNull(1) THEN
    OrgId := ADOMySQLDataPos.GetString('org_id')
ELSE ...

Re: ADO.NET --> Prüfen ob Feldwert ist NULL

27. Mai 2021 12:33

Chapeau!
Saved my day.
Wenn man es weiß, dann is einfach. Funktioniert perfekt.

VIELEN DANK!