Newsgroup: it.comp.appl.access
Titolo: FTP

Salve a tutti
Vorrei sapere se con VBA è possibile stabilire una connessione FTP e dare i
relativi comandi per permettere di uploadare automaticamente in un dato sito
una pagina html generata da dati di AccessXP
Grazie

 wrote in message
news:o6sG9.20797$qF1.9...@news2.tin.it...

Ti allego una funzione che ho creato per l'upload batch via ftp.
Saluti.
'----- Function ----'
Option Explicit
Const sSMSTable As String = "sms"           'Nome della tabella contenente
gli SMS da inviare
Const sFTPServer As String = "localhost"    'FTP Server del gateway SMS
Const sUserName As String = "pippo"         'User name dell'account FTP
Const sPassword As String = "pippo"         'Password dell'account FTP
Const sLocalDir As String = "\outgoing"     'Sotto-directory locale per ll
posizionamento dei file
                                            'batch e dati
Private Declare Function OpenProcess Lib _
   "kernel32" (ByVal dwDesiredAccess As Long, _
   ByVal bInheritHandle As Long, _
   ByVal dwProcessID As Long) As Long
Private Declare Function WaitForSingleObject _
   Lib "kernel32" (ByVal hHandle As Long, _
   ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib _
   "kernel32" (ByVal hObject As Long) As Long
Public Sub SendSMS(bSyncronous As Boolean, bBell As Boolean)
    Dim sLocalPath
    sLocalPath = Application.CurrentProject.Path & sLocalDir
    'Verifica dell'esistenza della sotto-direcotry locale
    On Error Resume Next
    If Dir(sLocalPath) = "" Then
        'Nel caso non esista la si crea
        MkDir (sLocalPath)
    End If
    On Error GoTo 0
    'Esportazione degli SMS da inviare
    DoCmd.TransferText acExportFixed, "SMS", sSMSTable, sLocalPath &
"\sms.txt"
    'Creazione del file di comando del gateway SMS (per il momento vuoto)
    Open sLocalPath & "\sms.txt.do_send" For Output As #1
    Close #1
    'Creazione del file script per l'upload ftp degli SMS
    Open sLocalPath & "\ftp.txt" For Output As #1
     Print #1, "open " & sFTPServer
     Print #1, sUserName
     Print #1, sPassword
     'Opzionale se si desidera fa emettere un beep ad ogni upload
     If bBell Then
      Print #1, "bell"
     End If
     Print #1, "ascii"
     Print #1, "cd incoming"
     Print #1, "put " & Chr(34) & sLocalPath & "\sms.txt" & Chr(34)
     Print #1, "put " & Chr(34) & sLocalPath & "\sms.txt.do_send" & Chr(34)
     Print #1, "close"
     Print #1, "bye"
    Close #1
    'Esecuzione dello script per l'upload ftp degli SMS
    Dim hPrg As Long
    Dim hProc As Long
    Dim iRet As Long
    If bSyncronous Then     'modalità sincrona
        hPrg = Shell("ftp -i -s:" & Chr(34) & sLocalPath & "\ftp.txt" &
Chr(34), 0)
        hProc = OpenProcess(&H1F0FFF, False, hPrg)
        If hProc <> Null Then
           iRet = WaitForSingleObject(hProc, -1&)
           CloseHandle hProc
        End If
    Else                    'modalità sincrona
        Call Shell("ftp -i -s:" & Chr(34) & sLocalPath & "\ftp.txt" &
Chr(34), 0)
    End If
End Sub

 ha scritto nel messaggio
news:o6sG9.20797$qF1.9...@news2.tin.it...

Nel developer di access'97 (in XP non lo so) è presente un activex "INet";
oltre al fatto che su internet trovi esempi a palettate.
Es. (acc'97)
- su una maschera inserisci il controllo activex INet chiamato "axInetTran";
nell'evento "su caricamento" inserisci il codice:
'----------
Private Sub Form_Load()
Set objFTP = Me!axInetTran.Object
End Sub
'----------
- due caselle di testo: "txtFTPSite" e "txtFileName";
- un bottone : "cmdGetFile"; nell'evento "su clic" inserisci il codice:
'----------------
Private Sub cmdGetFile_Click()
Dim strSite As String
Dim strFile As String
strSite = Me!txtFTPSite
strFile = Me!txtFileName
objFTP.Protocol = icFTP
objFTP.UserName = "Pippo"
objFTP.Password = "nonLaSo"
objFTP.URL = strSite
Do While objFTP.StillExecuting
    DoEvents
Loop
objFTP.Execute strSite, "PUT C:\temp\" & strFile & " " & strFile
Do While objFTP.StillExecuting
    DoEvents
Loop
objFTP.Cancel
End Sub
'----------------
- nel modulo della form inserisci il codice:
'-----------
Option Compare Database
Option Explicit
Dim objFTP As Inet
Private Sub axInetTran_StateChanged(ByVal State As Integer)
If State = 12 Then MsgBox "File Trasferito"
End Sub
'-----------
Altra alternativa (sistema operativo permettendo) è uno script che esegue il
comando ftp;
es. (file ftp.vbs)
ftp /s:ElencoComandiFtp.txt
(file ElencoComandiFtp.txt)
open 
ftp.microsoft.com
nomeUtente
password
ascii
cd nomeCartellaDoveCopiareIlFile
send c:\nomeFileDaInviare.htm
quit
Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:asf965$6dm$1...@canarie.caspur.it...



Per favore scrivi dopo il testo del messaggio precedente, come faccio io;
grazie.
A quale suggerimento ti riferisci? VBA (activex) o semplice script?
Ciao.
--
Sergio MAZZA