怎样实现这个功能?关于写log文件

godblessedman 2003-08-22 10:22:34
如果log文件没有内容,从00001开始写
如果有按顺序继续往下泄,一直到99999
然后保存为log.dat.bak

再有新的纪录就新建log.dat
...全文
66 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shawls 2003-08-22
  • 打赏
  • 举报
回复
ublic Sub WriteLog(Optional SaveType As SType)
If Err.Number <> 0 Then
Select Case SaveType
Case 0
App.StartLogging App.Path & "\" & App.Title & ".log", vbLogToFile
'App.LogEvent "Time: " & VBA.Now() & " ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
Case 1
App.StartLogging "", vbLogToNT
'App.LogEvent "ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
Case 2
Err.Clear
Exit Sub
Case Else
'App.LogEvent "ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
End Select
App.LogEvent "Time: " & VBA.Now() & " ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
Err.Clear
End If
End Sub
道素 2003-08-22
  • 打赏
  • 举报
回复
不好意思没发现,上边已经这么多回复了
道素 2003-08-22
  • 打赏
  • 举报
回复
打开文件,将指针定位到最后一行有效记录
用split取出记录号,转化为数值在加一然后在加上消息写入,文件
如果此时记录号已经到了99999最好就进行改名工作不要等下次还要判断
lihonggen0 2003-08-22
  • 打赏
  • 举报
回复



OpenAsTextStream (ForReading)
读取出上一次的纪录


----------------
OpenAsTextStream (ForAppending)

这样追加
godblessedman 2003-08-22
  • 打赏
  • 举报
回复
forwriting 不能读的
是不是要用for appending


关键是怎么实现取出上一次的纪录是多少,然后再追加一条纪录,按顺序。
lihonggen0 2003-08-22
  • 打赏
  • 举报
回复
'引用microsoft script runtime


Private Sub Command1_Click()

Dim fsoTest As New FileSystemObject, file1 As File, ts As TextStream
Set file1 = fsoTest.GetFile("c:\a.txt")
Set ts = file1.OpenAsTextStream(ForWriting)
'使用Write方法写入
For I = 1 To 99999
ts.Write (I & vbCrLf)
Next
ts.Close
End Sub

godblessedman 2003-08-22
  • 打赏
  • 举报
回复
我需要用FileSystemObject对象的方法
射天狼 2003-08-22
  • 打赏
  • 举报
回复
Dim i As Long

i = 1
Open "c:\log.dat.bak" For Output As #1
For i = 1 To 99999
Print #1, Format(i, "00000")
Next
Close #1
godblessedman 2003-08-22
  • 打赏
  • 举报
回复
Public Sub WriteLogNew(strTitle As String, strMessage As String, logshain As SHAIN)
Dim objFSO As Scripting.FileSystemObject
Dim objFilestream As Object
Dim update_time As String
Dim strFileName As String
Dim strWriteline As String
Dim iCntSpace_kanji As Integer
Dim iCntSpace_kana As Integer
Dim logIndex As String
Dim strTemp As String
Dim lngMax As Double


update_time = Format(Now, "yyyymmddhhmmss")

strFileName = App.Path & "\" & LOG
Set objFSO = New Scripting.FileSystemObject
Set objFilestream = objFSO.OpenTextFile(strFileName, ForReading)
logIndex = "0"
Do While Not (objFilestream.AtEndOfStream)
logIndex = Left(objFilestream.ReadLine, 5)
Loop


If logIndex = "99999" Then 'レコードNOはMAX99999まで到達した場合、バックアップファイルにコピーし、ログファイルは初期化する。
objFilestream.Close
objFSO.DeleteFile strFileName
Set objFilestream = objFSO.OpenTextFile(strFileName, ForAppending, True)
logIndex = Format(1, "00000")
ElseIf logIndex = "0" Then
logIndex = Format(1, "00000")
Else
logIndex = Format(Val(logIndex + 1), "00000")
End If

objFilestream.Close

Call SetNothing(objFilestream)

strWriteline = ""
strWriteline = strWriteline & logIndex
strWriteline = strWriteline & logshain.strShain_id
strWriteline = strWriteline & strTitle
strWriteline = strWriteline & "_"
strWriteline = strWriteline & strMessage
strWriteline = strWriteline & logshain.strName_kanaji
strWriteline = strWriteline & Space(iCntSpace_kanji)
strWriteline = strWriteline & logshain.strName_kana
strWriteline = strWriteline & Space(iCntSpace_kana)
strWriteline = strWriteline & logshain.strSex
strWriteline = strWriteline & logshain.strBusho
strWriteline = strWriteline & logshain.strKengen
strWriteline = strWriteline & logshain.strNaisen_no
strWriteline = strWriteline & logshain.strYakusyoku
strWriteline = strWriteline & Space(150 - LenB(StrConv(strWriteline, vbFromUnicode)))
strWriteline = strWriteline & update_time

strFileName = App.Path & "\" & LOG
Set objFSO = New Scripting.FileSystemObject
Set objFilestream = objFSO.OpenTextFile(strFileName, ForAppending, True)

objFilestream.WriteLine (strWriteline)






End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧