PDA

Vollständige Version anzeigen : Mit Recordset DAO Daten zufügen


GünterDitzingen
19.01.2003, 15:26
Hallo,
ich hab ein für mich großes und unverständliches Problem.
Ich habe eine Temporäre Tabelle „TabTemp“ die ich mit dem Recordset füllen will.
Beim öffnen des Formulars lösche ich erst den Inhalt


CurrentDb.Execute ("DELETE * FROM TabTemp")

Dann wird nach Drücken einer Schaltfläche folgendes ausgeführt


Private Sub Befehl0_Click()
Dim Titel As String
Dim Filter As String
Dim Flags As Long
Dim StartPfad As String
Dim Dateiname As String
Dim MX As String
Dim MonatMM As String
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("TabTemp", dbOpenDynaset)

DoCmd.SetWarnings False

'IMPORT der Excel Daten #################################################################
Filter = "Excel-Dateien" & Chr$(0) & "*.xls" & Chr$(0) _
& "Alle Dateien" & Chr$(0) & "*.*" & Chr$(0) & Chr$(0)
Titel = "Datei importieren"
Flags = 4
StartPfad = "P:\"
filname = "Divers.xls"
EinlesenExcelDatei (OpenFile(Titel, Filter, Flags, , StartPfad))
'#######Hier wird folgendes Modul erledigt########################################


Public Function EinlesenExcelDatei(DateiXLS As String)
Dim db As DAO.DATABASE
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("TabTemp", dbOpenDynaset)
If DateiXLS = "" Then
MsgBox "Keine Daten"
Exit Function
End If
DoCmd.Rename "ImportAlt", acTable, "Import"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "Import", DateiXLS, True

rs.AddNew
rs!TabelleImportiert = True
rs.Update
rs.Clone
Set db = Nothing

End Function
'###### Ende des moduls #############################
'########weiterer Code #######################################

'Fertige Abfrage zur Datei#############################################################

DoCmd.OpenQuery "QurExport", acViewNormal, acAdd
DoCmd.TransferText acExportFixed, "Festool", "TabExport", "d:\Export_" & Me.TxtJahr & "_" & MonatMM & ".Txt"

rs.MoveLast
rs!Dateiname = "Export_" & Me.TxtJahr & "_" & MonatMM & ".Txt"
rs.Update
rs.Clone
Set db = Nothing

DoCmd.SetWarnings True

MsgBox "Datei wurde erfolgreich exportiert", 64, "Export Hinweis"
End Sub

GünterDitzingen
19.01.2003, 15:31
Hab vergessen es handelt sich um Access 97 unter WIN NT4 und unter WIN XP Home

Aquarii
19.01.2003, 15:46
Hallo Günther,

worin besteht denn jetzt Dein Problem? Würdest Du das bitte noch ergänzen?

Beim ersten Überfliegen des Codes fällt mir nur auf, daß du in Deiner Private Sub die Variable "db" nicht deklariert hast,

So in dem Stil:

Dim db as DAO.Database

GünterDitzingen
19.01.2003, 16:11
Hallo Aquarii,
mein Problem ist das die normale Sub mit dem Fehlercode
Laufzeitfehler ‚3021’
No current record.

gestopt wird un und zwar in der Zeile

rs.addnew

Es funktioniert wenn in der Tabelle weitere Datensätze hab.

Günter

Sascha Trowitzsch
19.01.2003, 17:29
Kaum vorstellbar.
Aber es gibt ein paar Ungereimtheiten:

Das Set rs = machst du zweimal.
rs.Clone soll wohl rs.Close heißen. (Oder was sollte das sonst?)

Den Code nach ########... versteh ich gar nicht. Wo fängt da die Prozedur an?
Das Recordset wird nicht geöffnet, vor rs!Dateiname = fehlt ein rs.Edit und am Schluss kommt wieder ein rs.Clone statt .Close.

Ein Option Explicit steht auch nicht im Modulkopf, sonst würde er bei Set db = CurrentDb meckern.

Vielleicht hängt's ja mit all dem zusammen...

Ciao, Sascha

GünterDitzingen
19.01.2003, 17:53
Vielen Dank,
hat leider nicht gefunkt
Ich versuch mal kronologisch zu erklären.
In einem Formular wird nach dem Drücken der Schaltfläche erst alles dimonisiert, auch das öffnen der Datenbank.
Im Code wird über ein Modul weitere Sachen erledigt und auch hier wird der Recordset angewandt.
zurück aus dem Modul wird weitere sachen erledigt und weitere sachen im Recordset geschrieben.
Wenn die TabTemp Tabelle schon Datensätze hat funktioniert alles.
Hab nun eine lösung die mir zwar nicht gefällt aber funtioniert.
Ich habe beim öffnen des Formulars den Inhalt gelöscht und dann mit addnew schon einen Datansatz angefügt.
Günter