Microsoft Excel

Herbers Excel/VBA-Archiv

Recordset Field-Name mit String-Varibale?

    Betrifft: Recordset Field-Name mit String-Varibale? von: Peter
    Geschrieben am: 01.09.2003 19:42:55

    Hallo!

    Ich habe da wieder eine Frage an die ADO-Spezialisten unter euch.


    Ich versuche mit

    ...
    while not recordset.EOF

    Combobox1.additem recordset! String-Variable

    Wend
    ...

    Daten in eine Combobox einzulesen, wobei ich als Feldnamen eine Varibale benutze, die den "echten" Feldnamen enthält. Klappt nicht!

    Auch die Schreibweise

    ... recordset.Fields( String-Variable ).value

    klappt nicht. Jedes Mal kommt die Fehlermeldung, dass das Element nicht gefunden wurde!

    Und

    ... recordset.fields(0).value

    liest mir vier mal den Namen des Feldes in die Combobox ein (obwohl die Spalte/Feld zur Zeit nur zwei Einträge in der Datenbank hat)?!?

    Wer weiß Rat?

    Gruß
    Peter

      


    Betrifft: AW: Recordset Field-Name mit String-Varibale? von: Hans T.
    Geschrieben am: 01.09.2003 23:47:10

    Hallo Peter

    Ich kann dein Problem nur zum Teil nachvollziehen: nach Combobox1.additem recordset!String-Variable brauchts ein MoveNext, sonst liest du endlos den gleichen Wert ein.

    Für das Feld kommen mehrere Schreibweisen in Frage:
    recordset.Fields("Feldname")
    recordset.Fields("[Feldname]")
    recordset.Fields!Feldname 'geht nur, wenn der Feldname keine Leerschläge oder Bindestriche enthält, was sowiso zu vermeiden ist.
    recordset.Fields![Feldname]

    Bei Verwendung einer Variablen funktioniert:
    recordset.Fields(strFeldname)

    .Value ist die Standard-Eigenschaft. Sie kann auch weggelassen werden.

    Ich habe soeben alles überprüft unter Excel und Access 97. Versuch's doch nochmals und überrüfe die Schreibweise des Feldnamens. Du kannst ihn mit recordset.Fields(0).Name abfragen.

    Viel Erfolg wünscht
    Hans T.


      


    Betrifft: AW: Recordset Field-Name mit String-Varibale? von: Peter
    Geschrieben am: 02.09.2003 18:14:55

    Hallo Hans,

    erstmal danke für deine Antwort!

    MoveNext habe ich nur vergessen zu schreiben, ist im Code selbstverständlich enthalten.
    Die Geschichte mit rs.Fields(0).name habe ich auch probiert, um herauszufinden ob der Tabellenname richtig eingelesen wurde. WAR ER! Und bei ... .fields(0).value läuft der Code auch ohne Fehler durch, nur mit dem oben erwähnten seltsamen Resultat!

    Ich habe die Geschichte versucht mit und ohne eckige Klammern! Und gerade das Beispiel rs.fields(strFeldname) haut bei mir nicht hin! Wenn ich das Feld direkt mit Namen angebe (um zu schauen ob das Problem vielleicht im Feld liegt), dann klappt die Datenübergabe, damit habe ich aber nur EIN Feld auf das ich zugreifen kann und das ist eigentlich nicht das was ich will.

    Die Idee war folgende: Ich habe in einer Combobox eine Auswahl von 1 bis 10 und ich habe zu jeweils einer Ziffer einen Satz Details, die ich nach Auswahl einer Zahl in eine andere Combobox einlesen will. Also z.B. 1 ausgewählt wird dann zum Feldnamen "1Details" (Combobox1.Text & "Details"). In einer Tabelle namens "Detail" habe ich dann 10 Spalten liegen nach dem obigen Schema benannt (1Dateils bis 10Details).

    Ich habe mir aber mittlerweile anders beholfen: Nur noch zwei Spalten in der Tabelle. Details und Detailnr. Abfrage erfolgt über ein passendes SQL-Statement nach dem Muster : "SELECT Details FROM Detail WHERE Detailnr = "&Combobox1.text
    Klappt wunderbar!
    Stört mich nur, daß der andere Weg nicht hinhaut.

    Gruß
    Peter