AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi automatisch vom Detail-Datensatz den Masterdatensatz lesen
Thema durchsuchen
Ansicht
Themen-Optionen

automatisch vom Detail-Datensatz den Masterdatensatz lesen

Ein Thema von Hansa · begonnen am 25. Jan 2004 · letzter Beitrag vom 26. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

automatisch vom Detail-Datensatz den Masterdatensatz lesen

  Alt 25. Jan 2004, 19:24
Hi,

es geht um folgendes (Beispiel) : ich lese nacheinander mehrere Artikel und will zu dem gerade gelesenen die zugehörige Warengruppe gleich mit lesen. Die Artikel-Table enthält für diesen Zweck einen Foreign-Key auf die Warengruppen.

Ich habe zwei Datasets für beide Tabellen und eine Datasource. Wo und wie muß ich das ganze jetzt verknüpfen ? Ich habe versucht die Datasource der Warengruppe zuzuordnen usw. Wie muß ich das genau machen ?? Welche Felder müssen wo hin und wo muß an den SelectSQL etwas geändert werden ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 25. Jan 2004, 19:40
Hallo Hansa!

Du muss zuerst einen Datensatz aus der Artikel-Tabelle lesen, dann hast Du den Foreign-Key um auf die Warengruppe zu referenzieren.
nun machst Du ein Select auf die Warengruppen-Tabelle und suchst anhand des Foreign-Key's die zum Artikel gehörende Warengruppe heraus.

Gruß,
Steffen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 25. Jan 2004, 20:34
Soweit so gut. Nur will ich das automatisch machen und dieses Verhalten auch notfalls abschalten können. Sobald ein neuer Artikel ausgewählt wurde, will ich den Zugriff auf die Warengruppe haben, da ich deren ID brauche. Wie verbinde ich jetzt die DataSource mit dem (welchem) Dataset und sage dem Programm, wenn sich der Detailsatz (Artikel) ändert, soll es mir anhand des Foreign Keys den zugehörigen Master (Warengruppe) raussuchen ?

Ich muß ja praktisch nur den Foreignkey des Details als Source für den Master verwenden, aber genau da habe ich mich jetzt verrannt. 8) Das ganze funktioniert bei einer m:n Beziehung (Rechnung/Positionen) einwandfrei und hier irgendwie nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#4

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 25. Jan 2004, 23:23
guckst Du meinen Beitrag: hier.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 11:47
Mit 2 Grids klappt das schon. Aber es geht mir nicht um irgendeine visuelle Anzeige, sondern darum:

Lese Artikel und alle zugehörigen Stammdaten. Also die Funktionalität wie bei dem Grid (mit Angabe Datasource etc.), aber ohne das Grid. Ich glaube mit einer Stored Procedure könnte das gehen. Dann müßte ich aber alles von Hand zu Fuß machen, je nachdem wieviele Master/Detail Tabellen beteiligt sind. 8) Optimal wäre es, zu sagen : Lese Artikel und alle Stammdaten (Ja oder Nein).
Gruß
Hansa
  Mit Zitat antworten Zitat
jlanger

Registriert seit: 26. Jan 2004
Ort: Wittlich
15 Beiträge
 
#6

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 12:45
Zitat von Hansa:
Soweit so gut. Nur will ich das automatisch machen und dieses Verhalten auch notfalls abschalten können. Sobald ein neuer Artikel ausgewählt wurde, will ich den Zugriff auf die Warengruppe haben, da ich deren ID brauche. Wie verbinde ich jetzt die DataSource mit dem (welchem) Dataset und sage dem Programm, wenn sich der Detailsatz (Artikel) ändert, soll es mir anhand des Foreign Keys den zugehörigen Master (Warengruppe) raussuchen ?
Du willst den Zugriff auf die Warengruppe haben, weil du deren ID brauchst? Deren ID ist doch im Artikel abgelegt????? Die ID der Warengruppe ist doch als Feld im Artikel abgelegt. Dann hast du diese ja direkt.
Ich verstehe nicht, was du willst.
Jenachdem ist evtl. ein Lookup das richtige, aber bevor ich weiss, was du willst, kann ich es dir nicht sagen.


Zitat von Hansa:
Ich muß ja praktisch nur den Foreignkey des Details als Source für den Master verwenden, aber genau da habe ich mich jetzt verrannt. 8) Das ganze funktioniert bei einer m:n Beziehung (Rechnung/Positionen) einwandfrei und hier irgendwie nicht.
Hierzu kann ich dir mehr sagen, wenn du mir den oberen Teil erklärt hast.

Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#7

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 13:03
Dann schau Dir alternativ mal JOIN's an:
z.B.:
SQL-Code:
         SELECT A.idArtikel
              , A.ArtikelName
              , B.Preis
              , C.MengeAufLager
           FROM Artikel A
LEFT OUTER JOIN Preise B
             ON B.idArtikel = A.idArtikel
LEFT OUTER JOIN Bestand C
             ON C.idArtikel = A.idArtikel
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 13:06
Ich habe ein Grid mit Artikeln. Ordne ich dem eine Datasource "Warengruppe" zu, so kann ich diese in einem zweiten Grid anzeigen. Hat diese noch eine Warenhauptgruppe kann ich diese in einem dritten Grid anzeigen usw. usw. Im Prinzip kann ich also von Sub-Sub...Sub-Detail bis zum Master alles ansprechen. Nur brauche ich keine 10 Grids, sondern die IDs der entsprechenden Datensätze. Also Artikel lesen und eventuell alles was da dran hängt. Wenn ich den Artikel aber so lese : SELECT * FROM ARTIKEL #

was nützt mich das in diesem Zusammenhang ?? Das Grid macht das irgendwie intern mit der Datasource. Ich brauche so was, aber ohne Grid.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#9

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 13:12
Sohn, Du sollst leeeesen!

Wenn Du in obigem Beispiel die ID-Felder von Preis und Bestand mitselektierst,
kannst Du mit einer Abfrage:
Delphi-Quellcode:
if not DataSource.FieldByName('idPreis').IsNull then begin
  //Fülle die Preisfelder...
end;
arbeiten
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
jlanger

Registriert seit: 26. Jan 2004
Ort: Wittlich
15 Beiträge
 
#10

Re: automatisch vom Detail-Datensatz den Masterdatensatz les

  Alt 26. Jan 2004, 13:31
Zitat von Hansa:
Ich habe ein Grid mit Artikeln. Ordne ich dem eine Datasource "Warengruppe" zu, so kann ich diese in einem zweiten Grid anzeigen. Hat diese noch eine Warenhauptgruppe kann ich diese in einem dritten Grid anzeigen usw. usw. Im Prinzip kann ich also von Sub-Sub...Sub-Detail bis zum Master alles ansprechen. Nur brauche ich keine 10 Grids, sondern die IDs der entsprechenden Datensätze. Also Artikel lesen und eventuell alles was da dran hängt. Wenn ich den Artikel aber so lese : SELECT * FROM ARTIKEL #

was nützt mich das in diesem Zusammenhang ?? Das Grid macht das irgendwie intern mit der Datasource. Ich brauche so was, aber ohne Grid.
Ich weiss schon, warum ich ich eben gesagt habe, du sollst mal erklären was du willst!

Ich analysiere einmal, was du schreibst:
...Ich habe ein Grid mit Artikeln...
Du hast also ein DBGrid, dem du eine DataSource zugeordnet hast, die auf ein DataSet mit Artikeln zeigt.
...Ordne ich dem eine Datasource "Warengruppe" zu, so kann ich diese in einem zweiten Grid anzeigen...
Wenn du diesem Grid (so hast dus geschrieben) eine DataSource Warengruppe zuordnest, kannst due diese in einem zweiten Grid anzeigen. Ich würde sagen, die wird dann von dem 1.Grid angezeigt. Oder meinstest du, wenn du der Datasource eine Datasource Warengruppe zuordnest? Dann musst du die Abfrage der Query ja auch entsprechend gestalten, bzw. bei Verwendung von TTable's o.ä. die MasterSource etc. der 1.Table (Artikel) entsprechend setzen. D.h. du hast in der Artikeltabelle z.b. ein Feld "Warengruppe" in dem die ID der Warengruppe steht (oder wie machst du es sonst?).

Meine Frage oben war also absolut berechtigt. "du willst die Warengruppe haben, weil du deren ID brauchst." Hm, ich denke mal, du hast deren ID in der Artikeltabelle und willst die anderen Datenfelder der Warengruppe haben. Ist es so?

Genau deshalb habe ich gefragt, was du eigentlich willst!
  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 17:31 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