![]() |
TADOQuery und IndexFieldnames
Hallo,
Ich möchte eine in einem DatabaseGrid dargestellte TADOTable zur Laufzeit nach den Feldern sortieren. Hierfür möchte ich keine TADOQry nutzen, da ich die TADOTable in dem Form brauche. Wenn ich zur Entwicklungszeit die IndexFieldNames auf das zu sortierende Feld setze, dann sortiert die Tabelle Korrekt. Nu habe ich aber das Problem, daß in dem Formulra über das DBGrid die Propertdie Indexfieldname nicht zu erreichen ist.
Delphi-Quellcode:
Wie kann ich diese Property trotzdem ändern, ohne die TADOTable selber mit dan das Formular zu übergeben.
dbgrRoehrchen.DataSource.DataSet.IndexFieldNames := 'article_id';
Vielen Dank, ALexander |
Re: TADOQuery und IndexFieldnames
Hallo Alexander,
hast Du in deinem Formular in der uses-Klausel die Unit mit der Tabel angegeben? |
Re: TADOQuery und IndexFieldnames
Nein, habe ich nicht.
Aber das soll auch nicht. Das Formular soll nur über das DBGrid auf die Daten zugreifen können. Mit den Feldern Funktioniert das auch. Ich versuche die Uses verknüpfungen aus übersichts Gründen so gering wie möglich zu halten. Letztendlich muß ich für die Objektklasse ja nur ADODB einbinden und das ist auch drinne. Hmmm, noch ne Idee? Thx Alexander |
Re: TADOQuery und IndexFieldnames
Hallo,
Ich habe jetzt folgenden Code erstellt. Da das Dataset ja ein TDataset ist, dachte ich ,daß ich einen Cast auf TADOTable machen könnte. Das klappt aber nicht. Muß ich wirklich direkt über die Unit auf die Tabelle zugreifen? Eigentlich möchte ich dem Formular die Tabelle übergeben und nicht Direkt drauf zugreifen.
Delphi-Quellcode:
THX
procedure TfrmVerpackung.lcmbCustomerCloseUp(Sender: TObject);
var tblToFilter: TADOTable; begin tblToFilter := lcmbProduct.DataSource.DataSet AS TADOTable; if lcmbCustomer.KeyValue <> 0 then begin tblToFilter.Filter := 'Where customer_id = '+ inttostr(lcmbCustomer.KeyValue) +''; tblToFilter.Filtered := true; end else tblToFilter.Filtered := false; end; Alexander |
Re: TADOQuery und IndexFieldnames
Ich würde bei solchen Anwendungen (Umsortieren nach beliebigen Spalten etc., Unabhängigkeit vom tatsächlichen DataSet) über ein TClientDataSet im Form nachdenken. TClientDataSet dann über einen TDataSetProvider mit dem TADOTable verbinden - Nachteil/Vorteil: die Verarbeitung/Sortierung etc. findet komplett clientseitig statt ...
|
Re: TADOQuery und IndexFieldnames
Ok, das klingt vernünftig. Habe das jetzt mal so aufgebaut:
DataSetPrivider->ClientDataset->DataSource->DBGrid. Beim ersten Test hatte das auch fonktioniert. Aber jetzt beim zweiten, kann ich zwar das Clientdataset auf active:= True setzen. Beim ausführen des Programmes bekomme ich aber leider einen "Eigenschaft für Dataset Fehlt". Aber es sind alle Objects mit einander verknüpft. Woran kann das leigen? Gruß, Alexander |
Re: TADOQuery und IndexFieldnames
Das ClientDataSet macht eigentlich nur Sinn, wenn der User auch "Offline" Daten ändern & synchronisieren will oder der DB-Server 'ne Schnecke (= Single- / Uralt-CPU) ist.
|
Re: TADOQuery und IndexFieldnames
1 Frage:
Bedeutet das, daß das Clientdataset dann die Tabelle in eine Angegebene XML Datei sichert? 2 Frage: Wie kann ich das geschilderte Problem mit den fehlenden Datasetinfos lösen? Hab ja wie gesagt den Provider angegeben, und so hat es auch vorher schon mal funktioniert :-| thx, Alexander Hat sich geklärt. Das Formular mit dem referenzierten Dataset muß natürlich im Projektmanager in der Form-Reihenfolge über das bearbeitete Form gesetzt werden, damit es schon existiert. :idea: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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