![]() |
Datenbank: dBase • Version: 4 • Zugriff über: keine Ahnung
EVariantError! - Kann mir mal ganz schnell einer helfen???
Delphi-Quellcode:
Ich bekomm immer nen EVariantError in den Locate Zeilen. Konvertierung von Variant ungültig...
procedure Tdatasearch.Button1Click(Sender: TObject);
var s1, s2: String; begin s1 := Edit1.Text; s2 := Edit2.Text; if CheckBox1.Checked = true then begin if CheckBox2.Checked = true then begin if DataModule4.Tabelle.Locate('ART_NAME;ART_NUM', VarArrayOf([s1, s2]), [loPartialKey]) then begin send; end else begin MessageDlg('Nicht gefunden!!!', mtError, [mbOK], 0); end; end else begin if DataModule4.Tabelle.Locate('ART_NAME', s1, [loPartialKey]) then begin send; end else begin MessageDlg('Nicht gefunden!!!', mtError, [mbOK], 0); end; end; end else begin if Checkbox2.Checked = true then begin if DataModule4.Tabelle.Locate('ART_NUM', s2, [loPartialKey]) then begin send; end else begin MessageDlg('Nicht gefunden!!!', mtError, [mbOK], 0); end; end else begin MessageDlg('Keine Suchoption gewählt!!!', mtError, [mbOK], 0); end; end; end; WHY???? Mfg EDE |
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Hi,
dein Fehler scheint D3 spezifisch zu sein. Bei mir unter D7 funktioniert das ausgezeichnet mit verschiedenen Feldtypen und -Kombinationen. Grüße vom marabu |
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
:( Was sagt uns das mal wieder... Kauft eure Software neu... Aber danke trotzdem.
|
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Kompilier dein Projekt mal mit den Debug-dcus, dann kannst du besser sehen, an welcher Stelle der Fehler entsteht.
|
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Das Feld ART_NUM wird wohl ein numerisches Feld sein.
Du gibst bei Locate aber einen String ein. Normalerweise ist dies zulässig; die VCL wandelt intern von String nach Integer. Sollte die Variable s2 allerdings nicht umgewandelt werden, kommt es zu einem Fehler. Besser so:
Delphi-Quellcode:
procedure Tdatasearch.Button1Click(Sender: TObject);
var s1: String; artnum : integer; begin s1 := Edit1.Text; try artnum := StrToInt(Edit2.Text); except on E:Exception do begin Edit2.Setfocus; // Focus auf fehlerhaftes Feld // aussagekräftige Fehlermeldung bilden // und zwar ohne die orginale Message zu zerstören E.Message := 'Artikelnummer ist falsch'#13#10+E.Message; raise; end; end; if CheckBox1.Checked = true then begin if CheckBox2.Checked = true then begin if DataModule4.Tabelle.Locate('ART_NAME;ART_NUM', VarArrayOf([s1, artnum]), [loPartialKey]) then |
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Ne ArtNum ist String Denn in Artikelnummern kann au mal ein Buchstabe sei. Aber sonst ist in D3 keine andere Möglichkeit???? :shock:
|
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Zitat:
|
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
Zitat:
mfG mirage228 |
Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
So hab den Fehler Weiterverfolgt und herausgefunden dass die Prozedur send das Prob macht! :wall:
Also jetzt geht alles! Danke! Mfg EDE |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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