Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi EVariantError! - Kann mir mal ganz schnell einer helfen??? (https://www.delphipraxis.net/53537-evarianterror-kann-mir-mal-ganz-schnell-einer-helfen.html)

EDatabaseError 18. Sep 2005 19:42

Datenbank: dBase • Version: 4 • Zugriff über: keine Ahnung

EVariantError! - Kann mir mal ganz schnell einer helfen???
 
Delphi-Quellcode:
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;
Ich bekomm immer nen EVariantError in den Locate Zeilen. Konvertierung von Variant ungültig...

WHY????


Mfg

EDE

marabu 18. Sep 2005 20:15

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

EDatabaseError 18. Sep 2005 20:30

Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
 
:( Was sagt uns das mal wieder... Kauft eure Software neu... Aber danke trotzdem.

Stevie 19. Sep 2005 10:40

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.

shmia 19. Sep 2005 10:55

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

EDatabaseError 19. Sep 2005 16:17

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:

EDatabaseError 19. Sep 2005 16:18

Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
 
Zitat:

Zitat von Stevie
Kompilier dein Projekt mal mit den Debug-dcus, dann kannst du besser sehen, an welcher Stelle der Fehler entsteht.

Was für Tool???

mirage228 19. Sep 2005 16:22

Re: EVariantError! - Kann mir mal ganz schnell einer helfen?
 
Zitat:

Zitat von EDatabaseError
Zitat:

Zitat von Stevie
Kompilier dein Projekt mal mit den Debug-dcus, dann kannst du besser sehen, an welcher Stelle der Fehler entsteht.

Was für Tool???

Projekt -> Optionen -> Compiler -> Debug DCU [Haken machen]

mfG
mirage228

EDatabaseError 19. Sep 2005 17:43

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