关于vb作数据库数据显示的问题!!(后台是用的oracle)

blacklocust 2001-05-23 12:06:00
小弟在做一个数据显示窗口的时候,遇到一个问题!就是我在数据库中对数据进行更新后
运行vb的数据显示程序(数据库内的数据确实已经更新了),第一次不能检出新数据,第二次才能检出新数据。为什么?
我是用代码刷新数据库中的一个表,然后用ado控件获取该表的信息,再用一个datagrid控件
显示出来的!!
我的代码如下:
Private Sub Form_Load()
'定义变量
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs1, rsddgd, rsczcl As ADODB.Recordset
Dim s As Integer


'set变量
Set cnn = New ADODB.Connection
'Set cmd = New ADODB.Command
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset

Set rsczcl = New ADODB.Recordset
Set rsddgd = New ADODB.Recordset


'建立连接
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=tiger;Persist Security Info=True;User

ID=scott;Data Source=oradb"
cnn.Open


'需要为czcl_imfor建立一个记录集,不记得为什么要这样做了!!

rsczcl.CursorLocation = adUseClient
rsczcl.Open "select * from czcl_imfor", cnn, adOpenDynamic, adLockBatchOptimistic

'为到达股道表建立一个记录集,用以更新ddgd_imfor表里的数据!

rsddgd.CursorLocation = adUseClient
rsddgd.Open "select * from ddgd_imfor", cnn, adOpenDynamic, adLockBatchOptimistic

'判断表是否为空,若不为空则清空
If rsddgd.RecordCount <> 0 Then
Do While Not rsddgd.EOF
rsddgd.Delete
rsddgd.MoveNext
rsddgd.UpdateBatch
Loop
End If

'在czcl_imfor表中检索数据并加入到ddgd_imfor表中,添加dd01股道的信息

rs1.CursorLocation = adUseClient
rs1.Open "select zygd,ddcc from czcl_imfor where zygd='dd01' ", cnn, adOpenDynamic,

adLockBatchOptimistic

'判断记录集是否为空,对于两种情况进行不同的处理
If rs1.EOF = True And rs1.BOF = True Then
rsddgd.AddNew
rsddgd.Fields("gdm") = "dd01"
rsddgd.UpdateBatch
Else
s = rs1.RecordCount
rsddgd.AddNew
rsddgd.Fields("gdm") = rs1(0)
rsddgd.Fields("ddcc") = rs1(1)
rsddgd.Fields("cs") = s
rsddgd.UpdateBatch

End If
rs1.Close
end sub
...全文
87 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
playyuer 2001-05-23
'只有用客户端游标 Oracle 才能绑定 DataGrid
rsczcl.CursorLocation = adUseClient


adOpenDynamic 换为 adOpenKeyset
或 .UpdateBatch 完再:
rsddgd.Requery
回复
icedian 2001-05-23
不妨用Connection的BeginTrans进行控制
回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2001-05-23 12:06
社区公告
暂无公告