VBScript на проверку, если записи существуют - PullRequest
0 голосов
/ 14 сентября 2009

У меня есть таблица и текстовый файл. Как только записи в таблице скопированы в текстовый файл, записи будут удалены. Но таблица все еще используется и будет время от времени вставляться с новыми записями (другой программой). Что делать, проверяя Как убедиться, что если в таблице нет записей, программа никогда не скопирует в текстовый файл.

Любое решение или ссылки очень благодарны. Большое спасибо. Я тестирую в WSH и использую MSSQL Server 2005.

<code>'call functions
  call CopyFile()
  call tblDelete()<br>
Sub tblDelete()
    Dim sql1
    sql1 = "DELETE from tblOutbox"
    rs = conn.Execute(sql1)
End Sub<br>
Sub CopyFile
   'set the sql command
    cmd.CommandText = "SELECT * FROM tblOutbox"
    cmd.CommandType = 1 ''# adCmdText Command text is a SQL query
    Dim rs : Set rs = cmd.Execute
   'create obj for the FileSystem
    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim objFile, objFolder<br>
    Dim strDir, strFile
    strDir = "c:\"
    strFile = "\newFile.txt"
   'check that the strDirectory folder is exist
    If objFSO.FolderExists(strDir) Then
       Set objFolder = objFSO.GetFolder(strDir)
    Else
       Set objFolder = objFSO.CreateFolder(strDirectory)
       WScript.Echo "Just created " & strDir
    End If
    If objFSO.FileExists(strDir & strFile) Then
       Set objFolder = objFSO.GetFolder(strDir)
    Else
       Set objFile = objFSO.CreateTextFile(strDir & strFile)
       Wscript.Echo "Just created " & strDir & strFile
    End If 
    Set objFile = Nothing
    Set objFolder = Nothing
   'open files and copy into<br>
    Dim objtextStream : Set objtextStream = objFSO.OpenTextFile(strDir & strFile, 8, True)
    Do Until rs.EOF 
       objtextStream.Write rs("id") & ", "<br>
       objtextStream.Write rs("ip") & ", "
       objtextStream.Write rs("msg") & ", "
       objtextStream.WriteLine rs("date")<br>
       rs.MoveNext
    Loop
        objTextStream.WriteLine
        objTextStream.WriteLine "Report Generate at " & Now
        objTextStream.WriteLine "--------------------------------------------"
    objtextStream.Close 
    rs.Close<br>
End Sub

Ответы [ 2 ]

0 голосов
/ 14 сентября 2009

Вы могли бы поставить

If rs.RecordCount > 0 Then
   exit sub
End If

до

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile, objFolder 

т.е. Не выполняйте ни одно из утверждений, если нет записей.

0 голосов
/ 14 сентября 2009

Можете ли вы настроить свой код в таком формате, как следующий, в котором вы откладываете открытие выходного файла до тех пор, пока вы не выполните свой запрос и не получите хотя бы один ответ:

Set up SQL statement 
Execute SQL query 
init bFirstRecord as true 
Loop over results   
  if bFirstRecord
   check folder and file existence, create as necessary
   open output file
   bFirstRecord = false   
  end if   
  write record to output 
End Loop
Close up files, etc
...