Hi BAStler, danke für die Antwort, das hat mir schonmal weitergeholfen.
Mein Programm ist natürlich noch größer, ich habe aber nur das Wichtigste rausgefiltert.
Mein nächstes Problem hat zwar nichts mehr mit dem Laufzeitfehler zu tun, aber ich denke es macht nichts, wenn ich es hier poste.
Hier mal mein ganzer Code:
[u]Form1
Dim Db As Database
Dim TabDef As New TableDef
Dim Feld As New Field
Dim I As Integer, J As Integer, M As Integer, N As Integer, K As Integer
Dim Tabelle As Recordset
Private Declare Function PathFileExists Lib "shlwapi.dll" _
Alias "PathFileExistsA" ( _
ByVal pszPath As String) As Long
Dim BelegNr As String, Datum As String, KundenName As String, KundenNr As String
Public Function IsFilePath(strPath As String) As Boolean
IsFilePath = CBool(PathFileExists(strPath))
End Function
Private Sub cmd_addnew_click()
'Neuen Tabelleninhalt einfügen
Call Satzlänge_berechnen(prmPfad(1))
FF1 = FreeFile
FF4 = FreeFile
For K = 1 To 3
Open stPfad(K) For Random As FF1 Len = Datensatzlänge(1)
AnzahlSätze(1) = LOF(FF1) / Datensatzlänge(1)
Close FF1
For J = 1 To AnzahlSätze(1)
Open stPfad(K) For Random As FF4 Len = Datensatzlänge(1)
Set Db = Workspaces(0).OpenDatabase(dbFile, False, False)
Set Tabelle = Db.OpenRecordset("EPAG")
Tabelle.AddNew
Get FF4, J, Puffer
BelegNr = Puffer.Feld0
Datum = Puffer.Feld1
KundenName = Puffer.Feld7
KundenNr = Puffer.Feld3
Close FF4
Tabelle("nr") = BelegNr
Tabelle("datum") = Datum
Tabelle("kundenname") = KundenName
Tabelle("kundennr") = KundenNr
Tabelle.Update
Tabelle.Bookmark = Tabelle.LastModified
Tabelle.Close
Set Tabelle = Nothing
Next J
Db.Close
Set Db = Nothing
Next K
End Sub
Private Sub Form_Load()
dbFile = App.Path + "\EASY.MDB"
TableName(1) = "EPAB"
TableName(2) = "EPAG"
TableName(3) = "EPLI"
prmPfad(1) = "Z:/6.0 Studio/VB Easyware/EPAB.PRM"
prmPfad(2) = "Z:/6.0 Studio/VB Easyware/EPAG.PRM"
prmPfad(3) = "Z:/6.0 Studio/VB Easyware/EPLI.PRM"
If IsFilePath(dbFile) Then
Exit Sub
End If
Set Db = Workspaces(0).CreateDatabase(dbFile, dbLangGeneral, _
dbEncrypt + dbVersion30)
'Neue Tabellendeklaration einfügen
'CommonDialog1.FileName = "EP*.prm" 'Datei öffnen
'CommonDialog1.ShowOpen
'prmPfad(1) = CommonDialog1.FileName
For N = 1 To 3
L = Len(prmPfad(N)) 'Pfad speichern
L = L - 4
Pfad(N) = Left(prmPfad(N), L)
stPfad(N) = Pfad(N) & ".ST"
Next N
For M = 1 To 3
TabDef.Name = TableName(M)
'Datenfeld #1
Feld.Name = "Nr"
Feld.Type = dbText
Feld.Size = 9
Feld.AllowZeroLength = False
TabDef.Fields.Append Feld
Set Feld = Nothing
'Datenfeld #2
Feld.Name = "Datum"
Feld.Type = dbText
Feld.Size = 10
Feld.AllowZeroLength = False
TabDef.Fields.Append Feld
Set Feld = Nothing
'Datenfeld #3
Feld.Name = "Kundenname"
Feld.Type = dbText
Feld.Size = 30
Feld.AllowZeroLength = False
TabDef.Fields.Append Feld
Set Feld = Nothing
'Datenfeld #4
Feld.Name = "Kundennr"
Feld.Type = dbText
Feld.Size = 30
Feld.AllowZeroLength = False
TabDef.Fields.Append Feld
Set Feld = Nothing
Db.TableDefs.Append TabDef
Set TabDef = Nothing
Next M
Db.Close
Set Db = Nothing
Call Satzlänge_berechnen(prmPfad(1))
End Sub Module1 siehe nächsten Post... |