Entwickler-Ecke

Datenbanken - Typ-Konvertierung nach Integer schlägt fehl


pwsolaris - Mo 28.03.11 15:52
Titel: Typ-Konvertierung nach Integer schlägt fehl
Hallo,

ich habe folgendes Problem:

Aus einer Access-Datenbank möchte ich einen Integerwert ziehen über die Funktion "Lookup".
Ich habe einen String-Wert nach dem ich in der Tabelle suche. Zu diesem Eintrag gibt es einen Integerwert, den ich benötige.

Meine bisherige Vorgehensweise anhand meinen Codes:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  name    : String;
  art     : Integer;
begin
  name := lbox_items.Items[lbox_items.ItemIndex];

  with ADO_Items do
  begin
    art := Lookup('Name', name, 'Art');
  end;

  ShowMessage(name + ' ' + IntToStr(art));
end;


Jetzt bekomme ich immer folgende Fehlermeldung:
"Eine Variante des Typs (Null) konnte nich in den Typ (Integer) konvertiert werden"

Wenn ich den Code wie folgt benutze, bekomme ich eine korrekte Ausgabe meines gesuchten Wertes:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  name    : String;
  art     : Integer;
begin
  name := lbox_items.Items[lbox_items.ItemIndex];

  with ADO_Items do
  begin
    art := Lookup('Name''Test''Art');
  end;

  ShowMessage(name + ' ' + IntToStr(art));
end;


Ergebnis ist hier eine Messagebox mit dem Inhalt:
"Test 1"


Wo liegt denn hier nun mein Fehler? Irgendwie muss ich die Variable "name" ja noch weiter bearbeiten, damit er den Eintrag in meiner Tabelle findet.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 28.03.2011 um 16:59


jaenicke - Mo 28.03.11 16:01

Ich schätze einmal durch deine einfallsreiche Bezeichnung mit name in Verbindung mit with (Killercombo... :shock:) benutzt du schlicht das falsche name. Denn das ist ja eine Standardeigenschaft diverser Objekte...

Sonst schau doch einfach einmal was in der Zeile mit dem Lookup in name steht. Ich vermute das Falsche, so dass kein Ergebnis gefunden wird.


pwsolaris - Mo 28.03.11 16:03

Danke für die schnelle Antwort.

Die Variablenbezeichnung "name" nutze ich auch an anderen Stellen in gleicher Weise (auch mit der Lookup Funktion). Daran sollte es hoffentlich nicht scheitern.

Wenn ich Zeile für Zeile durchgehe steht in der Variable "name" schon etwas drinne. Sogar ein Wert, der auch zu 100% in der Tabelle vorkommt (nämlich "Test").


jaenicke - Mo 28.03.11 16:05

Was ist denn ADO_Items?


Lemmy - Mo 28.03.11 22:18

Hi,

user profile iconpwsolaris hat folgendes geschrieben Zum zitierten Posting springen:

Die Variablenbezeichnung "name" nutze ich auch an anderen Stellen in gleicher Weise (auch mit der Lookup Funktion). Daran sollte es hoffentlich nicht scheitern.


dann hast Du da halt Glück gehabt, dass der Compiler da zufällig den richtigen Wert nimmt. Die Fehlermeldung sagt eigentlich schon alles: Es wird "NULL" also nichts zurückgegeben. Das hat 2 Gründe: es wird unter dem Wert nichts gefunden oder der Integer für diesen Wert ist nicht gesetzt...

Grüße