AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [Access] Tabelle hat Beziehung mit sich selbst
Thema durchsuchen
Ansicht
Themen-Optionen

[Access] Tabelle hat Beziehung mit sich selbst

Ein Thema von hans ditter · begonnen am 28. Nov 2011 · letzter Beitrag vom 5. Dez 2011
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 28. Nov 2011, 15:45
sowas?
Angehängte Grafiken
Dateityp: png Ref.png (9,6 KB, 40x aufgerufen)
Dateityp: png Begeg.png (6,5 KB, 17x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 29. Nov 2011, 16:44
Hallo Bummi,

ja, ich schätze schon. Wobei ich feststellen musste, dass nicht das das wirkliche Problem ist, sondern etwas anderes... Trotzdem danke für deine Mühe!

Ich hol dafür nochmal etwas weiter aus. Mannschaften werden mit einem Schlüssel gespeichert, der automatisch weiterzählt.
Wenn ich jetzt eine neue Begegnung per Formular erstellen möchte, dann möchte ich aber nicht den Primärschlüssel eingeben müssen, sondern den Namen der Mannschaft. Ich dachte, dass wäre das Problem mit der Beziehung, aber scheinbar nicht...

Kann mir dazu noch jemand weiterhelfen?

hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 29. Nov 2011, 16:47
Willst Du den Namen händisch eingeben? Ich würde ja eine ComboBox nehmen, in der die Mannschaften gelistet werden. Die ID der jeweiligen Mannschaft kann man ja unsauber gecastet in den Objects ablegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 29. Nov 2011, 21:54
@DeddyH: deine Antwort klingt unendlich schlau.... aber das sagt mir grade leider gar nichts.

Würdest du dich da bitte nochmal ein wenig erklären? Ich bin noch mitgekommen, dass man eine Combobox nehmen sollte, in der die Namen aller Mannschaften stehen. Aber das mit "ID in Object casten" hab ich dann nicht mehr gerafft.

hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 29. Nov 2011, 22:12
Mir ist noch nicht ganz klar wie Du das aufziehen willst.
Wenn man es von der Tabellenkomponentenseite angehen kann könntest Du das Dataset mit den Begegnungen um zwei Lookupfelder erweitern die in der Mannschaftstabelle nachschlagen.
Also neues Feld, Feldtyp nachschlagen,Schlüsselfelder BMan1,Datenmenge DatasetManschaft,Schlüssel IDMannschaft, Ergebnisfeld Bezeichnung Mannschaft, das ganze für 2 Felder.
Die Felder kannst Du aus dem Feldeditor auf die Oberfläche ziehen, das werden dann DBLookupcomboboxen, oder direkt in einem DBGrid verwenden (werden dort auch als Comboboxen angezeigt).

Wenn Du datengebunden ohne Lookupfelder arbeiten möchtest kannst Du auch eine DBLookupcombobox verwenden, Datafield und Datasource leer lassen und nur ListSource,ListField und Keyfield versorgen (aus dem Manschftendataset) Keyvalue kannst Du verwenden um die ID für die angezeigte Mannschaft zu bekommen.

Wenn Dir das alles nicht taugt wirst Du vorzugsweise Objekte basteln und um die Ecke in die Datenbank fassen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 30. Nov 2011, 07:15
Man könnte eine Routine schreiben, die die Mannschaften ermittelt und in einem TStrings-Objekt ablegt:
Delphi-Quellcode:
procedure TDeinForm.ListTeams(OutList: TStrings; ExcludeID: integer = 0);
begin
  Assert(Assigned(OutList));
  OutList.BeginUpdate;
  try
    OutList.Clear;
    Query.SQL.Text := 'SELECT ID, Name FROM Mannschaften WHERE ID <> :id ORDER BY Name';
    Query.ParamByName('ID').Value := ExcludeID;
    Query.Open;
    while not Query.EOF do
      begin
        OutList.AddObject(Query.FieldByName('Name').AsString,
          TObject(Query.FieldByName('ID').AsInteger));
        Query.Next;
      end;
    Query.Close;
  finally
    OutList.EndUpdate;
  end;
end;
Damit könnte man dann 2 Standard-ComboBoxen befüllen:
Delphi-Quellcode:
ListTeams(cbbHeim.Items);
ListTeams(cbbGast.Items);
Um zu vermeiden, dass dieselbe Mannschaft als Heim- und Gastmannschaft zugewiesen werden kann, filtert man diese heraus, sobald eine Heimmannschaft ausgewählt wurde:
ListTeams(cbbGast.Items, integer(cbbHeim.Items.Objects[cbbHeim.ItemIndex])); Alles getippt und nicht getestet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: [Access] Tabelle hat Beziehung mit sich selbst

  Alt 30. Nov 2011, 14:18
oh Mist!!!! ich glaube da wurde ich gerade mal gigantisch missverstanden!

Wir müssen den Dateizugriff etc. pp. (also auch "Formulare", Abfragen etc) mit den Accesseigenen Mitteln machen! Wäre das mit Delphi, wüsste ich vermutlich sogar, wie ich's machen soll. Nur mit Access ist das immer alles so umständlich... ich hab da keinen Durchblick!

Ich hoffe ihr könnt mir dabei trotzdem helfen...

hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  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 07:36 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