VB6 + Access97
提供兩個將資料暫存於RecordSet的應用,
Form上佈置Adodc1及DataGrid1,
Adodc1的ConnectionString請先行設定,
adodc1.Recordset("addField") 是自行加入的欄位,不是實際table的field
一:為記錄加上流水號
Private Sub Form_Activate()
Adodc1.CommandType = adCmdText
Adodc1.CursorLocation = adUseClient
Adodc1.RecordSource = "select *,0 as addField from geb30 order by sup_code"
Set DataGrid1.DataSource = Adodc1
Adodc1.Refresh
Set Adodc1.Recordset.ActiveConnection = Nothing
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst '這行不加會使第一筆資料無法寫入流水號,原因不詳
While Not Adodc1.Recordset.EOF
Adodc1.Recordset("addField") = Adodc1.Recordset.AbsolutePosition
Adodc1.Recordset.MoveNext
Wend
Adodc1.Recordset.MoveFirst
End If
End Sub
二:做某個欄位的累加(這裡累加Adodc1.Recordset("now_qty")欄位)
Private Sub Form_Activate()
Dim cTotal As Long '記錄累加值
Adodc1.CommandType = adCmdText
Adodc1.CursorLocation = adUseClient
Adodc1.RecordSource = "select *,0 as addField from geb10 order by pro_code"
Set DataGrid1.DataSource = Adodc1
Adodc1.Refresh
Set Adodc1.Recordset.ActiveConnection = Nothing
cTotal = 0
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
While Not Adodc1.Recordset.EOF
cTotal = cTotal + Adodc1.Recordset("now_qty")
Adodc1.Recordset("addField") = cTotal
Adodc1.Recordset.MoveNext
Wend
Adodc1.Recordset.MoveFirst
End If
End Sub
1.由於我異動資料都是下SQL直接做,所以DataGrid中的資料是否
可修改就沒試過了
2.DataEnvironment也可用相同方式,若你需結合DataReport使用
,可於show DataReport前先open DataEnvironment.rsCommand
,做完流水號or欄位累加的部分再show DataReport,這個方式
可增加DataReport的實用性
3.若你用於DataEnvironment中,建議你測試一下:
重覆開啟rsCommand是否會當出,因為我有時會遇到一些錯誤訊
息,但是完全相同的程式碼於其他的專案中卻不一定遇到
4.Set Adodc1.Recordset.ActiveConnection = Nothing
這行指令不是必要的,我記得於cww的VB心得筆記中有相關文章
做法供大家參考指教