Hi,
Hab mir gedacht um in Access eine ProgressBar dar stellen zu können brauch ich den momentanen Satus und die gesamte größe.
Naja OK.
Hab mir gedacht fasse die FTP Funktion in eine .dll und wenn wie in der Hilfe die Textbox sich ändert, löse ich ein Event aus und übergebe die Zahlen.
Macht es auch , nur beim Ausführen in meiner Hauptanwendung kommt dann
"Withblock oder Objektvariable nicht definiert"
Weiß nur nicht warum.
Vielleicht kann mal jemand en Blick darauf werfen.Option Explicit
Private WithEvents txthidden As TextBox
Dim hSocket As Long
Dim nResult As Long
Private Declare Function VBEX_FTPStatusCode Lib "vbex32.dll" _
Alias "VBFTPSTATUSCODE" () As Long
Private Declare Function VBEX_FTPStatusMsg Lib "vbex32.dll" _
Alias "VBFTPSTATUSMSG" () As String
Private Declare Function VBEX_FTPFileDownload Lib "vbex32.dll" _
Alias "VBFTPFILEDOWNLOAD" ( _
ByVal hSocket As Long, _
ByVal hStatus As Long, _
ByVal sServer As String, _
ByVal sRemoteFile As String, _
ByVal sLocalFile As String, _
ByVal nTransferMode As Long) As Long
Private Declare Function VBEX_FTPConnect Lib "vbex32.dll" _
Alias "VBFTPCONNECT" ( _
ByVal sServer As String, _
ByVal sUser As String, _
ByVal sPassword As String) As Long
Public Event progress(ByVal ProgressBar As Variant, ByVal Total As Variant)
' Konstanten (StatusCode)
Const VBFTP_INVALID_SOCKET = Not 0
Const VBFTP_RESTART_MARKER_REPLY = 110
Const VBFTP_SERVICE_READY_SOON = 120
Const VBFTP_OPEN_STARTING_TRANSFER = 125
Const VBFTP_FILE_READY = 150
Const VBFTP_OK = 200
Const VBFTP_COMMAND_NOT_IMPLEMENTED = 202
Const VBFTP_SYSTEM_STATUS = 211
Const VBFTP_DIRECTORY_STATUS = 212
Const VBFTP_FILE_STATUS = 213
Const VBFTP_HELP_MESSAGE = 214
Const VBFTP_SYSTEM_TYPE_NAME = 215
Const VBFTP_SERVICE_READY = 220
Const VBFTP_CONNECTION_CLOSING = 221
Const VBFTP_OPEN_NO_CURRENT_TRANSFER = 225
Const VBFTP_TRANSFER_COMPLETE = 226
Const VBFTP_ENTERING_PASSIVE_MODE = 227
Const VBFTP_USER_LOGGED_IN = 230
Const VBFTP_ACTION_COMPLETED = 250
Const VBFTP_DIRECTORY_OK = 257
Const VBFTP_PASSWORD_NEEDED = 331
Const VBFTP_ACCOUNT_NEEDED = 332
Const VBFTP_ACTION_PENDING = 350
Const VBFTP_SERVICE_UNAVAILABLE = 421
Const VBFTP_DATA_CONN_NOT_OPENED = 425
Const VBFTP_DATA_CONN_CLOSED = 426
Const VBFTP_FILE_UNAVAILABLE = 450
Const VBFTP_LOCAL_PROCESSING_ERROR = 451
Const VBFTP_NOT_ENOUGH_DISK_SPACE = 452
Const VBFTP_COMMAND_NOT_RECOGNIZED = 500
Const VBFTP_BAD_PARAMETERS = 501
Const VBFTP_NOT_IMPLEMENETED = 502
Const VBFTP_BAD_COMMAND_SEQUENCE = 503
Const VBFTP_COMMAND_UNAVAILABLE = 504
Const VBFTP_USER_NOT_LOGGED_IN = 530
Const VBFTP_ACCOUNT_NEEDED_TO_STORE = 532
Const VBFTP_ACCESS_DENIED = 550
Const VBFTP_PAGE_TYPE_UNKNOWN = 551
Const VBFTP_STORAGE_LIMIT_EXCEEDED = 552
Const VBFTP_BAD_FILE_NAME = 553
Public Function Down(ByVal sServer As Variant, ByVal User As Variant, ByVal _
Pass As Variant, _
ByVal sRemoteFile As Variant, ByVal sLocalFile As Variant, _
ByVal nMode As Variant)
' Verbindung zum eigenen T-Online FTP-Server herstellen
hSocket = VBEX_FTPConnect(sServer, User, Pass)
If hSocket > 0 Then
' JEPP - Verbindung steht ;
Else
MsgBox CStr(VBEX_FTPStatusCode()) & " - " & VBEX_FTPStatusMsg()
End If
' Download starten
nResult = VBEX_FTPFileDownload(hSocket, txthidden.hWnd, sServer, _
sRemoteFile, sLocalFile, nMode)
End Function
Private Sub txtHidden_Change()
' Fortschritt grafisch anzeigen
Dim lngProgress As Long
Dim lngTotal As Long
Dim sData() As String
sData = Split(txthidden.Text, " ")
lngProgress = Val(sData(0))
lngTotal = Val(sData(2))
RaiseEvent progress(lngProgress, lngTotal)
DoEvents
End Sub Bin echt um jede Hilfe dankbar.
Vielen Vielen Dank im Voraus
Mfg Patrick Hennig |