Autor Beitrag
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mi 11.12.02 14:44 
lies dir die antworten von uns noch mal durch. dann weist du wie es geht

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 11.12.02 16:57 
hier hab ich einen code :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if Key = #13 then
  begin
    Table1.Open;
    Table1.First;
    while not Table1.eof do
    begin
      if Table1.FieldByName('UmlagNr').AsString = Edit1.Text then
      begin
        Table1.Delete;
        Close;
      end;
      Table1.Next;
    end;
  end;


.... hierbei springt er zum 1 datensatz und löscht ihn,aber dann springt er nicht zum 2 datensatz sondern immer zum 3 datensatz wisst ihr warum ?
Logi5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 12.12.02 00:08 
Ja, weil wenn der 1. Datensatz gelöscht wurde, steht der Datensatzzeiger auf dem 2. jedoch für die Prozedure die du da hast dazu, dass auch nach dem löschen auch ein Datensatz vor gesprungen wird...

Du musst die Prozedure so schreiben, dass "Table1.Next;" nur ausgeführt wird, wenn nicht gelöscht wurde...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
if Key = #13 then 
  begin 
    Table1.Open; 
    Table1.First; 
    while not Table1.eof do 
    begin 
      if Table1.FieldByName('UmlagNr').AsString = Edit1.Text then 
      begin 
        Table1.Delete; 
      end
           else
      begin
      Table1.Next;
      end;
 
    end; 
  end;


Die schreibweise ist zwar nicht die professionellste, aber es funzt..
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Do 12.12.02 07:22 
Was soll eigentlich das close mitten in der procedure?

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Do 12.12.02 09:53 
ich habe so :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
if Key = #13 then
  begin
    Table1.Open;
    Table1.First;
    while not Table1.eof do
    begin
      if Table1.FieldByName('UmlagNr').AsString = Edit1.Text then
      begin
        Table1.Delete;
        if Table1.FieldByName('UmlagNr').AsString <> Edit1.Text then
        begin
          MessageDlg('Umlagerungsschein gelöscht ! Bitte gedruckten Schein vernichten !',mtInformation,[mbOk],0);
          Edit1.Clear;
          Close;
        end;
      end
      else
      begin
        Table1.Next;
       end;
    end;
  end;


....hierbei wird eine Nachricht angezeigt,wenn das Feld "UmlagNr" mit Editfeld übereinstimmt (das macht er auch wunderbar)
aber jetzt mus noch eine Nachricht rein,wenn er keine übereinstimmung findet !
ich weiss nicht wo ich das reinpacken soll !
wisst ihr wo ?

Jagg !

PS : Vllt da wo Table1.next steht ?
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Do 12.12.02 10:08 
Hi
irgendwie verstehe ich dein Vorgehen nicht mehr. :nixweiss: Mal gehts ums Löschen, dann wieder ums Packen und jetzt gehts wieder ums Löschen. Wie denn jetzt?
Du hattest eine wunderbar simple und effiziente Lösung ein paar Postings weiter vorne und die hast du jetzt durch das ersetzt? Ich versteht die Welt nicht mehr. :autsch:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Do 12.12.02 10:08 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var count : integer;
....

count := 0;
if Key = #13 then 
  begin 
    Table1.Open; 
    Table1.First; 
    while not Table1.eof do 
    begin 
      if Table1.FieldByName('UmlagNr').AsString = Edit1.Text 
        then 
          begin
            Table1.Delete
            inc(count);
           end
        else Table1.Next;        
    end; 
  if count > 0 
    then MessageDlg('Umlagerungsschein gelöscht !',mtInformation,[mbOk],0)
    else MessageDlg('Nix gefunden !',mtInformation,[mbOk],0);
end;

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Do 12.12.02 10:24 
danke !
aber das ich auf sowas einfaches nicht komme,also eine laufvariable setzen !

Jetzt fehlt nur noch das mit dem DBIPacktable,bis jetzt sind nur die gelöschten Datensätze markiert,aber sie sollen ja nicht mehr in der *.dbf zu sehen sein !

Jagg !
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Do 12.12.02 10:28 
Noch einfacher!

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if Key = #13 then 
  begin 
    Query1.SQL.Clear; 
    Query1.SQL.Add ('DELETE FROM Umlag.dbf WHERE UmlagNr= '+(Edit1.Text)); 
    Query1.ExecSQL; 
    if Query1.rowsaffected > 0 
    then MessageDlg('Umlagerungsschein(e) gelöscht !',mtInformation,[mbOk],0) 
    else MessageDlg('Nix gefunden !',mtInformation,[mbOk],0); 
  end;

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Do 12.12.02 10:34 
danke für deine mühe !
gut zu wissen wi man das auch mir SQL macht !
Danke danke danke !