Suche nach einem bestimmten Datensatz(gelöst)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

THW1905
Beiträge: 8
Registriert: So, 10.03.2013 19:48

Suche nach einem bestimmten Datensatz(gelöst)

Beitrag von THW1905 »

Hallo,
ich heiße Tobias, bin neu hier und habe noch nicht viel Ahnung von Base.
Ich habe folgendes Problem und hoffe Ihr könnt mir weiterhelfen.
Ich bin dabei eine Datenbank zur Fahrzeugverwaltung zu basteln.
Tabellen:
- Kunden>ID,Kunde
- Fahrzeuge>ID,Kennzeichen,Flottennummer
- Bestand>ID,Kunde,Kennzeichen,Flottennummer,Eingangsdatum,KV höhe in €, KV Erstellungsdatum, KV Freigabedatum, Ausgangsdatum,Auftrag angelegt,KundeID, FahrzeugID.
- Suche>ID,Suchtext
Ich habe nun ein Formular auf Basis der Tabelle"Bestand" erstellt und mit "Kunde"und "Fahrzeuge" eine Beziehung hergestellt. Die Kunden suche ich über eine Listbox. Das klappt gut. Aber die Fahrzeugauswahl klappt nicht richtig. Kennzeichen und Flottennummer wähle ich momentan auch über Listboxen aus, nur das Problem ist, ich kann ein anderes Kennzeichen zu einer Flottennummer und umgekehrt als in der Tabelle"Fahrzeuge", als Datensatz hinterlegt ist auswählen.
Nun habe ich das schon mit der Hilfstabelle "Suche" und einer Abfrage probiert. Auch das klappt nicht sorecht.
Prinzipiell möchte ich einen Kunden aus der Tabelle Kunden und ein Fahrzeug aus der Tabelle"Fahrzeuge" auswählen und in die Tabelle "Bestand" schreiben. Das klappt ja auch, bis auf die Fahrzeuge.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und Ihr könnt mir weiterhelfen.

Mfg.
Tobi
Dateianhänge
Neue Datenbank.odb
(39.06 KiB) 56-mal heruntergeladen
Zuletzt geändert von THW1905 am Mo, 11.03.2013 06:47, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Suche nach einem bestimmten Datensatz

Beitrag von RobertG »

Hallo Tobi,

der Fehler liegt daran, dass Du auf einen Datensatz mit zwei Auswahlfeldern zugreifen willst. Alle beide sollen die FahrzeugID in die Bestandstabelle schreiben (habe jetzt gar nicht erst Deine Datenbank herunter geladen...)
Mach daraus ein gemeinsames Listenfeld.
Wenn Du das Listenfeld für das Kennzeichen öffnest, dann müsste unter dem Reiter "Daten" ungefähr der folgende SQL-Befehl stehen:

Code: Alles auswählen

SELECT "Kennzeichen", "ID" FROM "Fahrzeuge"
Mache daraus:

Code: Alles auswählen

SELECT "Kennzeichen"||', '||"Flottennummer", "ID" FROM "Fahrzeuge" ORDER BY "Kennzeichen"||', '||"Flottennummer"
Damit stellst Du die Kennzeichen und die Flottennummer gleichzeitig in einem Listenfeld, getrennt durch ein Komma, dar.

Gruß

Robert
THW1905
Beiträge: 8
Registriert: So, 10.03.2013 19:48

Re: Suche nach einem bestimmten Datensatz

Beitrag von THW1905 »

Hallo Robert,
danke für die schnelle Hilfe.
Das klappt gut, aber nun wird mir beim Speichern in der Tabelle Bestand das Kennzeichen und die Flottennummer in einem Feld gespeichert.Wie kann ich das ändern, so dass das Kennzeichen und die Flottennummer wieder in der Tabelle Bestand in den entsprechenden Feldern gespeichert werden.


Mfg.
Tobi
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Suche nach einem bestimmten Datensatz

Beitrag von F3K Total »

Hi,
in die Tabelle Bestand schreibst du nur den jeweiligen Primärschlüssel (ID) von Kunde und Fahrzeug, am Besten mit einem Listenfeld.
Damit du dann den Kundennamen, das Fahrzeugkennzeichen und die Flottennummer dazu sehen kannst, ist eine Abfrage eine Möglichkeit.
Im Beispiel anbei: q_Bestand
Die Abfrage ist Grundlage des Formulares "Bestand", wie du im Bearbeitungsmodus des Formulares sehen kannst.
Zu besseren Übersichtlichkeit habe ich das Formular von "nur Daten eingeben" zurück auf die Standardeinstellung gesetzt, damit du sehen kannst, welche Daten du erfasst hast. Ausserdem habe ich, zur einfachen Auswahl des aktuellen Datensatzes, ein Tabellenkontrollfeld zugefügt.

Viel Erfolg
Gruß R
Dateianhänge
Fahrzeugverwaltung.odb
(40.91 KiB) 76-mal heruntergeladen
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Suche nach einem bestimmten Datensatz

Beitrag von RobertG »

Hallo Tobi,

da überschneiden sich jetzt die Beiträge von R und mir - aber der Tenor ist der gleiche:

da liegt ein Denkfehler vor:
Bestand>ID,Kunde,Kennzeichen,Flottennummer,Eingangsdatum,KV höhe in €, KV Erstellungsdatum, KV Freigabedatum, Ausgangsdatum,Auftrag angelegt,KundeID, FahrzeugID.
Ist vom Aufbau her falsch. Es müsste sein:
Bestand>ID,Eingangsdatum,KV höhe in €, KV Erstellungsdatum, KV Freigabedatum, Ausgangsdatum,Auftrag angelegt,KundeID, FahrzeugID.
Denn nur so vermeidest Du Doppler zwischen den Einträgen. Die Kundenzuordnung liegt in KundeID, die Fahrzeugzuordnung in FahrzeugID.
Zum Suchen brauchst Du jetzt nicht die Tabelle "Bestand", sondern eine Abfrage, die alle Felder zusammenfasst:

Code: Alles auswählen

SELECT "Bestand".*, "Kunden"."Kunde", "Fahrzeuge"."Kennzeichen", "Fahrzeuge"."Flottennummer" FROM "Bestand" LEFT JOIN "Kunden" ON "Bestand"."KundenID" = "Kunden"."ID" LEFT JOIN "Fahrzeuge" ON "Bestand"."FahrzeugID" = "Fahrzeuge"."ID"
In dieser Abfrage kannst Du jetzt vernünftig suchen.
Doppelte Eintragungen in verschiedenen Tabellen sollten so weit wie möglich vermieden werden. Und Die Fremdschlüssel "KundenID" und "FahrzeugID" weisen ja auf die Einträge in anderen Tabellen hin.

Gruß

Robert
THW1905
Beiträge: 8
Registriert: So, 10.03.2013 19:48

Re: Suche nach einem bestimmten Datensatz

Beitrag von THW1905 »

Danke Euch beiden für die schnelle Hilfe. Klar voller Denkfehler. Alleine wäre ich nich drauf gekommen.Danke

Mfg.
Tobi
Antworten