AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere MasterSources von einer Tabelle??
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere MasterSources von einer Tabelle??

Ein Thema von buyden · begonnen am 3. Nov 2004 · letzter Beitrag vom 12. Nov 2004
Antwort Antwort
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#1

Mehrere MasterSources von einer Tabelle??

  Alt 3. Nov 2004, 20:04
Hi,

Ich hab mal wieder ne kleine Datanbankfrage. Folgende Situation:

Ich hab ne MySQL DB mit den ZEOS-Komponenten angebunden. Das Programm soll ne Reparaturdatenbank für PCs werden.

Ich hab also ne Tabelle "Auftrag", in der sämtliche allgemeinen Daten zu einer Reparatur gespeichert werden. Außerdem sollen noch sämtliche Komponenten, die in dem zu einem Auftrag gehörenden PC verbaut sind aufgenommen werden. Also hab ich ne Tabelle "Artikel" in der sämtliche verfügbaren Einzelteile stehen. Diese möchte ich über ne Verbindungstabelle namens "Verbaut" miteinander verbinden.
Ich hab also bei den Haupttabellen jeweils die Verbindungstabelle als MasterSource angegeben und als Masterfield den entsprechenden Fremdschlüssel.

Sollte doch soweit richtig sein oder??

Jetzt brauche ich aber auch noch eine Tabelle in der ich aufnehme, welche Komponenten für den jeweiligen Auftrag bestellt sind. Ich müsste also die Tabelle "Auftrag" über ne weitere Verbindungstabelle "Bestellt" mit der "Artikel"-Tabelle verbinden, in MasterSource und Masterfield steht ja aber schon die andere Tabelle drin.

Wie geht man denn in so nem Fall vor???
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Mehrere MasterSources von einer Tabelle??

  Alt 4. Nov 2004, 08:41
Zitat von buyden:
Hi,

Ich hab mal wieder ne kleine Datanbankfrage. Folgende Situation:

Ich hab ne MySQL DB mit den ZEOS-Komponenten angebunden. Das Programm soll ne Reparaturdatenbank für PCs werden.

Ich hab also ne Tabelle "Auftrag", in der sämtliche allgemeinen Daten zu einer Reparatur gespeichert werden. Außerdem sollen noch sämtliche Komponenten, die in dem zu einem Auftrag gehörenden PC verbaut sind aufgenommen werden. Also hab ich ne Tabelle "Artikel" in der sämtliche verfügbaren Einzelteile stehen. Diese möchte ich über ne Verbindungstabelle namens "Verbaut" miteinander verbinden.
Ich hab also bei den Haupttabellen jeweils die Verbindungstabelle als MasterSource angegeben und als Masterfield den entsprechenden Fremdschlüssel.

Sollte doch soweit richtig sein oder??

Jetzt brauche ich aber auch noch eine Tabelle in der ich aufnehme, welche Komponenten für den jeweiligen Auftrag bestellt sind. Ich müsste also die Tabelle "Auftrag" über ne weitere Verbindungstabelle "Bestellt" mit der "Artikel"-Tabelle verbinden, in MasterSource und Masterfield steht ja aber schon die andere Tabelle drin.

Wie geht man denn in so nem Fall vor???
Guten Morgen Mr. Anderson,

ich denke nicht, dass dein Vorgehen richtig ist.
Wenn ich dich richtig verstanden habe, dann möchtest du bei Auswählen eines Auftrages die verbauten und bestellten Artikel aufgelistet sehen.
Das heißt, die Auftragstabelle ist auf jeden Fall Master!
Du kannst in diesem Fall nicht die Verbindungstabelle als Master angeben, sondern musst über die Verbindungstabelle den jeweiligen Artikel auflösen, ungefähr so:
SELECT Verbaut.Auftrag_ID, Artikel.* FROM Verbaut, Artikel WHERE Verbaut.Artikel_ID = Artikel.Artikel_ID Jetzt kannst du bei dieser Datenmenge die Auftrags-Datenmenge als Master (über Auftrag_ID) angeben, so dass alle verbauten Artikel des gewählten Auftrags angezeigt werden. Ebenso musst du mit den bestellten Artikeln vorgehen.

MfG
Stevie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Mehrere MasterSources von einer Tabelle??

  Alt 4. Nov 2004, 09:10
Zwischen den Tabellen Auftrag und Artikel besteht eine N:M Beziehung.
  • Ein Auftrag kann beliebig viele Artikel haben
  • Ein Artikel kann in beliegig vielen Aufträgen benützt werden
Diese Beziehung wird über die Tabelle Verbaut hergestellt.
Die Tabelle enthält beide Primärschlüsselfelder (IdAuftrag & IdArtikel).
Beide Felder zusammen bilden den Primärschlüssel für die Tabelle Verbaut.
Jetzt der Trick:
Die Tabelle Verbaut enthält zusätzlich noch das Feld ArtikelStatus.
0 = keine Info, 1 = Artikel verbaut, 2 = Bauteil defekt
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mehrere MasterSources von einer Tabelle??

  Alt 5. Nov 2004, 05:16
@stevie
Ich glaub da hatte ich ein grundsetzliches Verständnisproblem. Ich war in der Vorstellung, dass man die Tabellen in etwa so wie bei Access verknüpfen kann. Auf die Idee, das über ne Abfrage zu machen bin ich nicht gekommen

Eben nur ein Mensch

Ich werd das mal so versuchen.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mehrere MasterSources von einer Tabelle??

  Alt 5. Nov 2004, 16:21
Mit dem Anzeigen ist ja mittlerweile klar. Ich stelle das Query in nem DBGrid dar, jetzt wäre es schön, wenn ich in diesem Grid Datensätze hinzufügen könnte, das Query kann doch aber nur lesen.

Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Mehrere MasterSources von einer Tabelle??

  Alt 10. Nov 2004, 08:49
Gibt's denn ne Möglichkeit, das ich das Query so gestalte, dass ich sowohl die Verknüpten Felder anzeigen lasse, gleichzeitig aber auch über das DBgrid mit dem es verbunden ist Datensätze einfüge? Ich möchte nicht extra noch ne Eingabemaske dafür erstellen.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Mehrere MasterSources von einer Tabelle??

  Alt 10. Nov 2004, 09:23
Hallo buyden,

also mit Queries kannst du auch Datensaätze einfügen, indem du die Eigenschaft RequestLive mal auf True setzt. Das aber nur am Rande, denn bei deinem SQL Statement ist ein direktes Editieren eher nicht möglich, aber versuchen kannst dus. Scheiterts, dann ist die Komponente TUpdateSQL für dich eine Lösung.

Wie sieht denn dein SQL Befehl aus, welches dir die Daten im DBGrid liefert.

Übrigens noch was. Persönlich vermeide ich immer das Verwenden von Mastersource etc. Bedenke dabei, daß sämtliche Daten erst beim Client gefiltert werden. Bei großen Datenmengen ist dann wohl jedesmal Kaffee kochen angesagt, wenn du die Tabellen öffnest.

Gruß,
  Mit Zitat antworten Zitat
Hansa

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

Re: Mehrere MasterSources von einer Tabelle??

  Alt 10. Nov 2004, 09:35
Zitat von Jelly:
. Bei großen Datenmengen ist dann wohl jedesmal Kaffee kochen angesagt, wenn du die Tabellen öffnest.
Stimmt nur zum Teil. Je nach Komponente geht das schon gut. Bei FIBplus z.B. kann man ein Zeitintervall einstellen, ab dem die Detaildaten nachgeladen werden. Scrollt man also relativ schnell durch die Daten, so wird NICHTS nachgeladen. Das ganze ist dann dementsprechend schnell. Erst wenn ich zu lange auf dem Datensatz drauf bleibe, passiert was.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Mehrere MasterSources von einer Tabelle??

  Alt 10. Nov 2004, 09:46
Zitat von Hansa:
Bei FIBplus z.B. kann man ein Zeitintervall einstellen, ab dem die Detaildaten nachgeladen werden.
Aber was ändert das an der Problematik, daß trotzdem alle Datensätze bei Öffnen der Tabelle zum Client wandern, und die dort eben zeitversetzt gefiltert werden. Wenn du erst mal eine Datenbank mit 1 Million Aufträgen, 100000 Artikel hast, werden diese gesamten Daten jedesmal zum Client gesendet. Das Verlinken mit Mastersource im im Endeffetk dasselbe wie wenn du manuell in der TQuery komponente einen Filter setzt. Besser ist es, dir gleich nur dir notwendigen Daten vom Server schicken zu lassen, indem du deine SQL Anfrage antsprechend einschränkst.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Mehrere MasterSources von einer Tabelle??

  Alt 12. Nov 2004, 08:45
@ Jelly

Ich hab die RequestLive-Eigenschaft auf true gesetzt, ich bekomme aber immer den Fehler, das er nicht mehrere Datenquellen über das Query aktualisieren kann. Ich hab jezt das mit dem Hinzufügen von Datensätzen in die Verbaut-Tabelle über ein weiteres DBgrid, in dem ich die Artikeltabelle darstelle, gelöst. Beim Doppelklick auf einen Datensatz wird dessen Inhalt und die aktuelle Auftragsnummer in die Verbaut-Tabelle übertragen. Trotzdem müsste ich in das Verbaut-dbgrid noch die Seriennummer eintragen können, wobei er mich ja wie gesagt anschreit.
Mit TUpdateSQL hab ich noch nicht gearbeitet.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:56 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