Hallo,
ich bin gerade dabei ein kleines Programm zu basteln welches mit eine txt datei auswertet. Diese hat um die 200.000 Zeilen.
Als erstes hab ich diese in ein mehrdimensionales Array eingelesen und mich gewundert dass der speicher noch nicht voll ist
Das Problem dabei war allerdings, dass diese Array schlecht zu verwalten ist.
Deshalb habe ich mir gedacht ich nehm ne lokale .mdb und schiebe die Daten da rein. Dann kann ich mit SELECT ... FROM ... WHERE schon meine Daten aufbereiten. Diese Variante dauert aber länger beim einlesen. Das ist der erste Punkt.
Der zweite Punkt ist, dass ich eine SELECT abfrage keinem Recordset zuweisen kann.
Hier mal ein CodeSchnipsel (Datenbank erstellen):
wenn ich jetzt irgendwo:
aufrufe mit einem INSERT befehl dann funktioniert das.
wenn ich allerding
aufrufe kommt der Fehler "Function oder Variable erwartet" und ".Execute" ist markiert.
Was mache ich falsch ... ich bin mir sicher ich habe das in einem anderen Programm so schonmal gemacht ...
ist es überhaupt ratsam das Problem mit einer SQL DB anzugehen?
Die daten werden nur für eine sitzung gebraucht und werden danach wieder gelöscht ... ich glaube dass ich da in VB6 aber keine andere wahl habe ...
in VB.NET könnte ich mit einer Collation oder wie die teile heißen arbeiten oder ?
Gruß
Pascal
ich bin gerade dabei ein kleines Programm zu basteln welches mit eine txt datei auswertet. Diese hat um die 200.000 Zeilen.
Als erstes hab ich diese in ein mehrdimensionales Array eingelesen und mich gewundert dass der speicher noch nicht voll ist
Das Problem dabei war allerdings, dass diese Array schlecht zu verwalten ist.
Deshalb habe ich mir gedacht ich nehm ne lokale .mdb und schiebe die Daten da rein. Dann kann ich mit SELECT ... FROM ... WHERE schon meine Daten aufbereiten. Diese Variante dauert aber länger beim einlesen. Das ist der erste Punkt.
Der zweite Punkt ist, dass ich eine SELECT abfrage keinem Recordset zuweisen kann.
Hier mal ein CodeSchnipsel (Datenbank erstellen):
Visual Basic-Quellcode
- Option Explicit
- Public DB As Database
- Public DBCon As ADODB.Connection
- Public Table As TableDef
- Public Sub CreateDB(Path As String, header() As String, unit() As String)
- Dim fs As New FileSystemObject
- Dim i As Long
- Dim fld1 As DAO.Field
- ' Delete DB if exists
- If (fs.FileExists(Path)) Then
- fs.DeleteFile Path
- End If
- ' Create database
- Set DB = CreateDatabase(Path, dbLangGeneral)
- ' Create a table
- Set Table = DB.CreateTableDef("tbl_data")
- ' Add some fields to the table
- Set fld1 = Table.CreateField("id", dbLong)
- fld1.Attributes = fld1.Attributes + dbAutoIncrField
- Table.Fields.Append fld1
- For i = 0 To UBound(header) - 1
- Table.Fields.Append Table.CreateField(LCase(header(i)), dbText)
- Next i
- Table.Fields.Append Table.CreateField("_date", dbDate)
- ' Add the table to our database
- DB.TableDefs.Append Table
- ' Create a table
- Set Table = DB.CreateTableDef("tbl_unit")
- ' Add some fields to the table
- Set fld1 = Table.CreateField("id", dbLong)
- fld1.Attributes = fld1.Attributes + dbAutoIncrField
- Table.Fields.Append fld1
- For i = 0 To UBound(header)
- If LCase(header(i)) Like "date" Then
- Table.Fields.Append Table.CreateField("_date", dbText)
- Else
- Table.Fields.Append Table.CreateField(LCase(header(i)), dbText)
- End If
- Next i
- ' Add the table to our database
- DB.TableDefs.Append Table
- Set Table = Nothing
- Call fill_unit(header, unit)
- End Sub
wenn ich jetzt irgendwo:
aufrufe mit einem INSERT befehl dann funktioniert das.
wenn ich allerding
aufrufe kommt der Fehler "Function oder Variable erwartet" und ".Execute" ist markiert.
Was mache ich falsch ... ich bin mir sicher ich habe das in einem anderen Programm so schonmal gemacht ...
ist es überhaupt ratsam das Problem mit einer SQL DB anzugehen?
Die daten werden nur für eine sitzung gebraucht und werden danach wieder gelöscht ... ich glaube dass ich da in VB6 aber keine andere wahl habe ...
in VB.NET könnte ich mit einer Collation oder wie die teile heißen arbeiten oder ?
Gruß
Pascal