# Recordset + Access bzw. VB



## Jacizzle (9. August 2005)

Naja, da ich mich noch garnicht mit Record Sets auskenne ( Bei MySQL braucht ich sowas noch nicht bisher ;o) ), versuch ich einfach mal hier ne Frage zu stellen und hoffe auf ne Antwort, also Beschreibung:

Ich hab nen Formular erstellt mit Access und lese aus einem Textfeld ne Artikelnummer aus und will damit halt die Abfrage erstellen die ich brauch.. Mein Ziel ist halt mehrere Textfelder mit den Artikeldaten zu füllen .. also ich hab z.B. das Textfeld txtBezeichnung1, und da soll halt dann auch die Bezeichnung rein von dem Artikel was in dem Artikelnummerfeld steht..

Die Tabelle mit den ganzen Datensätzen sitzt auf nem Microsoft SQL Server und heisst Artikel.. nu hab ich mit Recordset versucht den ganzen Mist auszulesen und wollte es dann in die einzelnen Felder einfügen und das hab ich so gemacht:

```
Dim rs As ADODB.Recordset
    Dim sQry As String
    Dim sArtNr As String
    
    sArtNr = Me.txtArtikelNr
        
        sQry = "SELECT Artikelnummer, Mandant, "
        sQry = sQry & " Bezeichnung1 FROM KHKArtikel"
        sQry = sQry & " WHERE (Artikelnummer = " & sArtNr & ") "
        sQry = sQry & " AND (Mandant = " & gnManId() & ")"
        
        Set rs = goMandant.oData.rsOpenRecordset(sQry)
```

Naja, eigentlich dachte ich das funktioniert so, aber da kommt immer nen Fehler und zwar:
Objektvariable oder With-Blockvarible nicht festgelegt..

Womit ich nu überhaupt nix anfangen kann ehrlich gesagt.. vielleicht kann mir ja mal irgendeiner helfen, oder mir evt. mal nen Quelltext hier rein kopieren der funktionieren müsste ..

Danke im vorraus..


----------



## andi_g69 (9. August 2005)

Wie sind denn goMandant und oData deklariert?
Und die Methode rsOpenRecordSet ist mir auch nicht bekannt


----------



## Jacizzle (10. August 2005)

Hmm .. könnte sein, dass die in dem Programm programmiert wurden, mit dem ich ein Formular bestellen will .. ;o) ... 

Aber egal, vielleicht kannst du mir ja trotzdem erklären, wie ich mit den Recordsets arbeite und eine Verbindung zur Microsoft SQL Datenbank mache..

Also soweit ich das verstanden hab, muss ich ja erstmal den Recordset deklarieren und wenn ichs nochmal richtig verstanden habe, dann macht mans so:


```
Dim rst As New ADODB.Recordset
```

So und als nächstes, soweit ich das richtig verstanden hab, sollte man ja ne Verbindung zur Datenbank herstellen aus der man die Daten auslesen will, und wenn ichs ( laut meinen seltsamen Unterlagen ;o) ) richtig verstanden habe, geht das mit der Funktion:


```
rst.Open
```

richtig?

So in meinen Unterlagen steht hinter rst.open nochwas, womit ich, denke ich zumindestens, nicht zur SQL Datenbank von Microsoft verbinde, sondern mit ner Tabelle von Access selber und zwar:


```
rst.Open "tblRaum", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
```

Ich nehme an das tblRaum ne Tabelle von Access ist und CurrentProject.Connection wird wohl ne Verbindung zu der Datenbank von Access herstellen? okay, die anderen beiden Parameter versteh ich nicht wirklich.. 

Naja, ist nen bisschen schwer rauszufinden, wie das mti den Recordsets usw. funktioniert, wenn man nicht mal nen paar Unterlagen dazu hat und Beispiele wo man sieht wie das funktioniert...

Falls ich denn mal schaffen sollte, ne Verbindung zur SQL Datenbank herzustellen, will ich dann halt ne Bezeichnung von nem Artikel ( in der Microsoft SQL - Datenbank ) auslesen und in nem Textfeld wieder ausgeben ... 

Naja vielleicht kannst du ( bzw. ihr ) mir ja mal erklären, wie das geht.. vielleicht auch mir nen paar Beispielen? Wär echt cool, wenn nicht... auch nicht sooooooooo schlimm, irgendwann finds ichs schon raus. Hoffe ich hab nun genug gelabert   :suspekt:  :suspekt:  :suspekt:


----------



## tglynx (2. Dezember 2008)

Salute!

Dein Code Sample da oben ist genau richtig! Die Sage OfficeLine Systemobjekte müssen aber initialisiert sein damits geht!

Du hast vermutlich versucht Dein Formular direkt aus dem Entwurfsmodus oder per doppelklick zu öffnen... 

Das geht natürlich nicht 

Einen direkten adodb.recordset auf die Datenquelle aufzumachen würd ich nicht raten (jedenfalls nicht in der Umgebung)

Der Weg übers Mandantenobjekt ist schon richtig!

Grüße
somi


----------

