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工作站 楊英 方紅)