先祝大家新年快乐,再问ado连接access数据库的问题

我用ado连接access数据库
连接如下:
adoCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sysdata.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"
再用recordset打开一个表如下:
rsQTinfo.Open "select * from tbcline", adoCn, adOpenDynamic, adLockBatchOptimistic, adCmdText
再将recordset给一个datagrid:
Set fglist.DataSource = rsQTinfo

并设置了datagrid.allowaddnew=true
那为什么不显示数据并不能在datagrid里输入数据呢?
[465 byte] By [NewQger-Q哥] at [2008-1-9]
# 1
在打开rsQTinfo前,设置
rsQTinfo.CursorLocation = adUseClient
看看
# 2
adoCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\2007\code.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"
adoCn.CursorLocation = adUseClient
adoCn.Open

rsQTinfo.Open "select * from code", adoCn, adOpenDynamic, adLockBatchOptimistic

Set fglist.DataSource = rsQTinfo
# 3
不要用datagrid,用编码加listview控件,锻炼你的编程能力
iamtsfw-iamtsfw at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 4
先回楼上:我很习惯listview啊。可现在同样简单操作的表要有20个左右啊,所以想简单处理才用这个的,其实我用的是truedbgrid(tdbgrid).

我打开记录集用
rsQTinfo.Open "select * from txlinfo", adoCn, adOpenStatic, adLockBatchOptimistic, adCmdText
就可以了。

如果将这个grid的数据批量更新到数据库该怎么做呢?比如有的是内容修改,有的是增加的有删除的。
用recordset.update 还是recordset.UpdateBatch呢?关键还有一列是个编号,用来跟其他表数据库关联的。那这个编号怎么加到新加的记录里呢?

谢谢几位的回复,新年快乐。。。
NewQger-Q哥 at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 5
晕,啊弄的差不多了,你还别说
adoCn.CursorLocation = adUseClient 还真管用。
用ado好多年了,但从来没直接操作过grid,水平差啊。

有热心的朋友再多给点提示哦。谢谢。
NewQger-Q哥 at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 6
据我所知,执行sql语句之后它应该产生一个结果,这个结果也像一个表一样,你要顺序移动位置指针才能访问到查询的内容吧
Jacky_Dai at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 7
recordset.update 还是recordset.UpdateBatch区别在哪里.
查Codefund,Update 方法
用和用户已经打开“外接程序管理器”对话框一样的方法,刷新来自列在 Vbaddin.ini 文件中的外接程序的 AddIns 集合的内容。

问题关键在此处:adLockBatchOptimistic(开放式批更新)
用Update方法写入的是本地缓存;要用UpdateBatch方法才能把缓存中的数据写到数据库中.

rs.Update
rs.UpdateBatch
ningyong58-ning at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 8
''设置要使用的下拉列表
fglist.Columns(1).ValueItems.Presentation = 2
fglist.Columns(1).AutoDropDown = True
fglist.Columns(1).DropDown = dpd1

Set rsCS1 = Nothing
rsCS1.Open "select 学历编号,学历 from tcxl", adoCn, adOpenDynamic, adLockReadOnly, adCmdText
Set dpd1.DataSource = rsCS1
fglist.Columns(1).ValueItems.Clear
If rsCS1.RecordCount > 0 Then
rsCS1.MoveFirst
Do While Not rsCS1.EOF
aVitem.DisplayValue = Trim(rsCS1!学历)
aVitem.Value = rsCS1!学历编号
fglist.Columns(1).ValueItems.Translate = True
fglist.Columns(1).ValueItems.Add aVitem '此处出类型不匹配错误啊!!
rsCS1.MoveNext
Loop
End If
Me.dpd1.DataField = "学历编号"
Me.dpd1.ListField = "学历"
谢谢楼上,再问个新问题啊。
上边的代码是将一个truedbgrid的某列用下拉列表显示编辑等。。但是在上边标记的地方出错了。这个怎么弄呢,
你们在grid里直接编辑数据时,那种引用代码的字段怎么设置的来方便用户使用呢?
NewQger-Q哥 at 2007-10-18 > top of Msdn China Tech,visual basic,基础类...
# 9
来晚了,还是祝愿大家,新年快乐!!