Deutsch
Forum

Access SQL-Datenbank komprimieren

 

Christof
Neuß
Hallo,

ich arbeite mit der Uniit dbHelper und verbinde mich über 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 über 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!
 
Win10 16 GB RAM
09.11.2011  
 




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
Hallo,

ohne MS Access geht es über 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

        ' Hilfe

    EndIf

Wend

OnApplicationExit

Wähle den MS Access ODBC Treiber und dann klicke auf den Button Konfigurieren..

.



Gruß

Detlef

26 kB
Hochgeladen:09.11.2011
Ladeanzahl133
Herunterladen
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
09.11.2011  
 




Christof
Neuß
db("Pack") hilft nur bei dBase-Dateien, 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 könnte ich doch eine Funktion schreiben, die alle Tabellen von der einen in die andere Datenbank hievt und dann die erste löscht.
 
Win10 16 GB RAM
09.11.2011  
 




Detlef
Jagolski
Das sollte Dir weiter helfen: [...] , [...] 
 
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 könnte 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
 
11.11.2011  
 




Christof
Neuß
Hallo Pascal,

mensch, klasse. Das werde ich nachher mal ausprobieren.

DANKE
 
Win10 16 GB RAM
13.11.2011  
 




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...
 
Win10 16 GB RAM
13.11.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.143 Betrachtungen

Unbenanntvor 0 min.
H.Brill22.05.2024
Christof Neuß11.09.2018
Andre Rohland26.05.2017
ByteAttack11.08.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie