Autor Beitrag
pwsolaris
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71
Erhaltene Danke: 1

MS DOS, Win 95, Win 98, Win ME, Win XP, Win Vista, Win 7 Ultimate
Delphi 5 Enterp., Delphi 2007, Delphi 2009, Informix 4GL, VB .NET, MS/SQL, PL/SQL
BeitragVerfasst: Mo 28.03.11 15:52 
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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71
Erhaltene Danke: 1

MS DOS, Win 95, Win 98, Win ME, Win XP, Win Vista, Win 7 Ultimate
Delphi 5 Enterp., Delphi 2007, Delphi 2009, Informix 4GL, VB .NET, MS/SQL, PL/SQL
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 28.03.11 16:05 
Was ist denn ADO_Items?
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: 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