VB DataGrid 控件

来源:百度知道 编辑:UC知道 时间:2024/06/18 16:58:20
我程序是这样写的
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info = False;Data Source=" & App.Path & "\电控品号清单.mdb"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "电控元器件"
Adodc1.Refresh
DataGrid控件的DataSource是连接Adodc1
但显示的效果却是如图
报错提示是索引或主键关键字不能为空值
以前一个也是这么做的,但是没这样的问题,这个问题第一次遇到,不知道怎么解决
绝对不是MDB数据的问题,因为我把连接数据库的那几句话剪切到一个按钮事件中,就能正常显示

你的DataGrid应该是允许更新,打开ADO连接然后把ADO赋值给Datagrid时自动选中了第一条记录的第一行,而且好像还设置成了空值.以前也碰到过这种问题,解决的方法是如果不需要使用Datagrid控件更新数据库,那就把它的allowupdate属性设置为假.或者,楼上的答案,打开ADODC后再把ADODC赋值给Datagrid,不在Datagrid属性里进行静态设置.

一直没搞清楚原因是什么...

你数据库表格里数据问题 和 DataGrid 没关系, 你数据库表格里的数据就缺少主索引数据, 以后再添加数据的时候检查数据合法性, 你现在的处理办法 打开数据库 添加那条没索引的记录 就没事了

Private Sub Form_Load()
DataGrid1.AllowUpdate = False
DataGrid1.AllowDelete = False
End Sub

问题补充:绝对不是MDB数据的问题,因为我把连接数据库的那几句话剪切到一个按钮事件中,就能正常显示
回复问题补充,一点不错,就是这样.
解决方法
1)按我给出的代码
2)将窗体上的任一按钮或文本框的TabIndex设置为0,让窗体加载后使改控件获得焦点.

1. 首先确保Acceess资料表没有设定索引或主键,若有请检查是否有空栏位。
2. 若无空的资料和没设索引或主键,就将之前DataGrid控件删除再制作多一个新DataGrid2并依照以下代码看可否有问题。

Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info = False;Data Source=" & App.Path & "\电控品号清单.mdb"
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenKeyset