vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Problem 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit VB6, ADO und Windows Auslagerungsdatei2.855Rainer@VB18.11.08 09:17
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.633Angelus1918.11.08 13:44
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.615Rainer@VB18.11.08 14:48
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.636Angelus1918.11.08 15:49
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.627Rainer@VB18.11.08 18:30
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.780GhostRE18.11.08 15:50
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.618Rainer@VB18.11.08 18:06
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.666GhostRE19.11.08 08:55
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.715Rainer@VB19.11.08 20:24
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.579Angelus1921.11.08 13:22
Re: Problem mit VB6, ADO und Windows Auslagerungsdatei1.510JH7830.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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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