WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 05.05.2003, 11:01   #1
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard Access VBA - Plattenplatz überprüfen

Mich würde interessieren, wie man in Access den freien Plattenplatz auf einem Laufwerk bzw. Netzlaufwerk / Netzordner überprüfen kann.

Weil es kann sein, dass während der Laufzeit die Datenbank ziemlich groß wird (>1GB).
Und wenn dann gerade ein Modul läuft und keinen Platz mehr zum Speichern hat, könnt da gröber was schief gehen.

Meine Idee wäre übers Filesystemobject.... (nur eine Vermutung - noch nicht probiert)

Naja, danke schon mal für die Ideen.
renew ist offline   Mit Zitat antworten
Alt 05.05.2003, 13:59   #2
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

Die Idee ist richtig

Ich weiß jetzt zwar selber nicht genau, wie es geht, aber über das FSO sollte es möglich sein. Ansonsten verwende die Win32-API!

mfg
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Alt 05.05.2003, 14:10   #3
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von SNo0py
Die Idee ist richtig

Ich weiß jetzt zwar selber nicht genau, wie es geht, aber über das FSO sollte es möglich sein. Ansonsten verwende die Win32-API!

mfg
Die Idee is mir nämlich erst beim Schreiben eingefallen...
Aber ich habs halt gleich dazu geschrieben, weil ich mir eben nicht 100%ig sicher war obs geht.

Jetzt muss ich nur noch rausfinden, wo das im Programm am geschicktesten wäre.
Weil sonst frisst das viel zu viel Performance.
renew ist offline   Mit Zitat antworten
Alt 05.05.2003, 21:47   #4
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Also ich glaube offengesagt nicht, dass diese Funktion besonders viel Performance frisst (sofern man sie nicht 10 mal in der Sekunde aufruft )

Verweis auf "scrrun.dll" und gib ihm.

Public Sub FreeSpace()
Dim FileSys As FileSystemObject
Dim drvCheck As Drive
Dim FreeSpace As String
Set FileSys = New FileSystemObject
Set drvCheck = FileSys.GetDrive("C:")
FreeSpace = Format(drvCheck.FreeSpace / (2 ^ 30), "#.000")
FreeSpace = Left(FreeSpace, Len(FreeSpace) - 1) & " GB"
MsgBox FreeSpace
End Sub
Seidl ist offline   Mit Zitat antworten
Alt 05.05.2003, 21:54   #5
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
Also ich glaube offengesagt nicht, dass diese Funktion besonders viel Performance frisst (sofern man sie nicht 10 mal in der Sekunde aufruft )

Verweis auf "scrrun.dll" und gib ihm.

Public Sub FreeSpace()
Dim FileSys As FileSystemObject
Dim drvCheck As Drive
Dim FreeSpace As String
Set FileSys = New FileSystemObject
Set drvCheck = FileSys.GetDrive("C:")
FreeSpace = Format(drvCheck.FreeSpace / (2 ^ 30), "#.000")
FreeSpace = Left(FreeSpace, Len(FreeSpace) - 1) & " GB"
MsgBox FreeSpace
End Sub
danke...

Naja, es kommt darauf an wo das Ding positioniert ist.

Weil es geht ja darum, in einer Schleife zu checken ob er noch weiter machen kann (Datansätze erstellen), oder ob die Platte schon voll ist.
Ich müsst mir aber erst anschaun wo das sein soll, bzw. der der das Modul geschrieben hat tut dies und ich stell nur die Funktion bereit (sowas was du geschrieben hast - danke dafür, dann brauch ich es mir nciht raus suchen )

Oder man checkt das beim Formular/Modulaufruf - und gibt eine "Warnmeldung" aus, wenn der freie Platz unter einen gewissen Wert gefallen ist.

btw - passt zwar nicht dazu, aber du hast mal davon gesprochen, dass du Office 2k Developer verwendest.
Gibts so eine Edition auch für XP, weil ich davon eigentlich noch nix gehört hab.
renew ist offline   Mit Zitat antworten
Alt 05.05.2003, 21:59   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Nachtrag:

hab mich grad gewundert wofür du einen Verweis auf die scrrun.dll setzt.
Dann hab ich nachgeschaut und gesehen, dass das die Scripting Runtime ist.

Das coole daran ist aber, ich verwend in dem Projekt schon öfter das FSO, hab aber noch nie den Verweis gesetzt.

Das ganze hab ich auch schon mal mit deaktiviertem VBScript auf einer Maschine getestet - und da hats genauso funktioniert.

Jetzt stellt sich natürlich wieder die frage: WARUM GEHT DAS TROTZDEM!?
renew ist offline   Mit Zitat antworten
Alt 05.05.2003, 22:41   #7
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Zur Zeit treibe ich mit OfficeXP und dem "Microsoft Office XP Developer" mein Unwesen. Es gibt ihn also durchaus. Natürlich ist er bei weitem nicht so verbreitet wie Office allein. Wenn man nicht gerade Anwendungen schreibt die von vielen Personen verwendet werden sollen braucht man ihn ja auch nicht wirklich. Spätestens aber bei der ersten Notewendigkeit eine Access-Anwendung auf 100 Rechnern mit verschiedenen Windows-Versionen zu installieren erweist er sich als sehr nützlich

Betreffend scrrun.dll:
Manche Verweise setze ich eigentlich nur wegen der Libraries auch wenn es ohne Verweis genauso funktionieren würde. Ausserdem müssen verwendete Komponenten ja ohnehin geladen werden. Da mach ich's lieber gleich explizit als implizit.
Warum die Sache auch mit deaktiviertem VBScript funktioniert darfst du mich allerdings nicht fragen. Ich kann mir nur vorstellen, dass eine Scripting-Komponente die aus einer Executable heraus verwendet wird nicht als eigentliches Script gilt. Es geht ja nur um die Sicherheit und mit einer EXE kann ich ohnehin alles anstellen was mir in den Sinn kommt. Ob ich da jetzt das FSO verwende oder nicht macht ja im Endeffekt nicht wirklich einen Unterschied.

Zur Plazierung:
Wenn Datensätze einzeln erstellt werden, könntest du ja z.B. über "if aktuellerDatensatz mod X = 0 then" deine Abfrage starten. Wenn du z.B. nach jedem geschriebenen MB eine Überprüfung machen willst müsstest du ja nur X auf "1024 / DurchschnittlicheSatzgrösseInKB" setzen.
Seidl ist offline   Mit Zitat antworten
Alt 05.05.2003, 23:00   #8
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
Ich kann mir nur vorstellen, dass eine Scripting-Komponente die aus einer Executable heraus verwendet wird nicht als eigentliches Script gilt. Es geht ja nur um die Sicherheit und mit einer EXE kann ich ohnehin alles anstellen was mir in den Sinn kommt. Ob ich da jetzt das FSO verwende oder nicht macht ja im Endeffekt nicht wirklich einen Unterschied.
das war auch das was ich mir damals gedacht hab...

Nur ists mir jetzt wieder in den Sinn gekommen, weil es ja ohne expliziten Verweis auch funktioniert.
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:40 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag