這是我的文本文件看起來像爲sql - 變量是在左,數據在右邊需要從文本文件導入信息使用VBA
; ------- Test #01 -------
Method , Ping
;--- Common properties ---
;DestFolder , Root\Black\
RMAgent , Black
Title , Black - Agent not connected
Comment , Ping mra itself
RelatedURL ,
NamePattern , %agent% - Agent not connected
CmntPattern , Ping %host%
ScheduleMode, Regular
Schedule ,
Interval , 600
Alerts , Send AM Email
ReverseAlert, No
UnknownIsBad, Yes
WarningIsBad, Yes
UseCommonLog, Yes
PrivLogMode , Default
CommLogMode , Default
這是到目前爲止我的代碼
Public Sub Load_Module1(ByVal FileName As String, ByVal LogFile As String)
End Sub
Sub main()
Dim fs As FileStream
Dim sw As StreamReader
Dim strNewFileName As String
Dim strFileExt As String
Dim intPos As Integer
Dim strColumnData As String() = Nothing
Dim intRow As Integer = 1
Dim strLine As String
'Dim strSubString As String
'-----------------------------------------------------------------------
' Do the Common Table
'-----------------------------------------------------------------------
Dim strDBConnection As String = "Data Source=*******;Initial Catalog=*******;User Id=*******;Password=*******"
Dim cn As New SqlConnection(strDBConnection)
Dim cmd As New SqlCommand("appsp_host_import", cn)
Const filename As String = "C:\Temp\HostMonitorTests2015-09-11change.txt.txt"
Dim dataArray() As String
Dim filenumber As Integer = FreeFile()
Dim strmethod As String
Dim strDestFolder As String
Dim strRMAgent As String
Dim strTitle As String
Dim strComment As String
Dim strRelatedURL As String
Dim strNamePattern As String
Dim strCmntPattern As String
Dim strScheduleMode As String
Dim strSchedule As String
Dim strInterval As Integer
Dim strAlerts As String
Dim strReverseAlert As Boolean
Dim strUnknownIsBad As Boolean
Dim strWarningIsBad As Boolean
Dim strUseCommonLog As Boolean
Dim strPrivLogMode As String
Dim strCommLogMode As String
Dim strtype As String
Dim strImportRow As String
Dim strLastOrderNum As String = ""
Dim intImportID As Integer
Dim intLineNum As Integer
Dim intQtyOrdered As Integer
Try
fs = New FileStream(filename, FileMode.Open, FileAccess.Read)
sw = New StreamReader(filename)
Catch e As Exception
Exit Sub
End Try
strLine = sw.ReadLine()
'Dim TextLine As String
'' Open file.
'' Loop until end of file.
'Do While Not EOF(1)
' ' Read line into variable.
' TextLine = LineInput(1)
' ' Display result in a message box.
' MsgBox("End of file reached at " & TextLine)
'Loop
'FileClose(1)
Dim pos As Integer = InStr("; ------- Test #01 -------")
While Not sw.EndOfStream
If filename.Contains("; ------- Test #01 -------") Then
cn.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@DestFolder", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@RMAgent", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@Title", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@Comment", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@RelatedURL", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@NamePattern", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@CmntPattern", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@ScheduleMode", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@Schedule", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@Interval", SqlDbType.Int)
cmd.Parameters.Add("@Alerts", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@ReverseAlert", SqlDbType.Bit)
cmd.Parameters.Add("@UnknownIsBad", SqlDbType.Bit)
cmd.Parameters.Add("@WarningIsBad", SqlDbType.Bit)
cmd.Parameters.Add("@UseCommonLog", SqlDbType.Bit)
cmd.Parameters.Add("@PrivLogMode", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@CommLogMode", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@SyncCounters", SqlDbType.Bit)
cmd.Parameters.Add("@SyncAlerts", SqlDbType.Bit)
cmd.Parameters.Add("@DependsOn", SqlDbType.VarChar, 512)
cmd.Parameters.Add("@Testspecific", SqlDbType.VarChar, 512)
End If
strtype = Mid(strLine, 13, 1)
Select Case strtype
Case "Method"
strmethod = Trim(Mid(strLine, 14, 99))
Case ";DestFolder"
strDestFolder = Trim(Mid(strLine, 14, 99))
Case "RMAgent"
strRMAgent = Trim(Mid(strLine, 14, 99))
Case "Title"
strTitle = Trim(Mid(strLine, 14, 99))
Case "Comment"
strComment = Trim(Mid(strLine, 14, 99))
Case "RelatedURL"
strRelatedURL = Trim(Mid(strLine, 14, 99))
Case "NamePattern"
strNamePattern = Trim(Mid(strLine, 14, 99))
Case "CmntPattern"
strCmntPattern = Trim(Mid(strLine, 14, 99))
Case "ScheduleMode"
strScheduleMode = Trim(Mid(strLine, 14, 99))
Case "Schedule"
strSchedule = Trim(Mid(strLine, 14, 99))
Case "Interval"
strInterval = Trim(Mid(strLine, 14, 99))
Case "Alerts"
strAlerts = Trim(Mid(strLine, 14, 99))
Case "ReverseAlert"
strReverseAlert = Trim(Mid(strLine, 14, 99))
Case "UnknownIsBad"
strUnknownIsBad = Trim(Mid(strLine, 14, 99))
Case "WarningIsBad"
strWarningIsBad = Trim(Mid(strLine, 14, 99))
Case "UseCommonLog"
strUseCommonLog = Trim(Mid(strLine, 14, 99))
Case "PrivLogMode"
strPrivLogMode = Trim(Mid(strLine, 14, 99))
Case "CommLogMod"
strCommLogMode = Trim(Mid(strLine, 14, 99))
cmd.ExecuteNonQuery()
cmd.Parameters("@Reset").Value = 0
End Select
filenumber = 0
'sw.Close()
'fs.Close()
cn.Close()
End While
FileClose(1)
'Try
' cn.Open()
' cmd.CommandType = CommandType.StoredProcedure
' cmd.Parameters.Add("@DestFolder", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@RMAgent", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@Title", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@Comment", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@RelatedURL", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@NamePattern", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@CmntPattern", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@ScheduleMode", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@Schedule", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@Interval", SqlDbType.Int)
' cmd.Parameters.Add("@Alerts", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@ReverseAlert", SqlDbType.Bit)
' cmd.Parameters.Add("@UnknownIsBad", SqlDbType.Bit)
' cmd.Parameters.Add("@WarningIsBad", SqlDbType.Bit)
' cmd.Parameters.Add("@UseCommonLog", SqlDbType.Bit)
' cmd.Parameters.Add("@PrivLogMode", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@CommLogMode", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@SyncCounters", SqlDbType.Bit)
' cmd.Parameters.Add("@SyncAlerts", SqlDbType.Bit)
' cmd.Parameters.Add("@DependsOn", SqlDbType.VarChar, 512)
' cmd.Parameters.Add("@Testspecific", SqlDbType.VarChar, 512)
' 'cmd.Parameters("@Reset").Value = 1
'Catch e As Exception
' Exit Sub
'End Try
If Not sw.EndOfStream Then
strLine = sw.ReadLine() 'Get the header line
End If
While Not sw.EndOfStream
Try
strLine = sw.ReadLine()
intRow = intRow + 1
If UCase(Mid(strLine, 1, 3)) = "YES" Or UCase(Mid(strLine, 1, 3)) = "NO " Then
cmd.Parameters("@DestFolder").Value = UCase(Trim(Mid(strLine, 1, 3)))
cmd.Parameters("@RMAgent").Value = Trim(Mid(strLine, 7, 6))
cmd.Parameters("@Title").Value = Trim(Mid(strLine, 14, 15))
cmd.Parameters("@Comment").Value = Trim(Mid(strLine, 14, 15))
cmd.Parameters("@RelatedURL").Value = Trim(Mid(strLine, 47, 5))
cmd.Parameters("@NamePattern").Value = Trim(Mid(strLine, 52, 5))
cmd.Parameters("@CmntPattern").Value = Trim(Mid(strLine, 60, 8))
cmd.Parameters("@ScheduleMode").Value = Trim(Mid(strLine, 69, 8))
cmd.Parameters("@Schedule").Value = Trim(Mid(strLine, 83, 6))
cmd.Parameters("@Interval").Value = CInt(Trim(Mid(strLine, 78, 4)))
cmd.Parameters("@Alerts").Value = Trim(Mid(strLine, 83, 6))
cmd.Parameters("@ReverseAlert").Value = 0
cmd.Parameters("@UnknownIsBad").Value = 0
cmd.Parameters("@WarningIsBad").Value = 0
cmd.Parameters("@UseCommonLog").Value = 0
cmd.Parameters("@PrivLogMode").Value = Trim(Mid(strLine, 175, 7))
cmd.Parameters("@CommLogMode").Value = Trim(Mid(strLine, 175, 7))
cmd.Parameters("@SyncCounters").Value = 0
cmd.Parameters("@SyncAlerts").Value = 0
cmd.Parameters("@DependsOn").Value = Trim(Mid(strLine, 175, 7))
cmd.Parameters("@Testspecific").Value = Trim(Mid(strLine, 175, 7))
cmd.ExecuteNonQuery()
cmd.Parameters("@Reset").Value = 0
End If
Catch e As Exception
Exit Sub
End Try
End While
sw.Close()
fs.Close()
cn.Close()
'Move the file
intPos = filename.Length
While intPos > 0
If Mid(filename, intPos, 1) = " " Then
Exit While
End If
intPos = intPos - 1
End While
strNewFileName = Left(filename, intPos)
strNewFileName = strNewFileName & "Archive\" & Mid(filename, intPos + 1, 999)
strFileExt = "_" & Now.ToString("yyyyMMdd_hhmmss") & ".txt"
strNewFileName = strNewFileName.Replace(".txt", strFileExt)
Try
System.IO.File.Move(filename, strNewFileName)
Catch e As Exception
End Try
End Sub
那麼是什麼問題? – MikeTheLiar
它不能正常工作,我不知道如何獲得數據來區分變量和數據。我也無法弄清楚如何讓代碼找到它的起始位置。我幾乎使用了本網站的所有教程以及其他許多無解的教程。 – ayono
那麼,我不太瞭解VB,但是在我看來,你的邏輯很多都被註釋掉了。我建議你看看如何1)從文件中讀取一行數據,2)在分隔符上分割該行,在這種情況下是逗號。這應該讓你在正確的開始。 – MikeTheLiar