AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie geht man mit zusammengesetzten Primärschlüsseln um?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie geht man mit zusammengesetzten Primärschlüsseln um?

Ein Thema von Der schöne Günther · begonnen am 11. Mär 2014 · letzter Beitrag vom 12. Mär 2014
 
Der schöne Günther

Registriert seit: 6. Mär 2013
6.201 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Wie geht man mit zusammengesetzten Primärschlüsseln um?

  Alt 11. Mär 2014, 13:25
Ja, der Fremdschlüssel soll auch aus beiden Feldern bestehen. Wird aus der unbeholfenen Textdarstellung wohl nicht wirklich deutlich.

Ich habe beiden Tabellen mal ein künstliches Feld (Typ: String) hinzugefügt. Ist
artikel_id1 = 5
artikel_id2 = 536
dann ist
Artikel_idCOMBINED = 5.536

Das war einfacher als gedacht und klappt auch. Nur leider kommt die Lookup-Combobox, oder eher: Das DataSource damit nicht zurecht. Bei Anwendungsstart fliege ich mit einer Exception, dass er ein Feld mit diesem Namen nicht finden kann, raus.

Wen es interessiert, hier der Callstack:


Code:
:7672c41f KERNELBASE.RaiseException + 0x58
FireDAC.Stan.Error.FDException(???,???,???)
FireDAC.Stan.Error.FDException($2F5C180,???,2,???)
FireDAC.DatS.TFDDatSNamedList.ErrorNameNotFound('meineTabelle_idCOMBINED')
FireDAC.DatS.TFDDatSNamedList.ItemByName('meineTabelle_idCOMBINED')
FireDAC.DatS.TFDDatSBindedList.ItemByName('meineTabelle_idCOMBINED')
FireDAC.DatS.TFDDatSColumnList.ColumnByName('meineTabelle_idCOMBINED')
FireDAC.DatS.TFDDatSColumnSublist.Fill(???,'meineTabelle_idCOMBINED',nil,nil)
FireDAC.Comp.DataSet.TFDDataSet.InitLocateRow('meineTabelle_idCOMBINED','1.43')
FireDAC.Comp.DataSet.TFDDataSet.LocateRecord('meineTabelle_idCOMBINED','1.43',[],-1)
FireDAC.Comp.Client.TFDTable.InternalLocateEx('meineTabelle_idCOMBINED','1.43','',[],nil)
FireDAC.Comp.Client.TFDTable.LocateEx(???,'1.43',???,nil)
FireDAC.Comp.DataSet.TFDDataSet.Locate('meineTabelle_idCOMBINED','1.43',???)
Vcl.DBCtrls.TDBLookupControl.LocateKey
Vcl.DBCtrls.TCustomDBLookupComboBox.KeyValueChanged
Vcl.DBCtrls.TCustomDBLookupComboBox.UpdateListFields
Vcl.DBCtrls.TListSourceLink.ActiveChanged
Data.DB.TDataLink.SetActive(???)
Data.DB.TDataLink.UpdateState
Data.DB.TDataLink.DataEvent(???,0)
Data.DB.TDataSource.NotifyLinkTypes(deUpdateState,0,True)
Data.DB.TDataSource.NotifyDataLinks(deUpdateState,0)
Data.DB.TDataSource.SetState(???)
Data.DB.TDataSource.UpdateState
Data.DB.TDataSet.AddDataSource($2FC89B0)
Data.DB.TDataSource.SetDataSet($2F87910)
System.TypInfo.SetOrdProp(???,???,???)
System.Classes.TPropFixup.ResolveReference(???)
System.Classes.GlobalFixupReferences
System.Classes.TReader.ReadRootComponent($2F222C0)
System.Classes.TStream.ReadComponent($2F222C0)
System.Classes.InternalReadComponentRes(???,???,$2F222C0)
System.Classes.InitComponent(TMainForm)
System.Classes.InitInheritedComponent($2F222C0,TForm)
Vcl.Forms.TCustomForm.Create(???)



Ich glaube, ich bin alle hieraus resultierenden Übel selbst schuld. Einfach einen künstlichen Primärschüssel nehmen und das ganze Artikelnummer-Geraffel in eine neue Tabelle auslagern. Das wäre wohl in jeder Hinsicht besser.
  Mit Zitat antworten Zitat
 


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 19:26 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