Entwickler-Ecke
Datenbanken - Paradox-Tabelle durchsuchen
delphi_noop - Sa 30.05.09 17:36
Titel: Paradox-Tabelle durchsuchen
Hallo zusammen!
Würde gerne per Knopfdruck eine Tabelle durchsuchen und falls in einer bestimmten Zelle noch kein Eintrag existiert einen einfügen!!!
Wie mach ich das am besten?
ffgorcky - So 31.05.09 08:53
Da ist die Frage, ob Du das mit einem DBGrid machen könntest,
dann würde das doch (meiner in dem Gebiet nicht so bewanderen Ansicht nach) so gehen:
Delphi-Quelltext
1: 2: 3: 4:
| for i:=0 to DBGrid1.Lines.Count-1 do for j:=0 to DBGrid1.Cols.Count-1 do if DBGrid.Cells[i,j]='' then DBGrid.Cells[i,j]:='HierDeinEintrag'; |
Damit würde er dann alle leeren Zellen innerhalb des maximalen Umfangs (also des letzen Zeilen- und letzten Spalten-Eintags) mit dem Eintrag
'HierDeinEintrag' - oder was auch immer Du dahin schreibst - versehen.
arj - So 31.05.09 11:12
Hallo!
Ich würde es in etwa so probieren und mich nicht
auf GUI-Elemente verlassen, wie es
ffgorcky vorgeschlagen hatte.
Delphi-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: 30: 31:
| procedure FillEmptyFields; var oldpos : Integer; begin oldpos := Table1.RecNo;
table1.First;
while not table1.Eof do begin if table1.Fields[0].AsString = '' then if table1.Fields[0].IsNull then if table1.FieldByName('Feldname').AsString = '' then begin table1.Edit; table1.FieldByName('Feldname').AsString := 'Wert'; table1.Post; end; end;
table1.RecNo := oldpos; end; |
Das solltest Du gegebenenfalls in einen anderen Thread auslagern,
oder ein
Application.ProcessMessages einfügen, sonst
hängt deine Applikation wenn das viele Datensätze sind.
Grüße
arj
delphi_noop - So 31.05.09 11:33
Danke für eure Tipps, aber irgendwie klappt das nicht so ganz... :(
Außerdem möchte ich gerne nicht alle Zellen durchsuchen, sondern nur eine bestimmte Anzahl an Zellen (z.B. von Zeile 3 bis Zeile 5) und in diese dann, falls sie noch leer sind, den Text von Edit1 eintragen!!!
Vielleicht kann mir jemand hierbei behilflich sein!!! DANKE!!!! 8)
arj - So 31.05.09 11:37
Hi
delphi_noop
mit dem Beitrag von
ffgorcky oder mit meinem solltest Du
ne Lösung basteln können, die das tut.
Versuch einfach mal :-)
Wenns partout nicht klappen will, dann post mal (den relevanten) Teil
deines Codes dann schauen wir uns dass mal an. :-)
delphi_noop - So 31.05.09 11:39
Hab's nochmal probiert, aber es hat wieder nicht funktioniert!
Im Anhang findet ihr mein gesamtes Programm...
arj - So 31.05.09 11:46
arj hat folgendes geschrieben: |
... dann post mal (den relevanten) Teil
deines Codes... |
delphi_noop - So 31.05.09 11:48
Hallo!
In dem Programm gibt es nur ein Dbgrid mit der Tabelle und einen button zum Einfügen, also bitte einfach runterladen!!!
arj - So 31.05.09 12:07
Was meinst Du denn warum ich das da oben geschrieben hab, mit dem
relevanten Teil? :evil:
Das hier wäre der relevante Code gewesene:
Delphi-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: 30: 31: 32: 33:
| procedure TForm1.Button1Click(Sender: TObject); var oldpos : Integer; begin oldpos := Table1.RecNo;
table1.First;
while not table1.Eof do begin if table1.Fields[0].AsString = '' then if table1.FieldByName('Tätigkeit').AsString = '' then begin table1.Edit; table1.FieldByName('Tätigkeit').AsString := edit1.text; table1.Post; end; end;
table1.first ; dbgrid1.refresh; Application.ProcessMessages; end; |
delphi_noop hat folgendes geschrieben : |
| Hab's nochmal probiert, aber es hat wieder nicht funktioniert! |
Was genau ging denn nicht? Hat es nicht kompiliert? Was hat das Programm stattdessen gemacht?
Was genau möchtest Du denn jetzt Ändern an Deinen Feldern?
Gib mal bitte noch ein paar Infos!
Delete - So 31.05.09 12:23
Wie wäre es denn mit einer Query?
SQL-Anweisung
1:
| UPDATE Tabelle SET Feld = Wert WHERE Feld IS NULL |
ffgorcky - So 31.05.09 12:34
Ich würde auch sagen, dass Du das von
DeddyH vorgeschlagene erst mal machen solltest
- wobei ich statt Wert einfach einen Leerstring (also nur '') reinsetzen würde - es sei denn, Du möchtest später mal
unterscheiden, ob dieses Feld denn schon einen Wert zugewiesen bekommen hat, oder nicht.
Dann würde ich das eher so schreiben:
Delphi-Quelltext
1:
| if table1.FieldByName('Tätigkeit')=null then |
In der Hoffnung, dass ich da jetzt keinen Denkfehler drin habe, da ich mich mit dem SQL-Server schon länger nicht mehr beschäftigt habe. - Oder war das in dem Fall dann so?:
Delphi-Quelltext
1:
| if table1.FieldByName('Tätigkeit')=DBNull then |
Das könnte auch sein...
Delete - So 31.05.09 12:38
Es geht ja wohl darum, nachträglich einen Standardwert einzusetzen, das kann ein Leerstring oder auch etwas anderes sein (wobei ich nicht weiß, wie Paradox sich bei Leerstrings verhält). Und IIRC prüft man NULL mit IsNull ab, sicher bin da aber gerade nicht.
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!