Post by UkMuszę przyznać, że trochę się w tym gubię, ...
Już trochę mniej. :-)
Myślę, że już z grubsza rozumiem o co w tym chodzi.
Kupiłem również książeczkę do VBScript.
Właściwie w tej chwili brak mi opisu Windows Script Hosta
- co, do czego, jak używać ...w VBScripcie (na przykład).
Jakbyś mógł podać jakiś adres i nie sprawiłoby to Tobie
dużego kłopotu to byłbym wdzięczny. Nietety, Google nie
pomogły.
[...]
Ja nie używam na codzień WSH.
Traktuję go raczej jako ciekawostkę niż narzędzie.
W wielu wypadkach to co oferuje WSH da się załatwić
w Accessie (VBA) lub za pomocą API.
Praktycznie, pracująć zWSH korzystam z pomocy zawartej
w mse.exe oraz z Google.
Tytułem ciekawostki i może rozjaśnienia problemu:
spróbuj wkleić poniższy kod do Notatnika i zapisać z rozszerzeniem *.hta
i potem go otworzyć.
Mozesz ewentualnie zapisać z rozszerzeniem *.htm i też przetestować.
W takim podejściu możesz mieszać VBScript i JScript
i dodatkowo JavaScript,
Teoretycznie powinno wszystko zadziałać.
Plik został utworzony w mse.exe.
'________________________________
<HTML><HEAD>
<TITLE>Defragmentacja bazy</TITLE>
<HTA:APPLICATION ID="DefID"
APPLICATIONNAME = "defrag"
Application SCROLL = "no"
Application Caption = ""
Caption = ""
BORDER = "tick"
BorderStyle = "none"
ICON = ""
MAXIMIZEBUTTON = "no"
MINIMIZEBUTTON = "no"
SHOWINTASKBAR = "no"
SINGLEINSTANCE = "yes"
SYSMENU = "yes"
Version = "3.14"
WINDOWSTATE = "normal"/>
<SCRIPT LANGUAGE="VBScript">
<!--
Private Sub center()
Dim aw, ah
Const w = 500
Const h = 200
ah = Screen.availHeight
aw = Screen.availWidth
Window.resizeTo w, h
Window.moveTo (aw - w) / 2, (ah - h) / 2
End Sub
'________________
Private Sub defrag()
Dim sPath, lRet, fso, sExt
Dim dbEng
Const cTmp = "_tmp"
Const cVerDAO = "DAO.dbEngine.36"
sPath = file1.Value
If Len(sPath) = 0 Then
MsgBox "Musisz wybrać bazę do defragmentacji !"
Else
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
'jeżeli w pliku *.htm użytkownik nie zgodził
'się na uruchomienie ActiveX - wyjdź z procedury
' *** - nie dotyczy *.hta ***
If Err.Number <> 0 Then
Err.Clear
Exit Sub
End If
lRet = fso.FileExists(sPath)
If lRet = True Then
sExt = Right(sPath, 4)
If sExt = ".mdb" Or sExt = ".mde" Then
lRet = 0
lRet = MsgBox("Czy chcesz zdefragmentować bazę:" & _
vbNewLine & sPath, vbYesNo + vbDefaultButton2)
If lRet = vbYes Then
On Error Resume Next
Set dbEng = CreateObject(cVerDAO)
dbEng.CompactDatabase sPath, sPath + cTmp
If Err.Number <> 0 Then
Err.Clear
Exit Sub
Else
fso.DeleteFile sPath
fso.MoveFile sPath & cTmp, sPath
End If
Set dbEng = Nothing
Else
MsgBox "Użytkownik zrezygnował"
End If
Else
MsgBox "Plik:" & vbNewLine & sPath & vbNewLine & _
"nie jest plikiem MSAccess !"
End If
Else
MsgBox "Plik:" & vbNewLine & _
sPath & " nie istnieje"
End If
Set fso = Nothing
End If
End Sub
-->
</SCRIPT>
</HEAD>
<BODY style="BACKGROUND-COLOR: silver" onload = center ()>
<P><FONT face="Arial CE" size=2><B>Wybierz bazę do defragmentacji:
</B></P></FONT>
<INPUT type=file id=file1 name=file1
style=" WIDTH: 474px; HEIGHT: 22px;">
<P></P>
<P> <FONT face="Arial CE">
<INPUT type=button id=button1 name=button1
value=Defragmentuj onClick = defrag ()>
</FONT></P>
</BODY></HTML>
'_____________________________________________________
Oczywiście kod trzeba trochę dopracować, ale ogólny zarys chyba jest.
--
Pozdrowienia
BraZby