Я довольно новичок в сценариях Visual Basic и столкнулся с проблемой. Я использую Notepad++ и прямо сейчас, когда я захожу в командную строку, я могу заставить свой запрос успешно работать, и результаты возвращаются в msgbox. Вместо того, чтобы результат запроса появлялся в окне сообщения, я хочу, чтобы результаты были сохранены в текстовом файле.

Результатом этого запроса является просто подсчет, ищущий ошибки, поэтому было бы хорошо, если бы я мог поставить слово ошибки после результата. ("23 ошибки")

Кроме того, всякий раз, когда я запускаю скрипт, мне нужно заменить текстовый файл самой новой версией текстового файла (вроде 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

это то, что я имею сейчас, любая помощь будет принята с благодарностью.

1 ответ1

0

Это должно работать .. Замените ваш оператор execute одним из следующих:

Если вам нравятся скобки, попробуйте ...

'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")

Если вам не нужны скобки, попробуйте ...

'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")

Если CAST() не распознается как функция в доступе SQL, попробуйте ...

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

Знайте, что для объединения строковых данных с чем-то, что является целочисленным типом данных, целочисленный тип данных должен быть приведен / преобразован в тип данных, к которому вы можете добавить строку, следовательно, varchar. Надеюсь, это поможет.

Удачи..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .