AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Master-/Verweisproblem
Thema durchsuchen
Ansicht
Themen-Optionen

Master-/Verweisproblem

Ein Thema von TypusMensch · begonnen am 8. Sep 2003 · letzter Beitrag vom 9. Sep 2003
Antwort Antwort
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#1

Master-/Verweisproblem

  Alt 8. Sep 2003, 14:53
Schon wieder ein Problem mit Datenbanken.

Ich hab 2 Tabelle und ein Query. In etwa so:

Artikel.db (Tabelle):
- ANr *
- Bezeichnung
- Bestand
etc....

Verweis.db (Query):
- ID *
- Artikelnummer (Fremdschlüssel)
etc...

Wenn ich jetzt mittels SQL-Text die Anzahl der Einträge (z.b. suchen) von der Query (von DB: Verweis.db) ändere möchte ich auch noch eine Tabelle haben die mir genau nur diese Daten in einem einzelnen DBGrid angibt.

Beispiel:
In einer DBGrid mit Anschluss an die Query habe ich jetzt Artikelnummer 4,5 und 8, dann sollen auch in einer neuen DBGrid nur die Daten für Artikel 4,5 und 8 sein. Das hat was mit Master-Einstellung zu tun... aber irgendwie haut das nicht hin bei mir.
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Master-/Verweisproblem

  Alt 8. Sep 2003, 15:01
Wie wäre es wenn Du zu dem DataSet (Tabelle1) in dem Ereignis: AfterScroll einfach das DataSet von Tabelle2 entsprechend selektierst???
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Master-/Verweisproblem

  Alt 8. Sep 2003, 15:25
Zitat von samson:
Wie wäre es wenn Du zu dem DataSet (Tabelle1) in dem Ereignis: AfterScroll einfach das DataSet von Tabelle2 entsprechend selektierst???
??? Versteh ich jetzt nicht. Sorry... kannst du das ein bissel genauer erläuern?
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Master-/Verweisproblem

  Alt 8. Sep 2003, 17:20
ochhhh büdde.... hilfeee...
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Master-/Verweisproblem

  Alt 8. Sep 2003, 21:13
Hallo!

Sorry das ich nicht eher schreiben konnte.

Also. Ich vermute mal das Du zwei TDataSet (DST) Komponenten auf Deinem Formular hast, welche eine Verbindung mit einer DataSource (DS) haben.

Ich nenne sie hier: DST1 für Tabelle 1 und DST2 für Tabelle 2.
DataSource1 ist Verbunden mit DST1 und DataSource2 mit DST2.

Weiter gehe ich davon aus, das Du zwei TDBGrid komponenten in deinem Formular plaziert hast.

Ich möchte Dir das an einem Beispiel demonstieren. In dem Fall habe ich einen Rechnungskopf und einen Rechnungsheader.
Wenn ich in dem Rechnungskopf einen Datensatz anklicke (Grid1) möchte ich die Positionen zu dieser Rechnung in dem zweiten Grid angezeigt bekommen.

Also hätte ich, je nach Zugriffskomponente, folgende SQL-Anweisung für DST1 implementiert.

select * from rechnungskopf Wenn ich jetzt die zugeordneten Datensätze in dem zweiten Grid sehen möchte, muss ich ja die Datensätze in dem DST2 aktualisieren.

Also schreibe ich, in dem Ereignis 'OnAfterScroll' des DST1 folgende Anweisung:

Delphi-Quellcode:
DST2.Active := false;
DST2.SQL.Text := 'select * from rechnungsheader where NRRE = '+DST1.FieldByName('id').asString;
DST2.Active := true;
Somit hast Du die zugeordneten Datensätze in dem zweiten Grid selektiert und kannst Sie nach belieben bearbeiten.

Ich hoffe das ich Dir geholfen habe.

Gruss

Samson.
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Master-/Verweisproblem

  Alt 9. Sep 2003, 11:17
Hm, neee. Ich glaub so war das net gemeint.

Tabelle 1:
ID ANR
1 4
2 5
3 8

Tabelle 2:
ANR Name
4 Brot
5 Butter
8 Fisch

Wenn ich jetzt auf Tabelle1 ID 2 klicke, sehe ich auch nur Artikel Butter inner Tabelle 2. Ich will aber alle Daten sehen, die in Tabelle 1 vorhanden sind.

Oder versteh ich da was falsch??
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Master-/Verweisproblem

  Alt 9. Sep 2003, 11:49
Also wie ich das sehe, hast Du ein Datenbank Problem.

Nach deinem Schema, hätte ich eine 1:1 Beziehung. D. H. das genau ein Datensatz in einer anderen Entität zu meinem Datensatz gehört.

bsp.

Tabelle1

ID ARTNR
1 123
2 23
3 143
4 123

Tabelle2

ID Bezeichnung
123 Computer
23 Delphi
143 Monitor
123 Computer

Ist klar, dass er nach meinem Vorschlag auch nur die Zuordnungen anzeigt. Ich glaube das Du dein DB-schema etwas umbauen musst.

Tabelle3 (Beispiel Warengruppen)

id Bezeichnung
1 Hardware
2 Software

Tabelle1 (alte Verweistabelle)

NRWarengruppe NRArtikel
1 1
1 3
2 2
2 4

Tabelle2 (Artikel)

id Bezeichnung
1 Grafikkarte
2 Delphi 6.0 Enterprise
3 Motherboard
4 Delphi 7.0 Professional

Wenn du diese Datensätze (Tabelle1 und Tabelle3) im OnScroll-Ereignis des DataSets der Tabelle3 passend selektierst, dann bekommst Du die gewünschte Auswahl.

bsp.

in DBGrid mit DataSet von Tabelle3 wird der erste Datensatz mit der ID = 1 selektiert.

OnScroll selektiert:

Tabelle1 und Tabelle2

so wäre die Ausgabe im TDBGrid: Grafikkarte und Motherboard

Ich hoffe ich konnte helfen.

Gruss


Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Master-/Verweisproblem

  Alt 9. Sep 2003, 13:31
Ahhhhhh jetzt hab ich's gerafft....

Stellt sich nur die Frage wie löscht man dann in der Tabell 1 (Verweistabelle) einen Eintrag!?!? Man müsste ja vorher, so wie ich es jedenfalls immer tat, mit Locate suchen, naja, aber da man ja zwei Felder angeben muss, klappt das nicht.

Ich suche z.b. nach 1-3 (Hardware-Motherboard) und möchte diesen Verweis löschen, nicht Hardware, nicht Motherboard, nur den Verweis. Wie lokalisiere ich mich dann direkt auf diesen Verweis, um ihn mit Delete zu löschen???

Mit Locate sehe das ja so aus:
Zitat:
Datenbank.Locate('NRWarengruppe',1,[]);
Aber ich müsste nun nach NRWarengruppe=1 und NRArtikel=3 in einem suchen.... oder gibt es dafür wieder einen anderen Befehl???
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Master-/Verweisproblem

  Alt 9. Sep 2003, 14:21
Ich weiß, es müsste auch anders gehen, habe aber der Tabelle noch n Auto-Feld hinzugefügt, nach der man suchen kann

ThX für die Hilfe...

NACHTRAG:
Muss trotzdem nachnach suchen... shit... Gibt das ein Mittel mit ner Funktion herauszubekommen, ob dieser Verweis schon in der Tabelle steht. Ich muss das irgendwie prüfen.
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Master-/Verweisproblem

  Alt 9. Sep 2003, 15:02
Also!

DST1 ist Tabelle 1 (Verweise)
DST2 ist Tabelle 2 (Artikel)
DST3 ist Tabelle 3 (Warengruppen)

Wenn Du nun passend selektiert hast, hast Du in dem TDBGrid1 (Warengruppen) und in den TDBGrid2 (Artikel) nun die passenden Einträge selektiert.

Nun hast du DST2.fieldbyname('id').asstring
und DST3.fieldbyname('id').asstring

nun kannst Du eben mit einer kleiner Query den Eintrag aus der Verweistabelle löschen.

Delphi-Quellcode:
Function DeleteRecord;
var
  Query:TOracleQuery;
begin
  Query := TOracleQuery.Create(nil);
  try
    Query.session := oraclesession;
    Query.SQL.Text := 'delete from verweis where NRWarengruppe = '+DST3.fieldbyname('id').asstring + ' and NRArtikel = '+DST2.fieldbyname('id').asstring;

    Query.execute;
    DST3.Refresh;
  finally
    Query.free;
  end;
Hier arbeite ich mit Oracle-Zugriffskomponenten, sollte jedoch bei anderen so ähnlich sein.

Ich hoffe geholfen zu haben.

Gruss

Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  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 18:42 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