![]() |
Tabellenverknüpfungen
Hallo,
1) eine "Basistabelle" ca. 1000 Datensätze enthält sowas wie ein Inhaltsverzeichnis = ID, Nummer, Bezeichnung. Diese Basistabelle wird für eine Reihe von Formularen als Inhaltsverzeichnis in einem TreeView benutzt. zugehörig sind jeweils 2) diverse "Detailtabelle" 1:1 mit Detailangaben bei Klick auf den Übersichtseintrag wird über den Schlüssel der Datensatz gesucht. Die Basistabelle hat 1000 Datensätze, die verschiedenen Detailtabellen noch keine. Der Benutzer skrollt auf dem Formular durch das Inhaltsverzeichnis, kann aber keine Daten eingeben, weil der Datensatz in der Detailtabelle fehlt. Es wäre seltsam, wenn der Benutzer einen neuen Datensatz anlegen muß, obwohl er durch die Übersicht skrollen kann. Ich könnte natürlich abfragen: Wenn Datensatz vorhanden ok, wenn nicht anlegen. Aber das ist wohl ein ziemlicher Overhead weil es dann immer passiert. Wie kann man sowas machen? Verzeiht meine vielleicht dumme Frage, vielleicht ist es ganz einfach!? Hoffentlich habt Ihr meine Frage auch verstanden. ![]() |
Re: Tabellenverknüpfungen
Hallo,
erzähl' uns mal bitte, wie Du bisher die Daten holst: z. B. per SQL oder über TTable und Locate oder... Dann wird es eventuell einfacher, Dir eine für Dein konkretes Problem passenden Lösungsvorschlag zu machen. |
Re: Tabellenverknüpfungen
Zitat:
|
Re: Tabellenverknüpfungen
Hallo,
Zitat:
|
Re: Tabellenverknüpfungen
Klar, damit kann er entweder den zurückgelieferten Datensatz der Detailtabelle verwenden oder feststellen, dass es noch keinen gibt. Anlegen muss er dann aber trotzdem einen, damit die Verknüpfung aufgebaut werden kann.
|
Re: Tabellenverknüpfungen
Hallo,
Zitat:
|
Re: Tabellenverknüpfungen
Joa das ist die Frage. Liest sich im Beitrag halt so, dass er ohne Datensatz auch keine Controls anzeigen kann / will.
Zitat:
|
Re: Tabellenverknüpfungen
Zitat:
Die Frage ist, wie kommt der Impuls zum Anlegen eines neuen Detaildatensatzes wenn der Anwender editieren will. |
Re: Tabellenverknüpfungen
Nochmal ne Frage zur Datenstruktur
- Die Liste mit den Krankheitsbildern (?) gibt es die einmal für alle Patienten oder einmal je Patient? Deine Frage beantwortet sich daraus, was der Nutzer machen muss um zu editieren. Langt das draufklicken im Tree, dann muss das dein Impuls sein. Suchen -> wenn nicht gefunden -> anlegen. Alternativ kannst du die Eingabemaske auch immer anzeigen und einen Speichern-Knopf einbauen, der dann entweder den vorhandenen Datensatz aktualisiert oder eben einen neuen anlegt. |
Re: Tabellenverknüpfungen
Hallo,
würde das nicht reichen?
Delphi-Quellcode:
Im zweiten Dataset mit dem Schlüssel des ersten Dataset suchen, wenn gefunden, den zweiten Dataset in den Editiermodus setzen, andernfalls einen Datensatz mit Append anhängen.
If ADODataSet2.Locate('Schlüsselspalte',ADODataSet1.FieldByName('Schlüsselspalte').AsString,[loCaseInsensitive]) then begin
ADODataSet2.Edit; end else begin ADODataSet2.Append; end; Beim Speichern wird dann in beiden Fällen mit Post der Inhalt in die Datenbank geschrieben. Bei einem neuen Datensatz im zweiten Dataset könnte man aber auch noch entscheiden, ihn nicht zu schreiben, sofern alle Felder leer geblieben sind, sprich: keine Eingabe erfolgte. [EDIT]hat Schreibfehler gefunden[/EDIT] |
Re: Tabellenverknüpfungen
Der Bereich scheint aus meiner Sicht falsch zu sein. Verschieben deinen Thread mal nach Datenbanken, da kannst du auch gleich das verwendete DBMS angeben
|
Re: Tabellenverknüpfungen
Zitat:
|
Re: Tabellenverknüpfungen
Du scheinst das später nicht mehr zu können. Ich verschiebe es mal. Anschliessend kannst du ja die weiteren durch Editieren des 1. Beitrages ergänzen
|
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Die Delphi-IDE" nach "Datenbanken" verschoben.
Beitrag ist unter Datenbanken besser aufgehoben |
Re: Tabellenverknüpfungen
OK, ich habe für mich (erstmal) die Lösung.
1. Versuch - die Detaildatensätze leer lassen war nicht gut. Mit Locate findet er einen Datensatz, beim nächsten Skrollen in der Liste aber vielleicht nicht, dann bleibt der alte Detaildatensatz aktuell und passt nicht mehr zur Liste. Die Detailfelder zu leeren ist mir ohne großen Aufwand nicht gelungen. Lösung: Beim "onFocusChanged" des TreeView - wie oben - DeTaildatensatz entweder auf edit oder append. Dann werden nur die Detaildatensätze angelegt, de auch aktiv angeklickt wurden. Ist immerhin schon was. Übrigens, ich entwickel gerade eine Lernsoftware für Psychotherapie. Danke an Alle Gruß Heinz (süden) |
Re: Tabellenverknüpfungen
Zitat:
Tritt bei dir auch der Fehler auf, das ein Locate in der abhängigen Tabelle nicht funktioniert, sobald du den Datensatz der Haupttabelle wechselst ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz