![]() |
Re: repeat - until abfrage
Querys benutze ich bei mir im Prog. Aber @Touchdown, du hast recht, zu diesem Zeitpunkt werden die Querys nicht benutz, sondern nur das Table!
Hättet ihr sonst noch ne idee, woran das liegen könnte?????? |
Re: repeat - until abfrage
:wiejetzt:
glaube das wird so nix mehr.. wir wärs mit etwas mehr quellcode oderstellst bissl code zum download bereit, damit man sch das mal genauer ansehen kann? is nur ein vorschlag. |
Re: repeat - until abfrage
Hallo Snyderburn,
welche Datenbank nutzt du? |
Re: repeat - until abfrage
Hier ist der Quellcode der Prozedure. Ich habe nur ein paar Abfragen und Tabellen rausgenommen, da die sich ständig wieder holen.
Delphi-Quellcode:
procedure TImportblatt.Bearbeiten2Click(Sender: TObject);
var idzumbearbeiten, bearbeitenzaehler : integer; begin dbmemo7.visible := true; dblookupListbox1.Visible := false; Mainmenueanzeigentrue; //Anzeige des MainMenu MainMenu1.Items.Items[1].Items[1].enabled := false; //Eine Punkt im Menü auf enabled setzten bearbeitenzaehler := 0; idzumbearbeiten := 0; try idzumbearbeiten := dm1.q_extern.fieldbyname('Id_anschrift').asinteger; //q_extern ist eine Query. Wurde in einer If idzumbearbeiten = 0 then //Prozedure aufgerufen und gestartet. begin showmessage('Es können keine Daten bearbeitet werden!'); exit; end else begin dm1.q_anschrift.close; dm1.ds_anschrift.DataSet := dm1.T_anschrift; dm1.T_anschrift.First; repeat if idzumbearbeiten = dm1.T_anschrift.fieldbyname('ID_anschrift').asinteger then begin dm1.T_anschrift.edit; dm1.T_Zugehoerigkeit.edit; .... // Hier stehen noch mehr Tabellen drin. dm1.t_extern_freigabe.edit; dm1.q_Zugehoerigkeit.RequestLive := true; dm1.DS_Zugehoerigkeit.DataSet := dm1.q_Zugehoerigkeit; dm1.q_Zugehoerigkeit.Close; dm1.q_Zugehoerigkeit.SQL.Clear; dm1.q_Zugehoerigkeit.SQL.Add('select * from zugehoerigkeit where id_anschrift = '+inttostr(idzumbearbeiten)); dm1.q_Zugehoerigkeit.Open; // diese wiederholt sich für einige anderen Tabellen!! dbnavigator1.Visible := false; dbnavigator2.Visible := false; Importblatt.Caption := 'Interner Fragebogen - Bearbeiten'; Buttonreadonlyfalse; // setzt alle Buttons auf ReadOnly := false; Freigabe.Visible := false; //setzt den Button auf visible := false; neue_freigabe.Visible := false; //setzt den Button auf visible := false; groupbox1.Visible := false; //setzt die groupbox auf visible := false; dbcheckbox46.Visible := false; //setzt die dbcheckbox auf visible := false; dbcheckbox47.visible := false; //setzt die dbcheckbox auf visible := false; dbcheckbox48.visible := false; //setzt die dbcheckbox auf visible := false; neu.Visible := false; //setzt den Button auf visible := false; loeschen.visible := false; //setzt den Button auf visible := false; Speichern.visible := true; //setzt den Button auf visible := false; Speichern.Enabled := true; //setzt den Button auf visible := false; Klick := 10; //Nur eine Variable, wird später benötigt. bearbeitenzaehler := idzumbearbeiten; end else begin dm1.T_anschrift.Next; bearbeitenzaehler := bearbeitenzaehler + 1; end; until (idzumbearbeiten = bearbeitenzaehler) or (dm1.T_Anschrift.Eof); end; except showmessage('Es können keine Daten bearbeitet werden!'); end; end; |
Re: repeat - until abfrage
Zitat:
|
Re: repeat - until abfrage
Hallo Snyderburn,
da hat man die was Gutes vorgesetzt. Du benutzt eine Interbase / Firebird Datenbank. Da es sich dabei um eine C/S Datenbank handelt, die nur SQL versteht, werden deine Tabellenzugriffe in SQL Anfragen umgewandelt. Das erklärt, warum der Fehler mit SQL zu tun hat. |
Re: repeat - until abfrage
Zitat:
|
Re: repeat - until abfrage
Hallo Snyderburn,
deine Aussage: Zitat:
Ich gehe mal davon aus, dass da nur der Frust durchdringt, dass du nicht weiterkommst und will mal ein paar Kommentare zu deinem Code abegeben:
Delphi-Quellcode:
Was mir hier komisch vorkommt ist, dass du hier viele Tabellen in den Schreibmode versetzt!? Üblicherweise setzt man nur die Datei in den Schrebmodus, in der man den aktuellen Datensatz editieren möchte.
repeat
if idzumbearbeiten = dm1.T_anschrift.fieldbyname('ID_anschrift').asinteger then begin dm1.T_anschrift.edit; dm1.T_Zugehoerigkeit.edit; .... // Hier stehen noch mehr Tabellen drin. dm1.t_extern_freigabe.edit;
Delphi-Quellcode:
Wenn q_Zugehoerigkeit noch geöffnet ist, sollte eine Zuweisung an RequestLive entweder zu einer exception führen oder ignoriert werden. Ich würde erst das Close schreiben und dann die Eigenschaften ändern.[/delphi]dm1.q_Zugehoerigkeit.RequestLive := true; dm1.DS_Zugehoerigkeit.DataSet := dm1.q_Zugehoerigkeit; dm1.q_Zugehoerigkeit.Close;
Delphi-Quellcode:
Wenn der akzuelle Datensatz die Bedingung nicht erfüllt, wird der Datensatzzeiger ja durch den Aufruf von Next weitergeschoben. Dann setzt du aber alle Tabellen erneut in den Edit-Modus, aber in diesem sind sie ja noch!?
...
end else begin dm1.T_anschrift.Next; bearbeitenzaehler := bearbeitenzaehler + 1; end; until (idzumbearbeiten = bearbeitenzaehler) or (dm1.T_Anschrift.Eof); |
Re: repeat - until abfrage
@MrSpock ich wollte nicht, dass es zickig klingt, aber ich bin total verzweifelt, dass es nicht so funktioniert, wie ich das will!!!!
Wenn ich in der repeat-until schleife eine try-except bedingung einfüge, dann funktioniert das komischerweise.
Delphi-Quellcode:
Wieso funktioniert das jeztz??? kann mir das jemand erklären??? Aber zum Glück hat es nun funktioniert.
dm1.T_anschrift.First;
repeat try dm1.T_anschrift.Next; except showmessage('mhm...es gibt hier ein kleines Problem'); end; until dm1.T_Anschrift.Eof; @all Danke für die Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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-2025 by Thomas Breitkreuz