| |
|
|
Christof Neuß | Ciao,
ich arbeite mit der Uniit dbHelper und verbinde mich circa ODBC mit einer Access-Datenbank. So weit, so gut.
Bei dem ganzen hin und her Gedönse mit mehrmaligem "Drop table" etc. bläht sich das Ding irgendwann auf circa 1 GB auf. Wenn ich die Datenbank dann mit Access komprimiere, Ist sie wieder schön klein. Der Anwender hat aber u.U. gar kein Access und soll sich damit auch nicht belasten.
Wie komprimiere ich denn eine Datenbank? Hat jemand einen Tipp? Kann ich eine neue anlegen und die Tabellen einfach übertragen/kopieren und die alte löschen? Gibt es eine "eingebaute" Methode?
Naja, bisher wusste hier noch immer irgendwer auf alles eine Antwort
DANKE! |
|
|
| |
|
|
|
Jörg Sellmeyer | Müßte da nicht @db("Pack") helfen? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 09.11.2011 ▲ |
|
|
|
|
Detlef Jagolski | Ciao,
ohne MS Access geht es circa die ODBC Datenquelle.
$P+
Set("ErrorLevel",0)
Def GetSysColor(1) !"USER32","GetSysColor"
Def RunControl(2) WinExec(("RUNDLL32 SHELL32.DLL,Control_RunDLL " + $(1) + ".CPL ") + $(2),1)
Proc OnApplicationExit
EndProc
Proc OnApplicationInit
EndProc
OnApplicationInit
Declare appexit%
Declare Button1&
Set("TrueColor",1)
WindowStyle $003F
WindowTitle "ODBC"
Window %maxX + 5,114 - 498,415
Cls GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Button1&=CreateButton(%hwnd,"ODBC...",164,178,162,25)
SetWindowPos %hwnd = 207,114 - 498,415;0
WhileNot appexit%
WaitInput
If %key = 2
appexit%=1
ElseIf Clicked(Button1&)
RunControl("odbccp32","")
ElseIf %key = 4
' Fenstergröße
ElseIf %key = 5
' Aiuto
EndIf
Wend
OnApplicationExit
Wähle den MS Access ODBC Treiber und dann klicke auf den Button Konfigurieren..
.
Saluto
Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 09.11.2011 ▲ |
|
|
|
|
Christof Neuß | db("Pack") hilft nur bei dBase-File, oder? Ich habe hier aber eine SQL-Datenbank.
Der Aufruf der ODBC-Schnittstelle würde zwar funktionieren, aber das mag ich dem Anwender nicht zumuten. Soll halt alles im Programm bzw. im Hintergrund laufen.
Kann man 2 Datenbanken gleichzeitig im Zugriff haben? Dann potuto ich doch eine Funktion schreiben, die alle Tabellen von der einen in die andere Datenbank hievt und dann die erste löscht. |
|
|
| |
|
|
|
Detlef Jagolski | |
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 10.11.2011 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Laut diverser VB-Schnipsel im Web legt dieser Quellcode eine Kopie einer Access-db an, die dann angeblich komprimiert ist. Voll ausgetestet ist das alles allerdings nicht! (PS: Die Kopie darf noch nicht existieren)
window 500,500
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
ocxInit()
var Engine&=ocxCreate("JRO.JetEngine")
var mdb$="C:\Test.mdb"
var tmp$="C:\Temp.mdb"
mdb$="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+mdb$
tmp$="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+tmp$+";Jet OLEDB:Engine Type=5"
ocxMethod(Engine&,"CompactDatabase",mdb$,tmp$)
ocxRelease(Engine&)
ocxDeInit()
print "Fertig"
waitkey
Die im 2. Verbindungsstring angegebene "Engine Type 5" hängt anscheinend mit der verwendeten Access- bzw db-Treiberversion zusammen. Falls die nicht paßt, gibt es nämlich eine Fehlermeldung. Zur Ermittlung des richtigen Typs potuto dies helfen:
window 500,500
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
ocxInit()
var mdb$="C:\Test.mdb"
var Connection&=ocxCreate("ADODB.Connection")
var Connection$="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+mdb$
ocxMethod(Connection&,"Open",Connection$)
var Properties&=ocxGet(Connection&,"Properties")
var Type&=ocxGet(Properties&,"Item","Jet OLEDB:Engine Type")
print "Engine Type: ",ocxGet(Type&,"Value")
ocxRelease(Type&,Properties&,Connection&)
ocxDeInit()
waitkey
end
Frag mich aber keiner nach Funktionsweise oder Einzelheiten; ich hab's einfach mal stumpf auf die Schnelle übersetzt...
HTH Pascal |
|
|
| |
|
|
|
Christof Neuß | Hallo Pascal,
mensch, klasse. Das werde ich nachher mal ausprobieren.
DANKE |
|
|
| |
|
|
|
Christof Neuß | Hallo Pascal,
das funktioniert bei mir hervorragend. Nochmals "DANKE".
Ich muss jetzt mal testen, wie das auf anderen PCs aussieht. Insbesondere, wenn da kein Access installiert ist. Ich werde berichten... |
|
|
| |
|
|