AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi repeat - until abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

repeat - until abfrage

Ein Thema von Snyderburn · begonnen am 5. Nov 2003 · letzter Beitrag vom 10. Nov 2003
Antwort Antwort
Seite 1 von 3  1 23      
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#1

repeat - until abfrage

  Alt 5. Nov 2003, 13:34
Hi, ich habe ein kleines Problem mit einer Abfrage. Hier ist erstmal der Quellcode:
Delphi-Quellcode:
        dm1.T_anschrift.First;
        repeat
        if idzumbearbeiten = dm1.T_anschrift.fieldbyname('ID_anschrift').asinteger then
          begin
            ....
            bearbeitenzaehler := idzumbearbeiten;
          end
          else
          begin
            dm1.T_anschrift.Next;
            bearbeitenzaehler := bearbeitenzaehler + 1;
          end;
        until idzumbearbeiten = bearbeitenzaehler;
diese Schleife funktioniert fast ohne Probleme. Wenn der "dm1.T_anschrift.Next" zeiger auf dem 20. Datensatz zeigt dann kommt eben eine Fehlermeldung: Allgemeiner SQL Fehler!. Bis zum 20. Datensatz läuft es ohne Probleme. Auch die "Wahr" Abfrage funktioniert bis dahin. Naja, wie gesagt, ab dem 20. DS passiert nix mehr ausser die Fehlermeldung.
Woran kann das liegen?!?!

mfg
Snyderburn
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: repeat - until abfrage

  Alt 5. Nov 2003, 13:56
Hallo Snyderburn,

ich bin ziemlich sicher, dass du Next aufrufst, obwohl die EOF Bedingung schon True ist und das geht dann schief .
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#3

Re: repeat - until abfrage

  Alt 5. Nov 2003, 13:59
Es fehlt auf jeden Fall ein 'or EOF', könnte ja, daß die ID in der Tabelle nicht vorhanden ist.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#4

Re: repeat - until abfrage

  Alt 5. Nov 2003, 14:05
Ich habe da jetzt ein EOF bei der Until anweisung eingestellt, aber der Fehler kommt immer noch. Der Fehler ist nämlich bei der dm1.t_anschrift.NEXT anweisung und nicht beim Until.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: repeat - until abfrage

  Alt 5. Nov 2003, 14:49
Hallo Snyderburn,

falls die EOF Bedingung schon beim Eintritt in die Schleife True wäre, erzeugst du auch eine exception. Und dass die exception bei dem Aufruf von Next ausgelöst wird, spricht dafür, dass die EOF Bedingung Schuld ist.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#6

Re: repeat - until abfrage

  Alt 5. Nov 2003, 15:47
Für solche Fälle bevorzuge ich eine While-Scheife.

Delphi-Quellcode:
while (not dm1.T_anschrift.eof) and (idzumbearbeiten = bearbeitenzaehler) then
begin
  // ...
end;
Musste mal testen. So schießt man sich nicht so leicht in den Fuß!
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#7

Re: repeat - until abfrage

  Alt 6. Nov 2003, 07:42
Hi!

EOF hat meiner Meinung nach nichts mit dem Fehler zu tun. Ich habe nämlich in der Datenbank gute 100 Datensätze drin und nach dem 20 Datensatz spricht er eine Fehlermeldung aus. Er liest also nicht den 21. Datensatz!!!!!!
Ich habe es auch mit der while schleife gemacht, hier ist aber derselbe Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: repeat - until abfrage

  Alt 6. Nov 2003, 11:58
Kannst du die Zeile in der der Fehler kommt mal zeigen?
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#9

Re: repeat - until abfrage

  Alt 6. Nov 2003, 13:14
ja sicher kann ich dir die Zeile zeigen:

dm1.T_anschrift.Next; Wenn Du dir oben den Code anguckst, den ich eingestellt habe, dort siehst Du die Zeile auch! Da kommt immer der Fehler.
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#10

Re: repeat - until abfrage

  Alt 6. Nov 2003, 13:20
@ Snyderburn
in deinem aufgeführten beispiel wird der satzzeiger ja nur auf den nächsten satz gestellt wenn die bedingung in den else-zweig geht. bei "then" wird er ja gar nicht weiter gestellt. ist das absicht?
weil wenn der satzzeiger nicht weitergestellt wird dann greifst du ja immer auf den selben satz zu.


Delphi-Quellcode:
dm1.T_anschrift.First;
while (not dm1.T_anschrift.eof) and (idzumbearbeiten = bearbeitenzaehler)do bgein
  if idzumbearbeiten = dm1.T_anschrift.fieldbyname('ID_anschrift').asinteger
     then begin
           ....
           bearbeitenzaehler := idzumbearbeiten;
          end
     else begin
           // dm1.T_anschrift.Next; glaube hier nicht
           bearbeitenzaehler := bearbeitenzaehler + 1;
          end;
  dm1.T_anschrift.Next; // glaube hier muss das hin
end; {while}idzumbearbeiten = bearbeitenzaehler;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:03 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