VB中將數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)庫(kù)文件

       在工作中,我們經(jīng)常會(huì)遇到將數(shù)據(jù)文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中,當(dāng)然可以利用Microsoft Access導(dǎo)入數(shù)據(jù),但是這個(gè)過(guò)程比較復(fù)雜。比較簡(jiǎn)單的方法是利用VB編制一程序,使其自動(dòng)實(shí)現(xiàn)這一功能。下面就以我在實(shí)際工作中遇到的問(wèn)題為例對(duì)這一方法加以介紹。
      我單位購(gòu)置的刷卡機(jī),在使用中發(fā)現(xiàn)隨機(jī)附帶的考勤軟件不適合我單位的實(shí)際情況,所以想用VB重新編制考勤管理軟件,但是首先遇到的問(wèn)題就是如何把卡鐘數(shù)據(jù)轉(zhuǎn)換為Access數(shù)據(jù)庫(kù)文件中的數(shù)據(jù),經(jīng)過(guò)多次修改、調(diào)試,終于找到了解決此問(wèn)題的方法。本例中,卡鐘數(shù)據(jù)文件的路徑為"c:tr500tr500.hst",數(shù)據(jù)庫(kù)文件的路徑為"c:kqxtkq.mdb"。
      一、用Microsoft Access建立一數(shù)據(jù)庫(kù)kq.mdb,其表的名稱為表1。
      字段及字段類型如表1:
      二、編制程序
      1.VB中建立一個(gè)新工程,在Form1上添加Command1和Data1控件。
      根據(jù)下表設(shè)置Data1和Command1的屬性:(見(jiàn)表2)
      2.卡鐘數(shù)據(jù)的原始記錄格式:
      00 100016 0 05/12 07:11
      00 100012 0 05/12 07:12
      00 200001 0 05/12 07:13
      00 100019 0 05/12 07:13
      00 300006 0 05/12 07:17
      此程序的關(guān)鍵是如何從各條記錄中取出刷卡號(hào)、日期和時(shí)間,并把這些數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)文件中。
      3.源程序:
      Private Sub Command1_Click()
      Dim Response,MyString
      Dim st As String 定義每行數(shù)據(jù)為一字符串
      Year1=Year(Date)
      FileCopy "C:tr500tr500.hst","C:kqxttr500.dat"
      Open "C:kqxttr500.dat" For Input As 1
      If Data1.Recordset.RecordCount<>0 Then
      Response=MsgBox("是否刪除原有數(shù)據(jù)",vbYesNo+vbQuestion+_vbDefaultButton2,"")
      If Response=vbYes Then
      Data1.Recordset.MoveFirst
      While Not Data1.Recordset.EOF
      Data1.Recordset.Delete
      Data1.Recordset.MoveNext
      Wend
      End If
      End If
      Do While Not EOF(1)
      Line Input #1,st
      str1=Val(Mid(st,4,6)) 刷卡號(hào)
      str2=Val(Mid(st,13,2)) 月
      str3=Val(Mid(st,16,2)) 日
      str4=Val(Mid(st,19,2)) 時(shí)
      str5=Val(Mid(st,22,2)) 分
      防止在轉(zhuǎn)換過(guò)程中遇到非法數(shù)據(jù)而中斷
      If str1<>0 And str2<>0 And str3<>0 And str4<>0 Then
      Data1.Recordset.AddNew
      Data1.Recordset!刷卡號(hào)=Val(str1)
      確保上一年的刷卡日期不變
      If Month(Date)=1 And str2=12 Then
      Data1.Recordset!日期=DateSerial(Year1-1,str2,str3)
      Else
      Data1.Recordset!日期=DateSerial(Year1,str2,str3)
      End If
      Data1.Recordset!時(shí)間=TimeSerial(str4,str5,0)
      Data1.Recordset.Update
      Screen.MousePointer=vbHourglass
      End If
      Loop
      Close 1
      Screen.MousePointer=vbDefault
      End Sub
      本程序在WIN98、VB5.0中文企業(yè)版下調(diào)試通過(guò)。
     。–AD工作站 楊英 方紅)