Entwickler-Ecke
Datenbanken - leere Datensätze übernehmen
Stefan_B - Mi 08.01.03 11:38
Titel: leere Datensätze übernehmen
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:
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 - 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:
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
Stefan_B - Mi 08.01.03 12:21
danke für die berichtigung!
du hast noch ein end. vergessen ;-)
aber es funktioniert!!!!
vielen dank!
Stefan_B - Mi 08.01.03 13:02
kannst du mir vielleicht auch verraten, wie ich die danach den Namen übertragen kann?
Stefan_B - 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 - 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 - 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
Stefan_B - 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 - 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
Stefan_B - 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 - Do 09.01.03 11:43
Quelltext
1: 2: 3:
| then Memo1.Lines.add( wwQuery1.FieldByName('KNUMMER').AsString + ' ' + wwQuery1.FieldByName('KNAME').AsString) |
Quelltext
1:
| Zum Kennzeichnen von Programmcode: [code] und [/code] |
Gruss Lothar
Stefan_B - Do 09.01.03 12:01
danke lothar! :lol:
Quelltext
1:
| Das mit dem Code krieg ich auch noch hin! :wink: |
LCS - Do 09.01.03 12:02
Tusch, Jubel, tosender Applaus :party: :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!