AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi adoset.fields(i) falsche Parameteranzahl
Thema durchsuchen
Ansicht
Themen-Optionen

adoset.fields(i) falsche Parameteranzahl

Ein Thema von Smiley · begonnen am 12. Jun 2010 · letzter Beitrag vom 12. Jun 2010
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

adoset.fields(i) falsche Parameteranzahl

  Alt 12. Jun 2010, 09:54
Datenbank: Access • Version: 2003 • Zugriff über: ole
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:
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;
Ich möchte mich mit dem direkten ansprechen des adodatasets beschäftigen, wo finde ich dazu nähere Informationen.
Das Beispiel habe ich mit Delphi2010 ausprobiert, vielleicht hat es damit etwas zu tun ?
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: adoset.fields(i) falsche Parameteranzahl

  Alt 12. Jun 2010, 16:52
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.
  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 16:39 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