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 3 von 3     123   
Snyderburn

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 10:22
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??????
  Mit Zitat antworten Zitat
markon

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 10:33


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.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 10:48
Hallo Snyderburn,

welche Datenbank nutzt du?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Snyderburn

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 11:00
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;
  Mit Zitat antworten Zitat
Snyderburn

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 11:02
Zitat von MrSpock:
Hallo Snyderburn,

welche Datenbank nutzt du?
Ich benutze eine *.gdb Datenbank. Mir sagt das nicht viel, aber mir wurde die einfach "vorgesetzt".
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 11:49
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Snyderburn

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

Re: repeat - until abfrage

  Alt 7. Nov 2003, 13:53
Zitat von MrSpock:
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.
Das ist dann ja schön zu hören, dass es daran liegt, dass der Fehler was mit SQL zu tun hat. Aber, das bringt mir ja auch nicht viel weiter. Den Fehler habe ich deswegen noch nicht beseitigt!!
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: repeat - until abfrage

  Alt 8. Nov 2003, 17:48
Hallo Snyderburn,

deine Aussage:
Zitat:
Das ist dann ja schön zu hören, dass es daran liegt, dass der Fehler was mit SQL zu tun hat. Aber, das bringt mir ja auch nicht viel weiter. Den Fehler habe ich deswegen noch nicht beseitigt!!
hört sich ja ziemlich zickig an. Man hat ja fast das Gefühl, man müsste sich entschuldigen helfen zu wollen.

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:
 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;
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.
Delphi-Quellcode:

            dm1.q_Zugehoerigkeit.RequestLive := true;
            dm1.DS_Zugehoerigkeit.DataSet := dm1.q_Zugehoerigkeit;
            dm1.q_Zugehoerigkeit.Close;
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]

Delphi-Quellcode:
 ...
          end
          else
          begin
           dm1.T_anschrift.Next;
           bearbeitenzaehler := bearbeitenzaehler + 1;
          end;
        until (idzumbearbeiten = bearbeitenzaehler) or (dm1.T_Anschrift.Eof);
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!?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Snyderburn

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

Re: repeat - until abfrage

  Alt 10. Nov 2003, 11:07
@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:
        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;
Wieso funktioniert das jeztz??? kann mir das jemand erklären??? Aber zum Glück hat es nun funktioniert.
@all Danke für die Hilfe!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:24 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