AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellenverknüpfungen

Ein Thema von süden · begonnen am 20. Feb 2009 · letzter Beitrag vom 24. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
süden

Registriert seit: 20. Feb 2009
Ort: Lindau (Bodensee)
75 Beiträge
 
Delphi 2007 Professional
 
#1

Tabellenverknüpfungen

  Alt 20. Feb 2009, 10:41
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.

http://www.ocm-software.de/bilder/hppForm.JPG
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 10:52
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.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 10:53
Zitat:
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.
Immer würde es ja nicht passieren, außer du löscht die Einträge immer wieder wenn man nichts einträgt. Um das nicht im Programm machen zu müssen, könnte man ggf. auch eine Stored Procedure in der DB benutzen.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 10:59
Hallo,
Zitat von mquadrat:
Zitat:
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.
Immer würde es ja nicht passieren, außer du löscht die Einträge immer wieder wenn man nichts einträgt. Um das nicht im Programm machen zu müssen, könnte man ggf. auch eine Stored Procedure in der DB benutzen.
jenachdem wie es gemacht wird, reicht ja auch ein Left Join.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:02
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.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:19
Hallo,
Zitat von mquadrat:
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.
meiner Meinung nach erst dann, wenn auch Daten erfasst wurden. Das Anlegen eines Datensatztes ohne Inhalt halte ich nicht für erforderlich.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:24
Joa das ist die Frage. Liest sich im Beitrag halt so, dass er ohne Datensatz auch keine Controls anzeigen kann / will.

Zitat:
Der Benutzer skrollt auf dem Formular durch das Inhaltsverzeichnis, kann aber keine Daten eingeben, weil der Datensatz in der Detailtabelle fehlt.
  Mit Zitat antworten Zitat
süden

Registriert seit: 20. Feb 2009
Ort: Lindau (Bodensee)
75 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:26
Zitat von nahpets:
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.
Ich habe 2 ADO-Datasets geöffnet und mache ein Locate.

Die Frage ist, wie kommt der Impuls zum Anlegen eines neuen Detaildatensatzes wenn der Anwender editieren will.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:31
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.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Tabellenverknüpfungen

  Alt 20. Feb 2009, 11:40
Hallo,

würde das nicht reichen?
Delphi-Quellcode:
If ADODataSet2.Locate('Schlüsselspalte',ADODataSet1.FieldByName('Schlüsselspalte').AsString,[loCaseInsensitive]) then begin
  ADODataSet2.Edit;
end else begin
  ADODataSet2.Append;
end;
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.
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]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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