Esecuzione modulo vbs

di il
11 risposte

Esecuzione modulo vbs

Buonasera,
ho bisogno di una mano esperta.
Esiste un modo per far partire in automatico un modulo vbs?

Di solito creo un file bat che far partire la macro che esegue una query
ma con il modulo vbs non ho idea di come si faccia.


Quello che vorrei fare è il seguente:

1) il file bat apre il database di access - apre il modulo vbs ed a fine esecuzione lo chiude.


Riuscite ad aiutarmi?

grazie

11 Risposte

  • Re: Esecuzione modulo vbs

    Se il problema è nel bat che c'entra access?
  • Re: Esecuzione modulo vbs

    Il file VBS viene eseguito senza necessità di aprire Access... perchè tu debba aprirlo prima per poi lanciare il VBS è quanto meno strano e discutibile senza qualche spiegazione...
  • Re: Esecuzione modulo vbs

    Nel modulo vbs c'è il codice che aggiorna
    Le tabelle di access.
    Io di solito lo faccio partire aprendo access , apro il modulo
    Clicco su play e parte .

    Dite che se creo un file vbs con lo stesso codice fa la stessa cosa?
  • Re: Esecuzione modulo vbs

    momodj20 ha scritto:


    Nel modulo vbs c'è il codice che aggiorna
    Le tabelle di access.
    Io di solito lo faccio partire aprendo access , apro il modulo
    Clicco su play e parte .

    Dite che se creo un file vbs con lo stesso codice fa la stessa cosa?
    Scusa fammi capire... hai aperto Access e per aggiornare le Tabelle lanci un codice VBS esterno...?
    Non ti è venuto in mente che sia assolutamente assurdo e tecnicamente sconveniente...?
    Se hai Access aperto usa Access.
    Se devi SCHEDULARE con lo SCHEDULER di WINDOWS invece usa il codice VBS che lancerai con il BAT, e tramite DAO/ADO e comandi DDL vai ad aggionrare i dati...

    Nulla di più.
  • Re: Esecuzione modulo vbs

    Di solito faccio così:
    1) apro access
    2) apro il modulo su access con Il codice che lancio si collega su as400 e su un server
    Sqlserver e scarica le tabelle su access.
    3) chiudo access


    Adesso devo fare la stessa cosa però schedulato e che faccia tutto in automatico.

    Sai come si fa?

    Devo creare una Macro che apre il modulo e lo fa partire?
    O cosa?
  • Re: Esecuzione modulo vbs

    Non capisco cosa non ti sia chiaro...!
    Se devi schedularlo DEVI SCRIVERE codice VBS che lanci con il BAT, il codice VBS se scritto correttamente viene intepretato senza necessità che venga aperto Access, quindi eseguito.
    Se ti serve questa utilità anche da Access, non lanci il VBS, ma gestisci da VBA internamente ad Access, sono 2 scenari diversi.
  • Re: Esecuzione modulo vbs

    momodj20 ha scritto:


    Adesso devo fare la stessa cosa però schedulato e che faccia tutto in automatico.
    Sai come si fa?
    Concordo al 100% con @Alex.
    E' completamente inutile aprire MSAccess.

    Crei una Operazione Pianificata su Windows che esegua il file BAT.
  • Re: Esecuzione modulo vbs

    Questo è il codice che c'è dentro il modulo.


    Come faccio a farlo partire senza aprire access?






    Option Compare Database

    Sub TD_DATI_DWH_VE()


    DoCmd.SetWarnings False


    Dim DWH_Conn As String
    Dim dbAccessPath As String
    Dim SqlAccess As String

    Dim dbDWH As New ADODB.Connection

    Set cmd = New ADODB.Command

    Dim dbAccess As Database

    Dim rs1 As ADODB.Recordset
    Dim rs2 As Recordset


    ' Stringa connesione sql DWH

    DWH_Conn = "Driver={SQL Server};Server=192.168.1.225;Database=db_DWH_STD;Uid=access;Pwd=h;"

    ' Apertura connessione sql DWH

    dbDWH.Open DWH_Conn

    cmd.ActiveConnection = dbDWH
    cmd.CommandTimeout = 0


    '__________________________________________________________________________________________________________

    ' Apertura data base access VD_AC

    dbAccessPath = Application.CurrentProject.Path & "\VD_AC.accdb"
    Set dbAccess = OpenDatabase(dbAccessPath)

    '__________________________________________________________________________________________________________


    ' TRASFERISCO LE VENDITE ANNO IN CORSO DA F_Vendite


    SqlAccess = "DELETE VD_AC.* FROM VD_AC;"


    dbAccess.Execute SqlAccess


    Set rs2 = dbAccess.OpenRecordset("VD_AC", dbOpenTable)


    'Carico tabella VD_AC da DWH

    cmd.CommandText = "SELECT F_Vendite.ID_Azienda, F_Vendite.cdCompetenzaVendita, F_Vendite.cdMagazzino, F_Vendite.cdVenditore, " & _
    "F_Vendite.cdAgente, F_Vendite.cdSubAgente, F_Vendite.cdCliente, F_Vendite.cdTipoVendita, F_Vendite.cdCausaleMagazzino, " & _
    "F_Vendite.NrFattura, F_Vendite.NrBolla, F_Vendite.ID_DataRiferimento AS DTR, F_Vendite.ID_DataBolla AS DTB, " & _
    "F_Vendite.cdArticolo, F_Vendite.Qta, F_Vendite.Valore , F_Vendite.PVLN " & _
    "FROM F_Vendite WHERE F_Vendite.ID_DataRiferimento>=20170101 and F_Vendite.ID_DataRiferimento<= 20171231 AND (F_Vendite.ID_TipoVendita=11 OR F_Vendite.ID_TipoVendita=12);"

    Set rs1 = cmd.Execute

    Set rs2 = dbAccess.OpenRecordset("VD_AC", dbOpenTable)

    Do Until rs1.EOF
    rs2.AddNew
    For Each f In rs2.Fields
    rs2.Fields(f.Name) = rs1.Fields(f.Name).Value
    Next
    rs2.Update
    rs1.MoveNext
    Loop


    'Rilascio gli oggetti RecordSet
    rs1.Close
    rs2.Close
    Set rs1 = Nothing
    Set rs2 = Nothing


    DoCmd.SetWarnings True
    DoCmd.Hourglass False

    'chiudo VD_AC

    dbAccess.Close





    DoCmd.SetWarnings True
    DoCmd.Hourglass False
    MsgBox ("Trasferimento dati completata")


    End Sub
    Allegati:
    22011_41f7e8880c49e5cf5139830878448e27.png
    22011_41f7e8880c49e5cf5139830878448e27.png
  • Re: Esecuzione modulo vbs

    Questo non è un file VBS.
    VBS significa VBScript e non può contenere quelle istruzioni.
  • Re: Esecuzione modulo vbs

    Riesci ad aiutarmi per creare questo benedetto vbs o quello che vuoi per far partire il modulo?
  • Re: Esecuzione modulo vbs

    Mi sa che tu confondi vbs e vba ... e confondi tutti quelli che ti rispondono. Se non è chiarissimo quello che vuoi fare, è impossibile iniziare un discorso...
Devi accedere o registrarti per scrivere nel forum
11 risposte