escreve um arquivo de texto com os resultados de uma consulta em vbs

0

Sou relativamente novo no script do Visual Basic e enfrentei um problema. Eu estou usando o Notepad + + e agora quando vou para o prompt de comando, eu posso obter minha consulta para executar com êxito e os resultados são retornados em um msgbox. Em vez de fazer o resultado da consulta aparecer em uma caixa de mensagem, quero que os resultados sejam salvos em um arquivo de texto.

O resultado dessa consulta é apenas uma contagem, procurando por erros, então seria bom se eu pudesse colocar os erros da palavra após o resultado. ("23 erros")

Além disso, sempre que executo o script, preciso que o arquivo de texto seja substituído pela versão mais recente do arquivo de texto (como uma cópia X.)

    Dim connStr, objConn, getNumber
    '''''''''''''''''''''''''''''''''''''
    'Define the driver and data source
    'Access 2007, 2010, 2013 ACCDB:
    'Provider=Microsoft.ACE.OLEDB.12.0
    'Access 2000, 2002-2003 MDB:
    'Provider=Microsoft.Jet.OLEDB.4.0
    ''''''''''''''''''''''''''''''''''''''
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Q:\Temp 8 Days Only\SAPDTW\eric_copy_dtw.mdb"

    'Define object type
    Set objConn = CreateObject("ADODB.Connection")

    'Open Connection
    objConn.Open connStr

    'Define recordset and SQL query
    Set rs = objConn.Execute("select count(*) from OLOG where (AddFaiCnt + UpdFaiCnt) > 0 and DateValue(DateTime)>=Date()-1")

    'While loop, loops through all available results
    Do While Not rs.EOF
    'add names seperated by comma to getNames
    getNumber = getNumber + rs.Fields(0) & "," 
    'move to next result before looping again
    'this is important
    rs.MoveNext
    'continue loop
    Loop

    'Close connection and release objects
    objConn.Close
    Set rs = Nothing
    Set objConn = Nothing


    Set objFSO=CreateObject("Scripting.FileSystemObject")
    outFile="c:\test\autorun.inf"
    Set objFile = objFSO.CreateTextFile(outFile,True)
    objFile.Write "test string" & vbCrLf
    objFile.Close
   'Return Results via MsgBox

isto é o que eu tenho agora, qualquer ajuda seria muito apreciada.

    
por Sonican 06.07.2016 / 16:33

1 resposta

0

Isso deve funcionar .. Substitua sua declaração de execução por um dos seguintes:

Se você gosta dos parênteses, tente ...

'Define recordset and SQL query
Set rs = objConn.Execute("select '(' + CAST(COUNT(*) AS VARCHAR(20)) + ' errors)' from OLOG where (AddFaiCnt + UpdFaiCnt) > 0 and DateValue(DateTime)>=Date()-1")

Se você não liga para parênteses, tente ...

'Define recordset and SQL query
Set rs = objConn.Execute("select CAST(COUNT(*) AS VARCHAR(20)) + ' errors' from OLOG where (AddFaiCnt + UpdFaiCnt) > 0 and DateValue(DateTime)>=Date()-1")

Se CAST () não for reconhecido como uma função no acesso sql try ...

'Define recordset and SQL query
Set rs = objConn.Execute("select Str(COUNT(*)) + ' errors' from OLOG where (AddFaiCnt + UpdFaiCnt) > 0 and DateValue(DateTime)>=Date()-1")

Saiba que, para concatenar dados de string a algo que é um tipo de dados inteiro, o tipo de dado inteiro deve ser convertido / convertido em um tipo de dados que pode ser anexado a uma string, portanto, varchar. Espero que ajude.

Boa sorte ..

    
por 06.07.2016 / 19:48

Tags