Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Exception bei Locate (https://www.delphipraxis.net/128300-exception-bei-locate.html)

Moony 27. Jan 2009 16:00

Datenbank: Access • Zugriff über: TADOConnection

Exception bei Locate
 
Hallo zusammen,

habe versucht bei mir eine lokalisierung eines Datensatzes durchzuführen, was normalerweise kein Problem ist, aber irgendie wehrt sich meine Anwendung dagegen.
  • Meine Tabelle ist geöffnet und in mein Grid geladen.
  • Das Grid ist auf ReadOnly = true gesetzt.
  • Die Spaltennamen sind unterschiedlich zu den tatsächlichen Spaltennamen in der Tabelle, was kein Problem ist, weil ich den richtigen Namen ermittel

Nun zu der eigentlichen Routine:
Beim Ereignis OnKeyPress vom TDBGrid reagiere ich auf gültige Zeichen. Dort ermittle ich den richtigen Spaltennamen und rufe dann Locate auf mit meiner Spalte als Key, meinen Character als Value und beide Optionen ([loCaseInsensitive, loPartialKey]) gesetzt.

Hier kommt nu eine Exception dass die Argumente vom falschen Typ sind, außerhalb des Gültigkeitsbereiches liegen oder nicht miteinander vereinbar sind.

Was läuft da falsch?

Gruß, Moony

nahpets 27. Jan 2009 16:08

Re: Exception bei Locate
 
Hallo,

zeig' uns bitte mal die entsprechende Routine, so ist das doch etwas zu abstrakt.

Moony 28. Jan 2009 07:21

Re: Exception bei Locate
 
Delphi-Quellcode:
  if TB1.Active then
  begin
    if (Key in ['a'..'z', 'A'..'Z']) then
      if TB1.FieldList.IndexOf(SelectedCol) <> -1 then // SelectCol wird gesetzt beim TitleClick
   TB1.Locate(SelectedCol, Key, [loCaseInsensitive, loPartialKey]);
  end;

hoika 28. Jan 2009 08:00

Re: Exception bei Locate
 
Hallo,

Breakpoint auf die Locate-Zeile und nachschauen,
was in SelectedCol steht.

Falls dort alles OK ist,
setz mal vorher DataSource des DBGrids auf NIL
und weise es nachher wieder zu.


Heiko

Moony 28. Jan 2009 08:08

Re: Exception bei Locate
 
SelectCol ist vollkommen in Ordnung und das setzen des DataSource bringt nichts. Immer noch die gleiche Meldung.

nahpets 28. Jan 2009 08:41

Re: Exception bei Locate
 
Hallo,

mach' in der Locate-Zeile mal aus dem Key einen String, weiß nicht, ob Char als Variant übergeben werden kann.

Moony 28. Jan 2009 08:44

Re: Exception bei Locate
 
Immer noch die gleiche Meldung.

nahpets 28. Jan 2009 09:13

Re: Exception bei Locate
 
Hallo,

dann versuch' es zuerst einmal mit einer "festen" Abfrage:

Delphi-Quellcode:
TB1.Locate('existierendenSpaltenNamen', 'A', [loCaseInsensitive, loPartialKey]);
Um herauszubekommen, was denn da eigentlich falsch ist/sein soll.
Und dann mal die einzelnen Kombinationen ausprobieren.
Variiere bitte auch mal die Kombinationen von [loCaseInsensitive, loPartialKey].
Ich möchte nicht ausschließen, dass Kombinationen, die aus Delphisicht korrekt sind, von einzelnen Datenbanken nicht verarbeitet werden können.

hoika 28. Jan 2009 09:16

Re: Exception bei Locate
 
Hallo,

und die Exception kommt ganz sicher genau bei "diesem" Locate.
Gehst du auch tatsächlich mit F8 weiter und bekommst die Exception ?

Nimm mal das temporär raus partial key.
Welche DB ?


Heiko

Moony 28. Jan 2009 09:30

Re: Exception bei Locate
 
Also...

@hoika: ja, ich gehe mit F8 weiter und genau in dieser locate zeile kommt die exception.

@nahpets: weder die statischen Werte noch unterschiedliche Kombinationen führen zu einem zufriedenstellenden Ergebnis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz