![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ole
adoset.fields(i) falsche Parameteranzahl
Ich wollte ein Beispiel, zum übernehmen von Daten aus Access in ein Stringgrid, ausprobieren.
Das Beispiel ist von TMS für die AdvStringGrid Komponenten. Dabei kommt der Fehler "ungültige Parameteranzahl" beim Aufruf von "adofield := adoset.fields(i);". adofield ist ein Variant.
Code:
Ich möchte mich mit dem direkten ansprechen des adodatasets beschäftigen, wo finde ich dazu nähere Informationen.
Procedure LoadFromADO(sg: TAdvStringGrid; mdb, table: String);
Var adoset: variant; adoconn: variant; adofield: variant; i, j: integer; Begin adoconn := CreateOLEObject('ADODB.Connection'); adoconn.Open('driver={Microsoft Access Driver (*.mdb)};dbq=' + mdb); adoset := adoconn.Execute('SELECT * FROM ' + table); sg.colcount := adoset.fields.count + 1; For i := 1 To adoset.fields.count - 1 Do Begin adofield := adoset.fields(i); sg.cells[i, 0] := adofield.Name; End; j := 1; While Not adoset.EOF Do Begin If (j > sg.rowcount) Then sg.rowcount := sg.rowcount + 1; For i := 1 To adoset.fields.count - 1 Do Begin adofield := adoset.fields(i); sg.cells[i, j] := adofield.Value; End; adoset.MoveNext; inc(j); End; adoset := unassigned; End; Das Beispiel habe ich mit Delphi2010 ausprobiert, vielleicht hat es damit etwas zu tun ? |
AW: adoset.fields(i) falsche Parameteranzahl
Habe jetzt festgestellt, dass dies ein defektes und nicht ganz aktuelles Beispiel ist.
Mit OLE hier zu arbeiten macht nicht viel Sinn, kann das ja auch mit ADO-Connect und Table oder Query machen. adofield := adoset.fields(i); muss adofield := adoset.fields[i-1]; sein, dann gibt es aber noch das Problem, wenn ein Feld leer ist, dann gibt es weiter unten beim Zuweisen wieder eine Fehlermeldung. adoset, adoconn und adofield sind sogenannte BlackBoxen, damit zu arbeiten macht gar keinen Spaß. Der Sinn könnte vielleicht darin bestehen, daß man keine DB-Komponenten installiert haben muss um damit zu arbeiten. In einer normalen aktuellen Delphi Version macht das aber, denke ich, keinen Sinn so zu arbeiten. Falls jemand einen Sinn in diesem Beispiel sieht, kann er dazu ja mal was schreiben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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