![]() |
Datenbank: MySQL • Zugriff über: TTable
Feld des Wertes Null (String)
Moin zusammen,
Ich habe ein Problem mit folgendem Quellcode
Delphi-Quellcode:
Die Letzten Felder können nur Null sein! dbFach is ne DatenBankComboBox. Ich hab nicht so viel Erfahrung mit Leeren DB-Feldern.
begin
dbFach.Items.Clear; dbFach.Items.Add(tabS2.FieldValues['lk1']); dbFach.Items.Add(tabS2.FieldValues['lk2']); dbFach.Items.Add(tabS2.FieldValues['gk1']); dbFach.Items.Add(tabS2.FieldValues['gk2']); dbFach.Items.Add(tabS2.FieldValues['gk3']); dbFach.Items.Add(tabS2.FieldValues['gk4']); dbFach.Items.Add(tabS2.FieldValues['gk5']); If (tabS.FieldValues['gk6'] <> '') OR (Not tabS.FieldValues['gk6'].IsNull) Then dbFach.Items.Add(tabS2.FieldValues['gk6']); If (tabS.FieldValues['gk7'] <> '') OR (Not tabS.FieldValues['gk7'].IsNull) Then dbFach.Items.Add(tabS2.FieldValues['gk7']); If (tabS.FieldValues['gk8'] <> '') OR (Not tabS.FieldValues['gk8'].IsNull) Then dbFach.Items.Add(tabS2.FieldValues['gk8']); If (tabS.FieldValues['gk9'] <> '') OR (Not tabS.FieldValues['gk9'].IsNull) Then dbFach.Items.Add(tabS2.FieldValues['gk9']); end; Sieht jemand den Fehler? Danke im Vorraus für Antworten! |
Re: Feld des Wertes Null (String)
Zitat:
|
Re: Feld des Wertes Null (String)
Der Fehler
Meldung : "Ungültige Variant-Opperation" Tritt auf, wenn ich einen Datensatz anwähle, der leere Felder besitzt (gk8, gk9). Der Quelltext füllt eine Combobox mir den Werten der Felder in so fern die nicht leer sind. Wenn man einen Datensatz auswählt, dann wird die table refresht, und der Quellcode dabei mit ausgeführt (AfterRefresh). |
Re: Feld des Wertes Null (String)
hallo Moin,
Du verwendest zwei Tabellen
Delphi-Quellcode:
tabS und tabS2. Bei der Anfügeoperation würde ich auch auf IsNull testen.
If (tabS.FieldValues['gk8'] <> '') OR (Not tabS.FieldValues['gk8'].IsNull)
Then dbFach.Items.Add(tabS2.FieldValues['gk8']);
Delphi-Quellcode:
If (tabS.FieldValues['gk8'] <> '') OR (Not tabS.FieldValues['gk8'].IsNull)
If (Not tabS2.FieldValues['gk8'].IsNull)Then //Nur anfügen, wenn nicht Null Then dbFach.Items.Add(tabS2.FieldValues['gk8']); mfg BrunoT |
Re: Feld des Wertes Null (String)
Moin Moin, :mrgreen:
das hat nix mit der Datenbank zu tun, sondern damit, dass du versuchst, mit dem Ausdruck
Delphi-Quellcode:
einen Variant, der Null sein kann, mit einem String zu vergleichen, und dann scheppert's!
if tabS.FieldValues['gk8'] <> '')
Besser wäre es so (Delphi überprüft standardmäßig boolsche Ausdrücke von links nach rechts und bricht ab, wenn er eindeutig ist):
Delphi-Quellcode:
Somit, wird erst überprüft, ob das Feld Null ist. Wenn dies nicht so ist, wird überprüft, ob der String nicht leer ist.
begin
dbFach.Items.Clear; dbFach.Items.Add(tabS2.FieldValues['lk1']); dbFach.Items.Add(tabS2.FieldValues['lk2']); dbFach.Items.Add(tabS2.FieldValues['gk1']); dbFach.Items.Add(tabS2.FieldValues['gk2']); dbFach.Items.Add(tabS2.FieldValues['gk3']); dbFach.Items.Add(tabS2.FieldValues['gk4']); dbFach.Items.Add(tabS2.FieldValues['gk5']); if not tabS.FieldValues['gk6'].IsNull and (tabS.FieldValues['gk6'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk6']); if not tabS.FieldValues['gk7'].IsNull and (tabS.FieldValues['gk7'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk7']); if not tabS.FieldValues['gk8'].IsNull and (tabS.FieldValues['gk8'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk8']); if not tabS.FieldValues['gk9'].IsNull and (tabS.FieldValues['gk9'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk9']); end; MfG Stevie |
Re: Feld des Wertes Null (String)
Hi nochmal,
Der Quelltext sieht jetzt so aus:
Delphi-Quellcode:
Ich hatte mich verschrieben, Der Quelltext soll nur auf eine Tabelle zugreifen -> tabS2
begin
dbFach.Items.Clear; dbFach.Items.Add(tabS2.FieldValues['lk1']); dbFach.Items.Add(tabS2.FieldValues['lk2']); dbFach.Items.Add(tabS2.FieldValues['gk1']); dbFach.Items.Add(tabS2.FieldValues['gk2']); dbFach.Items.Add(tabS2.FieldValues['gk3']); dbFach.Items.Add(tabS2.FieldValues['gk4']); dbFach.Items.Add(tabS2.FieldValues['gk5']); if not tabS2.FieldValues['gk6'].IsNull and (tabS2.FieldValues['gk6'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk6']); if not tabS2.FieldValues['gk7'].IsNull and (tabS2.FieldValues['gk7'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk7']); if not tabS2.FieldValues['gk8'].IsNull and (tabS2.FieldValues['gk8'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk8']); if not tabS2.FieldValues['gk9'].IsNull and (tabS2.FieldValues['gk9'] <> '') then dbFach.Items.Add(tabS2.FieldValues['gk9']); end; Und die Bedingungen müssen natürlich mit AND verknüpft werden... Aber es geht immer noch nicht |
Re: Feld des Wertes Null (String)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab das gefühl, dass
Delphi-Quellcode:
einfach nicht funzt.
tabS2.FieldValues['gk6'].IsNull
Denn auch, wenn alle Felder ausgefüllt sind, tritt der Fehler auf siehe fehler... (anhang) |
Re: Feld des Wertes Null (String)
Sind alle Felder vom Typ String, dann geht auch das hier - Tippfehler vorbehalten:
Delphi-Quellcode:
Grüße vom marabu
var
i: integer; f: TField; begin // iAnfang und iEnde bitte passend wählen for i := iAnfang to iEnde do begin f := tabS2.Fields[i]; if f.AsString <> '' then dbFach.Items.Add(f.AsString); end; end; |
Re: Feld des Wertes Null (String)
Dass is natürlich auch ne Möglichkeit ...
Es funzt jetzt super... Du hast nur
Delphi-Quellcode:
vergessen!
dbFach.Items.Clear;
Aber Danke, du hast mir sehr geholfen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz