ich hatte es mal geschafft, ein Formular über folgenden Code zu füllen:
Private Sub Form_Load()
Dim rs As DAO.Recordset
Dim SQL$
SQL$ = "SELECT * from tbl_Artikel"
Set rs = CurrentDb.OpenRecordset(SQL$)
Set Me.Recordset = rs
rs.Close
Set rs = Nothing
End Sub
Die Schritte, wie ich zu dem Formular komme:
1. Aus einer Tabelle / Abfrage ein Formular mit Hilfe des Assistenten
erstellt.
2. Das Formular von seiner Datenquelle unter Eigenschaften entbunden.
3. Die Controls behalten ihre Datenquelle, d.h. im Feld Preis steht "Preis"
und nicht "ungebunden".
4. Den Code implementiert.
Ich erhoffte mir eine automatisches Füllen des Formulars. Aber leider nichts
passiert - nicht mal eine Fehlermeldung.
Was mache ich falsch?
Gruß und Danke im Voraus für die Hilfe
Johannes
P.S. Wenn wir schon dabei sind:
Warum führt dieser Code an der Stelle
"Set Me.Recordset = rs"
zur Fehlermeldung "7965 - Das eingegebene Objekt ist keine gültige
Recordeigenschaft" Fehlermeldung unter Acc07, aber ähnliche kommen auch bei
den Versionen 2002 und 2003.
Was ist der technische Unterschied zwischen SQL und öffnen als Tabelle,
Dynaset?
Private Sub Form_Load()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("tbl_Artikel")
Set Me.Recordset = rs
rs.Close
Set rs = Nothing
End Sub
Johannes Curio wrote:
> ich hatte es mal geschafft, ein Formular über folgenden Code zu füllen:
>
> Private Sub Form_Load()
> Dim rs As DAO.Recordset
> Dim SQL$
> SQL$ = "SELECT * from tbl_Artikel"
> Set rs = CurrentDb.OpenRecordset(SQL$)
> Set Me.Recordset = rs
> rs.Close
> Set rs = Nothing
> End Sub
So waere es besser:
Private Sub Form_Load()
Dim SQL$ As String
SQL$ = "SELECT * from tbl_Artikel"
Me.RecordSource = SQL$
End Sub
Noch besser waere es, die Tabelle tbl_Artikel in der Formulareigenschaft
Datenherkunft einzutragen. In dem Fall braeuchtest du Form_Load nicht mehr.
Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
"Johannes Curio" <J.C...@gmx.net> schrieb im Newsbeitrag
news:97C196DD-20ED-40F2...@microsoft.com...
Johannes Curio wrote:
> "Johannes Curio" ...
>>
>> ich hatte es mal geschafft, ein Formular über folgenden Code zu füllen:
>>
>> Private Sub Form_Load()
>> Dim rs As DAO.Recordset
>> Dim SQL$
>> SQL$ = "SELECT * from tbl_Artikel"
>> Set rs = CurrentDb.OpenRecordset(SQL$)
>> Set Me.Recordset = rs
>> rs.Close
>> Set rs = Nothing
>> End Sub
>
> ein Kollege (Danke, Hans) hat mich auf die Fehler aufmerksam gemacht:
> Man darf den Recordset nicht schließen, d.h. die Zeile "rs.close" ist
> falsch.
Das wuerde fuer ADO gelten, du setzt aber explizit DAO ein, insofern ist
die Vorgehensweise schaedlich.
Entweder du steigst auf ADO um (siehe
http://support.microsoft.com/kb/281998 ) oder haelst dich an die Empfehlung
aus meiner anderen Antwort.
> und bei "Set rs = CurrentDb.OpenRecordset("tbl_Artikel")" muss man als
> Dynaset öffnen, d.h.
> Set rs = CurrentDb.OpenRecordset("tbl_Artikel", dbOpenDynaset)
dbOpenDynaset ist der Standardtyp bei Abfragen und verknuepften Tabellen,
siehe <F1>OpenRecordset. Die Angabe des Typs ist hier also nicht
erfolgskritisch, man sollte ihn aber trotzdem immer angeben.