Autor Beitrag
Stefan_B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Mi 08.01.03 11:38 
hallo!
habe ein problem.
habe eine sql datenbank in einem dbgrid.
wenn ich dann aber die datensätze (z.b. kundennr.) auf ein anderes grid übernehmen möchte, muss der datensatz auf doppelte nummern oder leere felder geprüft werden. das heisst, wenn die kundennr. koppet vorkommt, muss die dann in das memo und der leere datensatz auch.
das mit der doppelten nummer habe ich hingekriegt aber die leeren felder macht er nicht.
Hier der Quellcode:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.Button1Click(Sender: TObject);

begin
     wwQuery1.First;

     while not wwQuery2.Eof do
           begin
                wwQuery2.Delete;
           end;
     while not wwQuery1.Eof do
           begin
                if wwQuery2.Locate('KdNr',wwQuery1.FieldByName('KNUMMER').AsInteger,[])
                    then
                    begin
                         if not FileExists('KdNr') then
                         begin
                              Memo1.Lines.add(wwQuery1.FieldByName('KNUMMER').AsString);
                         end
                         else
                            begin
                                 wwQuery2.Insert;
                                 wwQuery2.FieldByName('KdNr').AsInteger:=
                                 wwQuery1.FieldByName('KNUMMER').AsInteger;
                                 wwQuery2.Post;
                            end;
                                 wwQuery1.Next;
                    end;
           end;
end.


Klabautermann: Code Tags hinzugefügt.
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: Mi 08.01.03 12:09 
Hallo
um ehrlich zu sein, weiss ich nicht so richtig, was du mit dem FileExists bezwecken willst. Es geht doch nur darum Sätze mit doppelter oder nicht vorhandener Nummer auszuschliessen, oder? Das könntest du z. B. so machen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  wwQuery1.First; 

  while not wwQuery2.Eof do 
  begin 
    wwQuery2.Delete; 
  end; 
  while not wwQuery1.Eof do 
  begin 
    if (wwQuery1.FieldByName('KNUMMER').IsNull)
    or (wwQuery2.Locate('KdNr',wwQuery1.FieldByName('KNUMMER').AsInteger,[])) then
        Memo1.Lines.add(wwQuery1.FieldByName('KNUMMER').AsString)
    else begin 
        wwQuery2.Insert; 
        wwQuery2.FieldByName('KdNr').AsInteger:= wwQuery1.FieldByName('KNUMMER').AsInteger; 
        wwQuery2.Post; 
    end; 
    wwQuery1.Next; 
  end; 
end;


Gruss Lothar

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



BeitragVerfasst: Mi 08.01.03 12:21 
danke für die berichtigung!
du hast noch ein end. vergessen ;-)
aber es funktioniert!!!!

vielen dank!
Stefan_B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Mi 08.01.03 13:02 
kannst du mir vielleicht auch verraten, wie ich die danach den Namen übertragen kann?
Stefan_B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Mi 08.01.03 13:04 
falsches deutsch :-(
wie krieg ich nach dieser funktion die anderen einträge (z.b. name) rüber?

danke
Stefan_B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Mi 08.01.03 13:05 
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
wwQuery1.First;

while not wwQuery2.Eof do
begin
wwQuery2.Delete;
end;
while not wwQuery1.Eof do
begin
if (wwQuery1.FieldByName('KNUMMER').IsNull)
or (wwQuery2.Locate('KdNr',wwQuery1.FieldByName('KNUMMER').AsInteger,[])) then
Memo1.Lines.add(wwQuery1.FieldByName('KNUMMER').AsString)
else
begin
wwQuery2.Insert;
wwQuery2.FieldByName('KdNr').AsInteger:= wwQuery1.FieldByName('KNUMMER').AsInteger;
wwQuery2.Post;
end;
wwQuery1.Next;
end;
begin
wwQuery1.First;
while wwQuery1.Eof do
begin
if (wwQuery1.FieldByName('KNAME1').IsNull)
or (wwQuery2.Locate('Name1',wwQuery1.FieldByName('KNAME1').AsString,[])) then
Memo1.Lines.add(wwQuery1.FieldByName('KNAME1').AsString)
else
begin
wwQuery2.Insert;
wwQuery2.FieldByName('Name1').AsString:= wwQuery1.FieldByName('KNAME1').AsString;
wwQuery2.Post;
end;
wwQuery1.Next;
end;
end;
end;
end.
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 09.01.03 09:55 
Ha, erwischt :mrgreen:
Da hast du in deiner Fragestelle aber ein bisschen was ausgelassen. Du hast also einen Datensatz mit vielen Feldern und der soll komplett in eine andere Tabelle übertragen werden ausser die Nummer ist schon vorhanden oder der Satz ist leer?
Was soll dann passieren, wenn nur einige Felder leer sind, oder wenn der Satz schon verhanden ist, aber geändert wurde? Beschreib doch mal bitte ein bisschen genauer was du da vorhast.

Gruss Lothar

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



BeitragVerfasst: Do 09.01.03 11:19 
hi!
der code sieht jetzt so aus:
procedure TForm1.Button1Click(Sender: TObject);
begin
wwQuery1.First;

while not wwQuery2.Eof do
begin
wwQuery2.Delete;
end;
while not wwQuery1.Eof do
begin
if (wwQuery1.FieldByName('KNUMMER').IsNull)
or (wwQuery2.Locate('KdNr',wwQuery1.FieldByName('KNUMMER').AsInteger,[]))
then Memo1.Lines.add(wwQuery1.FieldByName('KNUMMER').AsString)
else
begin
wwQuery2.Insert;
wwQuery2.FieldByName('KdNr').AsInteger:= wwQuery1.FieldByName('KNUMMER').AsInteger;
wwQuery2.FieldByName('Name1').AsString:=wwQuery1.FieldByName('KNAME1').AsString;
wwQuery2.FieldByName('Name2').AsString:=wwQuery1.FieldByName('KNAME2').AsString;
wwQuery2.FieldByName('Strasse').AsString:=wwQuery1.FieldByName('KSTRASSE').AsString;
wwQuery2.FieldByName('PLZ').AsString:=wwQuery1.FieldByName('KPLZ').AsString;
wwQuery2.FieldByName('Postfach').AsString:=wwQuery1.FieldByName('KPOSTFACH').AsString;
wwQuery2.FieldByName('PLZPostfach').AsString:=wwQuery1.FieldByName('KPOSTFPLZ').AsString;
wwQuery2.FieldByName('Ort').AsString:=wwQuery1.FieldByName('KORT').AsString;
wwQuery2.FieldByName('Telefon').AsString:=wwQuery1.FieldByName('KTELEFON').AsString;
wwQuery2.FieldByName('Telefax').AsString:=wwQuery1.FieldByName('KTELEFAX').AsString;
wwQuery2.FieldByName('KonPers').AsString:=wwQuery1.FieldByName('KPNAME1').AsString;
wwQuery2.FieldByName('Bank').AsString:=wwQuery1.FieldByName('KBANK').AsString;
wwQuery2.FieldByName('KontoNr').AsInteger:=wwQuery1.FieldByName('KKTONR').AsInteger;
wwQuery2.FieldByName('BLZ').AsString:=wwQuery1.FieldByName('KBLZ').AsString;
wwQuery2.FieldByName('E_Mail').AsString:=wwQuery1.FieldByName('KEMAIL').AsString;
wwQuery2.Post;
end;
wwQuery1.Next;
end;
end;
end.

aber kann ich denn auch die ganzen felder auch in die makro werfen?
:roll:
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 09.01.03 11:26 
Hi
Stefan_B hat folgendes geschrieben:
aber kann ich denn auch die ganzen felder auch in die makro werfen?
:roll:

Ich geb mir ja die grösste Mühe zu erraten was du damit meinst, aber :nixweiss:
Ausserdem wärs nett, wenn du dir mal angewöhnen könntest in deinen Postings Format-Tags zu verwenden.

Gruss Lothar

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



BeitragVerfasst: Do 09.01.03 11:33 
hallo lothar.
ich meine, wenn ich die daten mit einem button von einem grid ins andere übernehme. fügt er ja die doppelte kundennr. ins memo ein. wie kann ich z.b. auch den kundennamen daneben packen?
code:
then Memo1.Lines.add(wwQuery1.FieldByName('KNUMMER').AsString)
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 09.01.03 11:43 
ausblenden Quelltext
1:
2:
3:
 
then Memo1.Lines.add( wwQuery1.FieldByName('KNUMMER').AsString + ' '
+  wwQuery1.FieldByName('KNAME').AsString)


ausblenden Quelltext
1:
Zum Kennzeichnen von Programmcode: [code] und [/code]					


Gruss Lothar

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



BeitragVerfasst: Do 09.01.03 12:01 
danke lothar! :lol:

ausblenden Quelltext
1:
 Das mit dem Code krieg ich auch noch hin!  :wink:					
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 09.01.03 12:02 
Tusch, Jubel, tosender Applaus :party: :mrgreen:

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...