小弟是用VB6+SP5 OS:xp database:access 97
小弟貼上我的程式碼及問題請前輩指導
-------------------------
Q:小弟是把CSV檔載入到我的database中,但是如果遇到CSV檔中
有整行的空白就會造成死在清空資料庫的DO ~ LOOP裡面,我
看了一下當有載到整行空白後刪除動作執行到那一筆之後,
adodc1.recordset.recordcouter 的值經過Delete也不會變動
也就是EOF永不成立
我試著在載入的時候如果遇到整行的空白,我就自動幫他填上
NULL,但是還是不行,一樣會死,recordset中如果有空白應該
都被我補上NULL了..但是為甚麼還是會死了..?
請各位前輩抽空幫我解惑吧...Thanks..
-------------------------
--------Code-------------
Sub Set_DB()
On Error Resume Next
Dim LineData As String
Dim Da1, Da2, Da3, Da4, Da5, Da6, Da7 As String
Set DataGrid1.DataSource = Nothing
DataGrid1.Refresh
If Adodc1.ConnectionString = "" Then
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Card.mdb;" & _
"Persist Security info=false"
Adodc1.RecordSource = "select * from CARDNO"
Adodc1.Refresh
DoEvents
End If
If Adodc1.Recordset.RecordCount <> 0 Then
ProgressBar1.Max = Adodc1.Recordset.RecordCount
ProgressBar1.Value = 0
ProgressBar1.Visible = True
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
DoEvents
Adodc1.Recordset.Delete
DoEvents
Adodc1.Recordset.MoveNext
ProgressBar1.Value = ProgressBar1.Value + 1
'Adodc1.Refresh
Adodc1.Recordset.Save
Loop
Adodc1.Refresh
DoEvents
End If
ProgressBar1.Visible = False
Open Temp For Input As #1
Line Input #1, Temp
Do While Not EOF(1)
Line Input #1, LineData
LineData = LineData & "," '為了防止字串最後沒有,號再此補上一個以免最後一格載入無效
Da1 = CutStr(LineData, 1)
Da2 = CutStr(LineData, 2)
Da3 = CutStr(LineData, 3)
Da4 = CutStr(LineData, 4)
Da5 = CutStr(LineData, 5)
Da6 = CutStr(LineData, 6)
Da7 = CutStr(LineData, 7)
Adodc1.Recordset.AddNew
Adodc1.Recordset("NUM") = Da1
Adodc1.Recordset("FLOOR") = Da2
Adodc1.Recordset("CARD1") = Da3
Adodc1.Recordset("CARD2") = Da4
Adodc1.Recordset("CARD3") = Da5
Adodc1.Recordset("CARD4") = Da6
Adodc1.Recordset("CARD5") = Da7
Adodc1.Recordset.Update
Loop
Close #1
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
DoEvents
End Sub
小弟貼上我的程式碼及問題請前輩指導
-------------------------
Q:小弟是把CSV檔載入到我的database中,但是如果遇到CSV檔中
有整行的空白就會造成死在清空資料庫的DO ~ LOOP裡面,我
看了一下當有載到整行空白後刪除動作執行到那一筆之後,
adodc1.recordset.recordcouter 的值經過Delete也不會變動
也就是EOF永不成立
我試著在載入的時候如果遇到整行的空白,我就自動幫他填上
NULL,但是還是不行,一樣會死,recordset中如果有空白應該
都被我補上NULL了..但是為甚麼還是會死了..?
請各位前輩抽空幫我解惑吧...Thanks..
-------------------------
--------Code-------------
Sub Set_DB()
On Error Resume Next
Dim LineData As String
Dim Da1, Da2, Da3, Da4, Da5, Da6, Da7 As String
Set DataGrid1.DataSource = Nothing
DataGrid1.Refresh
If Adodc1.ConnectionString = "" Then
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Card.mdb;" & _
"Persist Security info=false"
Adodc1.RecordSource = "select * from CARDNO"
Adodc1.Refresh
DoEvents
End If
If Adodc1.Recordset.RecordCount <> 0 Then
ProgressBar1.Max = Adodc1.Recordset.RecordCount
ProgressBar1.Value = 0
ProgressBar1.Visible = True
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
DoEvents
Adodc1.Recordset.Delete
DoEvents
Adodc1.Recordset.MoveNext
ProgressBar1.Value = ProgressBar1.Value + 1
'Adodc1.Refresh
Adodc1.Recordset.Save
Loop
Adodc1.Refresh
DoEvents
End If
ProgressBar1.Visible = False
Open Temp For Input As #1
Line Input #1, Temp
Do While Not EOF(1)
Line Input #1, LineData
LineData = LineData & "," '為了防止字串最後沒有,號再此補上一個以免最後一格載入無效
Da1 = CutStr(LineData, 1)
Da2 = CutStr(LineData, 2)
Da3 = CutStr(LineData, 3)
Da4 = CutStr(LineData, 4)
Da5 = CutStr(LineData, 5)
Da6 = CutStr(LineData, 6)
Da7 = CutStr(LineData, 7)
Adodc1.Recordset.AddNew
Adodc1.Recordset("NUM") = Da1
Adodc1.Recordset("FLOOR") = Da2
Adodc1.Recordset("CARD1") = Da3
Adodc1.Recordset("CARD2") = Da4
Adodc1.Recordset("CARD3") = Da5
Adodc1.Recordset("CARD4") = Da6
Adodc1.Recordset("CARD5") = Da7
Adodc1.Recordset.Update
Loop
Close #1
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
DoEvents
End Sub
全站熱搜
留言列表