AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Query lookup will nich wie ich...?

Query lookup will nich wie ich...?

Ein Thema von barnti · begonnen am 11. Nov 2003 · letzter Beitrag vom 12. Nov 2003
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Query lookup will nich wie ich...?

  Alt 11. Nov 2003, 10:19
Hi,

habe ein Problem mit dem Finden eines Datensatzes durch den Aufruf von query.Lookup.
Dazu folgendes:
Delphi-Quellcode:

Function1(nummer: String):string;
begin

while PartieNummerExistiert(IntToStr(Nummer)) do
        begin
          Nummer:= Nummer +1;
        end;
      result:= IntToStr(nummer);
end;
Funktion1 soll eine Nummer zurückgeben, wenn diese nicht existiert. Andernfalls wird die nummer inkrementiert, bis diese nicht gefunden wird.

Delphi-Quellcode:

Function PartieNummerExistiert(Nummer: String):boolean;
var V: Variant;
begin
  Query_Partie_ID.Open; //Spalte //Wert //Rückgabewert
  V := Query_Partie_ID.Lookup('Partie_ID', VarArrayOf([nummer]), 'Partie_ID');
  result:= not(VarType(V) in [varNull]);
  Query_Partie_ID.Close;
end;
Die Funktion gibt zurück, ob die übergebene Nummer in der Tabelle vorkommt.

Mein Problem:

In der Tabelle sind 4 Einträge wobei die Partienummer von 5 bis 8 vorhanden ist. Wird Funktion1 mit dem Wert "5" aufgerufen, wird dieser gefunden und "nummer" inkrementiert. Wird die Funktion "PartieNummerExistiert" mit dem Wert "6" aufgerufen, so wird dierser nicht gefunden, was aber der Fall sein sollte...!?

Wo ist der Fehler? Liegt es irgentwie an dem Open, Close in "PartieNummerExistiert" ? Kann mir jemand einen Tip geben?

Danke & Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Query lookup will nich wie ich...?

  Alt 11. Nov 2003, 11:18
Hallo noch einmal,

was weiterhin verwundert ist, dass ich die Funktion "PartieNummerExistiert" in einem anderen Zusammenhang aufrufe, dort aber alles reibungslos funktioniert?!

Danke für Antwort,

Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Query lookup will nich wie ich...?

  Alt 12. Nov 2003, 07:04
Hallo,

ich habe mal eine Funktion, die das lookup nachempfindet selber gecoded. Wenn ich diese Funktion benutze besteht das Problem nicht mehr...

Hat jemand einen Tip warum die von Delphi zur Verfügung gestellte Funktion "lookup" nicht funktioniert?

Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Query lookup will nich wie ich...?

  Alt 12. Nov 2003, 07:20
Hallo Barnti,

das ist zwar nur ein Schuss ins Blaue von mir, aber bist Du sicher dass
Zitat von barnti:
Delphi-Quellcode:
Function1(nummer: String):string;
begin

while PartieNummerExistiert(IntToStr(Nummer)) do
        begin
          Nummer:= Nummer +1;
        end;
      result:= IntToStr(nummer);
end;
funktioniert?
nummer:String -- Nummer:= Nummer+1 (Du versuchst einen String zu inkrementien)
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Query lookup will nich wie ich...?

  Alt 12. Nov 2003, 07:33
Sorry, mein Fehler! Danke für den Hinweis!

Die Funktion lautet natürlich:

Delphi-Quellcode:

function FindePartieID(Nummer: Integer): String;
begin
  try
    DMPartie.poolQuery.First;
    result:= poolQuery.FieldByName('Partie_Pool_ID').AsString;
    PoolQuery.Delete;
  except // sonst wird die nächst größere Nummer in der Partietabelle gesucht
          // und als neue Partie_ID vergeben, wenn diese nicht gefunden wird.
    begin
      while PartieNRExistiert(IntToStr(Nummer)) do
        begin
          Nummer:= Nummer +1;
        end;
      result:= IntToStr(nummer);
    end;
  end;
end;
So siehts aus! Trotzdem das selbe Problem!

Vielleicht noch eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Query lookup will nich wie ich...?

  Alt 12. Nov 2003, 11:54
Hallo barnti,
ich verstehe Dein Konstrukt noch nicht ganz,
aber ein TRY/Except-Block ist ein Resourcen-Schutz Block, dass heisst, nur wenn
innerhalb von Try-Except ein Fehler auftritt, werden die Anweisungen nach dem Except
ausgeführt.

Try/Except-Blöcke sollten nicht statt Abfrage-Operationen benutzt werden,
sondern nur Ausnahmen/Fehler behandeln.

Delphi-Quellcode:
...
    DMPartie.poolQuery.First;
    result:= poolQuery.FieldByName('Partie_Pool_ID').AsString;
...
Hier bekommst Du als Resultat *immer* nur den ersten Satz von
'Partie_Pool_ID' zurück, möchtest Du das?


P.S.
Ich bin mir nicht sicher, ob ich alles verstanden habe, vielleicht zeigst Du noch mehr von Deinem Code.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Query lookup will nich wie ich...?

  Alt 12. Nov 2003, 13:18
hallo APP,

Zitat:

ich verstehe Dein Konstrukt noch nicht ganz,
aber ein TRY/Except-Block ist ein Resourcen-Schutz Block, dass heisst, nur wenn
innerhalb von Try-Except ein Fehler auftritt, werden die Anweisungen nach dem Except
ausgeführt.
Genau, das soll auch passieren: Wenn es in Partie_Pool einen Eintrag gibt, wird dieser als Ergebnis zurückgeliefert und der Eintrag anschließend gelöscht. Ist die Tabelle leer wird durch das "delete" ein Fehler ausgelöst. Dann wird die Partienummer im "except" ermittelt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz