| |

Fortgeschrittene ProgrammierungProblem mit VB6, ADO und Windows Auslagerungsdatei | |  | Autor: Rainer@VB | Datum: 18.11.08 09:17 |
| Für eine Langzeitstudie zeichne ich mit VB6 und ADO in einer Access-Datenbank
jede Sekunde ein JPG-Bild auf. (Zeitstempel -> DatumsFeld, 10-30KB Bild -> MemoFeld)
Am Ende des Tages schließe ich Connection und Recordset und setze sie brav auf Nothing.
ADO löscht daraufhin die LBL-Datei und es scheint alles OK.
Ich kann sehr schnell auf alle Bilder in der nunmehr 2GB grossen MDB zugreifen.
Schon während der Aufzeichnung kann ich im Taskmanager beobachten, wie die Auslagerungs-Datei quasi paralell mit der MDB wächst. Das Problem ist nun, dass sie nicht nach dem Ende der Aufzeichnung und Schließen der Datenbank wieder kleiner wird. Dies geschieht erst wenn das VB-Programm beendet wird. Da aber die Aufzeichnung in einer neuen MDB automatisch fortgesetzt wird, erreicht die Auslagerungsdatei irgendwann ihre Grenze, was dann zum "Runtime Error 7" führt.
- Warum wird die Auslagerungsdatei während der Aufzeichnung überhaupt so groß, es steht doch alles schon im MBD-File ?
- Wie kann ich Windows davon überzeugen, dass die Auslagerungsdatei nicht mehr gebraucht wird, ohne das VB-Programm zu verlassen ?
Hier ein vereinfachtes Code-Beispiel:
Leeres Form mit einem Command-Button anlegen.
Verweis auf "Microsoft ActiveX Data Objects 2.x" dem Projekt hinzufügen.
Eine "Muster.mdb" im Projektverzeichnis manuell angelegen:
Tabelle "Bilder" mit 2 Feldern "Datum" (Date) und "Bild" (Memo)
Bei jedem Click auf den Button werden 1000 leere Bilder in eine neue MDB geschrieben (32 MB, dauert ca. 10 Sek).
Obwohl alles geschlossen wird wächst und wächst die Auslagerungsdatei !
Private Sub Command1_Click()
Dim DbFileName As String
'--------- Neue Datenbank kopieren -----------------------------------
'--------- Muster.mdb muss schon existieren --------------------------
DbFileName = App.Path & "\Bilder" & Format(Now(), " yyyyMMddhhmmss") & _
".mdb"
FileCopy App.Path & "\Muster.mdb", DbFileName
'--------- Connection öffnen -----------------------------------------
Dim xpConn As ADODB.Connection
Set xpConn = New ADODB.Connection
xpConn.CursorLocation = adUseServer
xpConn.Mode = adModeShareDenyNone
xpConn.Provider = "Microsoft.Jet.OLEDB.4.0"
xpConn.ConnectionString = "Data Source=" & DbFileName
xpConn.Open
'--------- RecordSet vorbereiten -------------------------------------
Dim xpRs As ADODB.Recordset
Set xpRs = New ADODB.Recordset
xpRs.CursorLocation = adUseServer
xpRs.CursorType = adOpenForwardOnly
xpRs.LockType = adLockOptimistic
xpRs.ActiveConnection = xpConn
xpRs.Open "SELECT * FROM Bilder"
'-------- Loop: Bilder in Datenbank speichern ------------------------
Dim BildNr As Long
Dim arrBin(30000) As Byte ' Byte-Array, in das die Bilder der
' Kamera eingelesen werden
For BildNr = 1 To 1000
'--------- Bild aus der Kamera lesen -----------------------
'--------- in neuem Datensatz speichern ---------------------
xpRs.AddNew
xpRs.Fields("Datum").Value = Now()
xpRs.Fields("Bild").Value = arrBin()
xpRs.Update
'------- Test-Anzeige ---------------------------------------
Me.Cls
Me.Print BildNr
DoEvents
Next
'------------------ Fertig, alles schließen --------------------------
xpRs.Close
Set xpRs = Nothing
xpConn.Close
Set xpConn = Nothing
MsgBox "Fertig"
End Sub |  |
 Problem mit VB6, ADO und Windows Auslagerungsdatei | 2.855 | Rainer@VB | 18.11.08 09:17 |   Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.633 | Angelus19 | 18.11.08 13:44 |    Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.615 | Rainer@VB | 18.11.08 14:48 |     Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.636 | Angelus19 | 18.11.08 15:49 |      Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.627 | Rainer@VB | 18.11.08 18:30 |   Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.780 | GhostRE | 18.11.08 15:50 |    Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.618 | Rainer@VB | 18.11.08 18:06 |     Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.666 | GhostRE | 19.11.08 08:55 |      Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.715 | Rainer@VB | 19.11.08 20:24 |       Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.579 | Angelus19 | 21.11.08 13:22 |        Re: Problem mit VB6, ADO und Windows Auslagerungsdatei | 1.510 | JH78 | 30.11.10 17:52 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|