Καλησπέρα.. κάνω ένα πρόγραμμα το οποίο θα χρειάζεται να κάνει χιλιάδες προσθέσεις και αφαιρέσεις σε μια βάση δεδομένων Access 2010 .accdb
Θέλω το πρόγραμμά μου, κάθε φορά πριν αρχίσει να κάνει τη δουλειά του, να κάνει ένα compact τη βάση δεδομένων..
Έχω αυτόν τον κώδικα, αλλά δεν δουλεύει όμως...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Public Sub CompactAccessDB(ByVal DatabasePath As String, ByVal ConnectionString As String, Optional ByVal Password As String = "")
Try
Dim jro As New JRO.JetEngine
Dim strTempDbPath As String = strExtras & "tmpDB" & GetExt(DataBaseFile)
FileCopy(DatabasePath, strTempDbPath)
UnlockFileFolder(DatabasePath)
'Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Dim ConnectionPassword As String = ""
If Password <> "" Then
ConnectionPassword = ";Jet OLEDB:Database Password=" & Password
End If
jro.CompactDatabase(ConnectionString & "Data Source=" & strTempDbPath & ConnectionPassword & ";Jet OLEDB:Engine Type=5", _
ConnectionString & "Data Source=" & DatabasePath & ConnectionPassword)
DelFileFolder(strTempDbPath)
Catch ex As Exception
CreateCrushFile(ex.ToString)
MsgBox(ex.ToString)
End Try
End Sub |
το πρόβλημα εμφανίζεται στην γραμμή 16 (που είναι η κρίσιμη γραμμή, αυτή που θα κάνει το compact!).
Το πρόβλημα που βγαίνει είναι:
"System.Runtime.InteropServices.COMException (0x80004005): Invalid argument.
at JRO.IJetEngine.CompactDatabase(String SourceConnection, String Destconnection)
at Ultra_PoS.modGlobal.CompactAccessDB(String DatabasePath, String ConnectionString, String Password) in C:\Users\Giannis M\Dropbox\Visual Basic 2010\Projects\Ultra PoS\Ultra PoS\Modules\modGlobal.vb:line 396"
(Το line 396 είναι το 16 στον κώδικα που έγραψα εδώ)
Στο
jro.CompactDatabase(,) περνιούνται 2 arguments:
Πρίν το κόμμα περνιέται το:
1
| PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Giannis M\Dropbox\Visual Basic 2010\Projects\Ultra PoS\Ultra PoS\bin\Debug\Extras\tmpDB.accdb;Jet OLEDB:Engine Type=5 |
Μετά το κόμμα περνιέται το:
1
| PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Giannis M\Dropbox\Visual Basic 2010\Projects\Ultra PoS\Ultra PoS\bin\Debug\Database\Database.accdb |
Τι κάνω λάθος???