2010-12-09 44 views
0

J'essaie de connecter l'invite de commande via le script VB et de poursuivre sa connexion avec l'environnement Oracle pour exécuter certains rapports d'Oracle Discoverer. Mais le problème est avec ce script VB seulement.Script VB pour exécuter une requête

ligne 2: pour établir la connexion. ligne 7: récupération du REQUEST_ID en cours. ligne 16: XXDIS_EXPORT_CMD_V est une vue et cmd est une colonne.qui sélectionne une valeur comme celle-ci pour REQUEST_ID correspondant. /CONNECT DISCADMIN: "FAI Finance Intelligence"/discbi @ deverp/opendb "1 Scheduling"/FICHE "Sheet_1"/EXPORT HTML o27673334.out/LOGFILE l27673334.log/LOT

En fin de compte je veux exécuter cette cmd en utilisant VBScript.

Erreur à venir:

"In line 32 tkgoShell was not recognized"

Ceci est mon code:

' Process job 
    Set objADO =CreateObject("ADODB.Connection") 
    objADO.Open "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=deverp; UID=apps; PWD=apps11i;" 
    MsgBox "Connection Established to Server.", vbExclamation + vbOKOnly, "System" 
    Do While True 
    ' Check if there is a job to process 
    Set moRS=objADO.execute("SELECT apps.xxdis_schedule_pkg.start_job REQUEST_ID FROM dual") 
    moRS.MoveFirst 
    msRequest = moRS("REQUEST_ID") 
    'MsgBox msRequest,msRequest 
    ' If no jobs then exit 
    ' If msRequest = "0" Then 
    Exit Do 
    ' End If 
    loop 
    Set moRS=objADO.execute("SELECT cmd EXPORT_CMD FROM apps.xxdis_export_cmd_v " & _ 
    "WHERE request_id = " & msRequest) 
    MsgBox msRequest,msRequest 
    moRS.MoveFirst 
    msExpCmd = moRS("EXPORT_CMD") 
    ' write command into a temporary file 
    msCmdFile = "r" & msRequest & ".cmd" 
    dim moOutputStream,filesys,msCommand 
    Set filesys = CreateObject("Scripting.FileSystemObject") 
    Set moOutputStream = filesys.CreateTextFile(msCmdFile, True) 
    ' Substitute $SAMBA$ and $TNS$ locally configured variables 
    moOutputStream.Write Replace(Replace(msCmd, "$SAMBA$", gsOutDir),_ 
    "$TNS$", gsInstance) & vbCRLF 
    moOutputStream.Close 
    ' Call Discoverer to process the command 
    msCommand = gsBinDir & gsDiscoExe & " /EUL " & gsEUL & " /CMDFILE " & msCmdFile 
    Call tkgoShell.Run (msCommand, 1, true) 

Répondre

0

Si je comprends bien votre code correctement je ne vois nulle part où vous créez en fait le tkgoShell.

Essayez d'insérer les 2 lignes suivantes avant votre dernière ligne:

Dim tkgoShell 
Set tkgoShell = WScript.CreateObject ("WScript.Shell") 

Voir ici pour plus d'informations sur Shell.Run.

+0

J'ai fait les changements et je reçois cette erreur maintenant. Erreur: Impossible d'attendre le processus, Code: 80020009 Source: WshShell.Run, Ligne: 35 –

+0

@Alok: Cela peut arriver si la commande envoyée au 'Run' est malformée (peut-être un mauvais chemin ou manque-t-il des guillemets ou similaire) . –