Datensatz auswählen, mit ListBox oder ComboBox
Hallo :hi:
ich habe folgendes Problem, ich habe mehrere DBs. Meine Haupttabelle hat ein Elementnames ArbeiterID diese veweist wieder auf eine andere DB mit dem namen Arbeiter in dieser ist enthalten. Nummer Vorname Nachname Abteilung Jetzt wollte ich das in meiner ListBox oder ComboBox nicht nur der Vorname, sondern auch der Nachname steht. :o Da ich dieses schon in einem anderen Thread weit geht diskutiert habe und heraus gefunden habe. Das man dieses nur mit der ListBox oder ComboBox machen kann und nicht mit der Lookup....Box. :hello: Ich habe jetzt eine ListBox und eine ComboBox gemacht. In denen meine Arbeiter drin stehen. Wenn ich jetzt eine ListBox nehme kann ich aber keine Arbeiter auswählen und wenn ich die ComboBox nehme kann ich auch nichts auswählen. :wall: Ich machen alles mit Tables. Vielleicht liegt das Problem daran, aber dafür kenne ich mich zuwenig aus. Wenn ich einen neuen Datensatz einfügen will, gehe ich nur über meine Haupttabelle und nicht übermeine Arbeiter Tabelle. Diesen Befehl nutze ich dafür.
Delphi-Quellcode:
Ich hoffe das ihr mein Problem verstanden habt.
Datenmodul.DataModule2.taGeber.Append;
Schon mal danke für eure Antworten. mfg abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Ich habe auch mit Table - Kompos angefangen und bin dann aber ganz schnell zu Querys gewechselt.
Du kannst dir den Vornamen und Namen ganz einfach wie in den anderen Thread beschrieben anzeigen lassen, das sollte ja funktioniert haben. Nun zu deinem Problem. Öffne mal ein neues Project und ersetze die Table durch eine Query. Versuch einfach mal folgenden Code um die Daten in einer LISTBOX anzeigen zu lassen. Im OP bei DatabaseName schreibst du einfach den Pfad der DB (aber nur den Pafd ohne den DB Namen) rein und in SQL einfach den folgenden Code.
Code:
Jetzt kannst Du dir testweise ein DBGrid auf Form ziehen und noch eine DataSource. Nun verknüpfst Du eine die DS mit dem Query und das Grid mit der DS. Active = true setzen und du hast die Daten im Grid zu stehen.
Select * From DB
Nun änderst Du den Code aus dem anderen Thread von mir etwas ab und ersetzt die Table durch die Query. Das ganze in die OnCreate - Ereignis eingetragen und beim start sollten dann alle Vornamen und Namen in der Listbox drinstehen. Versuch das erstmal und dann machen wir weiter. Ein kleiner Tip von, am besten kaufst Du dir ein Buch über DB-Programmierung. Ich mußte es mir auch kaufen, da das Thema sehr umfangreich. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
schon das du mir wieder hilfst, werde des jetzt gleich mal ausprobieren. Aber ich hab da mal wieder eine Frage die nicht zum Thema gehört. Welches Buch würdes du mir empfehlen, hab Delphi 5. Kann es sein das man mit Delphi 6 schon besser mit Datenbank arbeiten kann. Da ich zur Zeit ein Buch hab für Delhi 6. abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Ich habe mir das Buch Programmieren lernen in Delphi 7 gekauft, dort gehen die Autoren erst auf Grundlagenwissen ein und später ausführlich auf die Datenbankprogrammierung ein. In meinen Augen für Einsteiger in diese Matterie genau das richtige.
Bücher zu diesem Thema gib es hier. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
soweit habe ich des jetzt. Jetzt stehen in meiner ListBox, die Vornamen und die Nachnamen. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
kannst du mir weiter helfen, was muss ich denn jetzt machen. :roll: abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
So ab hier wird es etwas komplizierter. Ich werde dir hier nicht den kompletten Code dafür geben. Nur einen Link der dir zeigt wie geht.
Du hast nun die 2 Felder deiner DB zusammengeführt und kannst diese nicht einfach auswerten, dafür müst du die string erst wieder zerlegen. Hier wird gezeigt wie es geht. Und hier ist noch die Query-Abfrage der DB.
Code:
Label1 und Label2.Caption habe ich nur so ausgewählt es können auch ganz einfach Variablen sein.
With Query1 Do
Begin Close; SQL.Clear; SQL.Add('Select * from DBMandanten.db WHERE (MVorname LIKE "'+Label1.Caption+'")' +'AND (MName LIKE "'+Label2.Caption+'")'); open; end; |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
dann fang ich mal an damit. Danke abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
bekomme des zwar alles zum laufen aber brauche ich des überhaupt. :gruebel: Irgendwie stehe ich gerade auf dem Schlauch. :wall: Du hast mir geschreiben. Zitat:
Damit sortiere ich doch nur meine Abfrage. :shock: Dann habe ich auch noch deinen Link ausprobiert. Zitat:
Dann habe ich noch was probiert. Zitat:
Vielleicht liege ich gerade total falsch. :wiejetzt: Aber brauche ich das überhaupt alles. :gruebel: Ich will doch nur meine ListBox oder ComboBox zum Auswählen nehmen. Und dann kann ich doch auch den Index nehmen. Und da ich bei meiner Arbeiter Tabelle eine laufende Varialbe Deklariert habe. Ist dieser doch auch nicht so verschieden zum Index. Aber ich kann bis jetzt immer noch nichts bei meiner ListBox oder ComboBox auswählen. :cry: Kann des sein das sich mein Problem erübrigen würde wenn ich die EnterpriseVersion :idea: hätte. Denn ich habe in deinem Link einen gefunden, bei dem ging es mit Semikola und dieser hatte Delphi5 Enterprise. Ich hab ja nur Delphi5 Proffesional. mfg abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo abi,
jetzt versteh ich gar nichts mehr von dem was du machen willst. Erst willst Du nur den Namen und Vornamen in der ListBox anzeigen. Dann soll der n:1 Beziehung werden und jetzt wieder nicht. Dann willst Du über die Listbox einen Datensatz einfügen. Was willst Du soll den Ergebnis sein? :gruebel: Ich habe mir jetzt alle Beiträge zu diesem Thema von dir mal angeschaut. Willst Du in der ListBox wo der Wilhelm drinsteht den Namen auswählen und zu diesem dann einen neuen DS anlegen? Ich werde das Gefühl nicht los, das wir hier die ganze Zeit aneinander vorbeireden. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
So wir haben jetzt die Arbeiter in der ListBox drinstehn, was soll jetzt passieren, wenn du einen Arbeiter auswählst?
Sag mal, steht in deiner Haupttabelle nur eine Nummer oder hat diese Tabelle noch weitere Felder? |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Guten Morgen Albi
dann versuche ich dir nochmal meinen Aufbau zuerklären. :-D Meine Hauptabelle sieht so aus. "Geber Datenbank" Nummer Geber Bezeichnung Device Name Knotennummer Baudrate ID //dies ist eine Nummer Hardware Version ID //dies ist eine Nummer Software Version ID //dies ist eine Nummer Preset Wert ... Arbeiter ID //dies ist eine Nummer Datum Bemerkung //alle anderen Werte werden direkt eingegeben Dann habe ich noch eine 4 weiter Tabellen. 1. Baudrate 2. Hardware Version 3. Software Version 4. Arbeiter Die Tabellen Baudrate, Hardware Version und Software Version haben nur zwei Spalten. Die erste ist immer die Nummer und die Zweite, ein fester Wert. Nur meine Arbeiter Tabelle hat mehrere Spalten. Nummer //ist die gleiche wie die Arbeiter ID Vorname Nachname Abteilung Jetzt zu dem was ich machen wollte. :witch: Wenn ich jetzt einen neuen Datensatz eingeben will, dann kann ich dies auch machen. Aber ich kann von meinen Neben Tabellen immer nur ein Wert in meiner ListBox oder ComboBox anzeigen. Deshalb wollte ich das dort mehr drin steht. Da sich die Arbeiter, was ich zumindest hoffe, nicht so schnell ändern. Sind dies feste Werte und man wählt halt einen bestimmten aus. Das heisst falls ein neuer Arbeiter hinzu kommt, muss dieser extra eingegeben werden. Dies erfolgt also nicht über die Haupttabelle. Das ist auch kein Problem. Also hab ich eine N:1 beziehung. Da mehre Geber auch denn gleichen Arbeiter haben können. Aber es kann z.b. kein Geber zwei Arbeiter haben. Immer nur einen. Ich hoffe du weisst was ich haben will. Falls nicht frag mich nur. Da ich das erstemal mit Datenbank was mache, mache ich bestimmt vieles Falsch. :angle: ciao abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Guten morgen,
also müßte es im Moment so bei dir aussehen, das wenn ein Geber mehrere Arbeiter hat, der Geber dann in deiner Haupttabelle mehrmals auftaucht. So hab ich das doch jetzt richtig verstanden, oder? |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Guten Morgen
Ja und nein, da hab ich was vergessen. Jeden Geber gibt es nur einmal und da dazu gibt es auch immer nur ein Arbeiter. Da bedeutet es wird niemals ein Geber zweimal vorkommen. Wollte das mit dem Arbeiter hier machen, damit man weiss wer diesen Geber eingetragen hat. Aber ansonst würde ich schon sagen das du mich jetzt verstanden hast. abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Dann gehört doch zu jedem Geber nur ein Arbeiter und nicht mehrere Arbeiter zu einem Geber. Wenn das so ist, dann würd ich das gleich in eine Tabelle schreiben.
|
Re: Datensatz auswählen, mit ListBox oder ComboBox
Des hab ich mir auch schon überlegt. :gruebel:
Aber dann habe ich mir gedacht :idea: , wenn jetzt z.B. 50 Geber mit dem Arbeiter Anton Müller haben und 50 Geber mit dem Arbeiter Bernd Bauer haben. Dann müsste man ja jedesmal denn Arbeiter neu eingeben. Um dies zu vermeiden wollte ich für meine Arbeiter eine extra Tabelle machen. Ich würde des lieber so machen. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Gut jetzt weiß ich was du willst. Dann erstellst Du dir noch ne Hilfstabelle. In der dann die Daten aus dem Geber und Arbeiter zusammenlaufen. Jeder Geber und Arbeiter steht jeweils nur einmal in der jeweiligen DB drin. Und in der Hilfstabelle werden dann über die jeweiligen Primärschlüssel die Bezüge hergestellt.
z.B. in der ListBox stehen jetzt alle Geber drin, wenn du einen auswählst steht in der anderen Listbox oder besser einen Grid die jeweilig dazugehörigen Arbeiter drin. Das ganze kann das so aussehen. Der Geber Müller hat die ID 1 und Arbeiter Schmidt hat die ID 2, dann steht in der Hilfstabelle nur GID 1 un die AID 2. Somit mußt du nur einmal den Geber und Arbeiter in jeweiligen Tabelle ablegen und dann nur die ID in die Hilfstabelle schreiben. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Hallo Albi
auf die Idee mit der Hilfstabelle bin ich gar nicht gekommen. Hört sich auf jedenfall gut an. :thuimb: Jetzt noch mal zur erklärung. :wiejetzt: Dann brauche ich jetzt noch eine weitere Tabelle bei dem jeder Geber eine Numer hat und jeder Arbeiter. Meine Hilfstabelle sieht dann so aus? Geber Nr Arbeiter Nr Und über diese mache ich dann alle meine zuweisungen, oder? abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Ja genau, das ganze heißt Relationales DB-System. Die Nummer sind die Primärschlüssel des jeweiligen Datensatzes. Somit hast du einen eindeutigen Bezug zu den jeweiligen DS in der Tabelle.
Und wie ich das eben geschrieben habe mit dem Anzeigen deiner Ds hattest du es doch gewollt, oder? |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Danke Albi :cheers:
ja genau genau so wollte ich des. Dann werde ich das mal mit dem der Hilfstabelle probieren. :dancer: :witch: :dancer2: Mercy nochmal ohne dich währe ich niemals drauf gekommen. ciao :hi: abi |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Versuch das aber nicht den Table kompos. Nehme besser die Querys ansonsten wird es sehr schwer werden, denke ich.
Wenn jetzt noch Fragen auftauchen, dann einfach fragen. |
Re: Datensatz auswählen, mit ListBox oder ComboBox
Ok, mache ich. Danke für denn Tip.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz