Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Kleine Frage zu Datenbanken
Jacer - Do 08.02.07 01:06
Titel: Kleine Frage zu Datenbanken
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 - 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
Jacer - 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?
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 - 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 :)
Delete - Do 08.02.07 02:17
klemm das teil ab und nimm 'ne listbox. dann weisste was te hast...
Jacer - 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 - 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 - 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
Jacer - 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 - 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 - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!