Autor |
Beitrag |
Jacer
      
Beiträge: 105
Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
|
Verfasst: Do 08.02.07 01:06
Guten Abend zusammen!
Also ich wollte eine kleine Datenbank-Anwendung programmieren und hänge aber bei einer recht banalen Frage. Ich wollte in einer Liste alle Einträge sortiert ausgeben (Dachte dafür wäre die ListBox geeignet) mit 2 Datenfeldern der Tabelle (Paradox 7) die durch ein Komma getrennt sind (Name, Vorname). So wie aber realisiere ich dass die Einträge überhaupt in der ListBox erscheinen? Habe eigentlich alles gemacht wie es sein muss. DataSource und Table eingefügt etc. Habe darunter einen Button "Hinzufügen". Gehe ich dadrauf, stehen in den Feldern auch ide Daten des letzten Datensatzes der eingetragen wurde. Also das funktioniert soweit. Nur die Ausgabe in der ListBox funktioniert nicht.
Wollte dass dann so machen, dass wenn ein Eintrag in der Liste markiert wird, rechts alle Daten des Datensatzes in der Tabelle angezeigt werden. Sozusagen eine detaillierte BEschreibung zu dem Eintrag.
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Do 08.02.07 01:22
die frage ist, was ist es für eine Listbox ? TListBox oder TDBLookupListbox ?
Bei einer Listbox einfach mit ListBox1.Items.Add('Mein Item');
Bei einer für Datenbanken musst Die Datenbank mit der Listbox verknüpfen und der Liustbox sagen, welches Feld Du anzeigen willst. Aber da du ja 2 Felder anzeigen willst, musst du es wohl per hand machen in einer normalen Listbox
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
Jacer 
      
Beiträge: 105
Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
|
Verfasst: Do 08.02.07 01:35
Habe die die TDBListBox genutzt und auch verknüpft.
Wollte wissen ob es geht 2 Datenfelder des Datensatzes hintereinander beispielsweise durch ein Komma getrennt anzeigen zu lassen.
Tut mir leid war etwas ungenau formuliert meine Frage...
Wie ist denn in Bezug auf Datenbanken der Befehl um einen Datensatz hinzuzufügen?
Delphi-Quelltext
Oder doch Insert?
Ich brauche vorallem dass wenn ich das Formular aufrufe um einenEintrag hinzuzufügen, die DBEdits leer sind also dass direkt neue Werte eingetragen werden können. HAbe dazu leider nichts gefunden...
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Do 08.02.07 02:09
uff, da kann ich dir auf die schnelle ned helfen, mache mit den DB komponenten nix, ich bin masochist und mache alles per hand, was zwar viel viel Arbeit macht, aber die Geschwindigkeit ist es einfach wert für mich 
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 08.02.07 02:17
klemm das teil ab und nimm 'ne listbox. dann weisste was te hast...
|
|
Jacer 
      
Beiträge: 105
Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
|
Verfasst: Do 08.02.07 12:55
Also das einzige Problem ist, dass er die Datensätze aus der Tabelle nicht in der TDBListBox anzeigt! Obwohl ich alles eingestellt habe wie DataSource etc. Active ist auch auf True gesetzt.
Wenn ich eine normale ListBox nehme, wie stelle ich dann da den Bezug zu der Datenbank her?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 08.02.07 13:16
Hast Du der DBListBox auch "erzählt" dass es mit der DataSource verbunden ist und welches Feld angezeigt werden soll?
Versuche das erstmal mit einem Feld. Dann sehen wir weiter.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 08.02.07 13:18
Hallo!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i: integer; begin for i:= 0 to DeinDBGrid.datasource.dataset.recordcount-1 do begin listbox1.items.add(DeinDBGrid.fields[n].asstring); DeinDBGrid.datasource.dataset.moveby(1); end; end; |
wobei fields[n] n die Spalte beschreibt, in der dein Text steht, welcher in die Listbox eingetragen werden soll.
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Jacer 
      
Beiträge: 105
Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
|
Verfasst: Do 08.02.07 13:19
Ja natürlich! Habe sowohl die DataSource als auch EIN Datenfeld angegeben, welches angezeigt werden soll. Trotzdem keine Reaktion. An der Verbindung kann es nicht liegen da in dem Formular "Hinzufügen" ja auch die Einträge angezeigt werden. Nur in der DBListBox geht es nicht.
ZeitGeist87 hat folgendes geschrieben: | Hallo!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i: integer; begin for i:= 0 to DeinDBGrid.datasource.dataset.recordcount-1 do begin listbox1.items.add(DeinDBGrid.fields[n].asstring); DeinDBGrid.datasource.dataset.moveby(1); end; end; |
wobei fields[n] n die Spalte beschreibt, in der dein Text steht, welcher in die Listbox eingetragen werden soll.
LG
Stefan |
Warum "DeinDBGrid" ? Ich verwende doch gar kein Grid. Oder wie ist das gemeint? *gruebel*
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 08.02.07 13:32
Hatte bisher noch nie TDBListBox verwendet. Habe mir gerade mal die Hilfe dazu angesehen. Das ist für Deine Anforderung denkbar ungeeignet. Die TDBListBox ist eine Auswahlliste, um den Inhalt eines Datenbankfeldes zu ändern!
Du solltest also eine normale TListBox verwenden und die Daten dort manuell eintragen, indem Du einfach die TTable-Komponente durchläufst. Also jeden Datensatz durch gehst:
Delphi-Quelltext 1: 2: 3: 4: 5:
| while not table1.eof do begin listbox1.items.add(table1.fieldbyname('feldname').Asstring + ', ' +table1.fieldbyname('nocheinfeldname').Asstring); table1.next; end; |
ungeprüfter Source. Falls ich mich vertippt habe, einfach mal selber probieren.
|
|
Jacer 
      
Beiträge: 105
Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
|
Verfasst: Do 08.02.07 13:47
@ jasocul:
Danke das funktioniert wunderbar.
Könntest du mir kurz erläutern wofür der Befehl "TblMitarbeiter.eof" steht? Also dieses EOF!?
Ich denke mal der Rest ist mir soweit klar vielen Dank.
Dann hätte ich noch eine kleine weitere Frage.
ICh habe ein zweites Fomular indem neue EInträge hinzugefügt werden. Habe dafür standardmäßig die DBEdits genommen bzw ein DBMemo. Wenn ich jetzt aber dieses öffne steht da immer der letzte Datensatz drinn. Kann ich irgendwie durch einen Befehl bereits beim Öffnen sagen, dass die auf den nächsten (leeren) Datensatz gestellt werden?
Und wenn ich einen Button damit belege "Hinzufügen", ist der Befehl dann "Table1.Insert" ?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 08.02.07 13:56
EOF = End Of File = Ende der Datei.
Ansonsten gilt hier (jetzt wird es offiziell):
Hallo,
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:
*geschlossen*
Viele Grüße,
Jasocul
|
|