1.我使用ADO编程,将SQL语句返回的记录集作为DATAGRID的数据源,设置了datagrid的column caption参数,可显示的列名是结果集的列名,有没有办法解决? 现在用的权益之计是查询时直接加别名,如:Select Name as '姓名' From employee,总觉得应该还有更好的方法2.如何防止DATAGRID的数据被误更改?可否实现“撤销”操作,如果不行的话,能不能在数据发生更改时提示用户确认?
Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strconn As String Dim ss As String Dim temp As String Set conn = New ADODB.Connection Set rs = New ADODB.Recordset strconn = "Driver={sql server};server=127.0.0.1;uid=sa;pwd=sa;database=TestDB" ss = "Select * From TableName" conn.Open strconn conn.Execute ss rs.Open ss, conn, adOpenKeyset, adLockOptimistic Set DataGrid1.DataSource = rs DataGrid1.Refresh数据库连接正常,可如果我修改了DATAGRID的列的CAPTION栏时,数据就无法显示了!!
更改列名要放在程序的最后,你要先把数据绑定好提取出来之后再使用:
DataGrid1.Columns(Index).Caption = "你要的名字"第二个问题:
你可以把原来值在修改之前(BeforeColEdit)进行保存,当然用户修改完成之后使用DataGrid的AfterColEdit事件,是在完成网格单元中的编辑之后出现的事件,此时跳出msgbox对话框,让用户选择是否修改(VbYesNo),之后怎么做应该会了吧
//
DataGrid上编辑数据,实际也就是对Recordset进行改变了。对Recordset的操作其实已经不是绝对的控件应用问题,应该归属在数据库的方面。
Recordset的Open语法如下:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
其实CursorTypeEume是指定用语Recordset对象资料的指针类型, LockTypeEnum指定编辑时设定在记录上的锁定类型.
(具体常数值请查MSDN)。
在这个问题上,我们完全可以借用将Recordset进行批次开启,在确定修改的时候进行批次更新,不确定修改的时候,数据自然会恢复原来的数值。
Dim rs As New ADODB.Recordset
Dim strconn As String
Dim ss As String
Dim temp As String Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
strconn = "Driver={sql server};server=127.0.0.1;uid=sa;pwd=sa;database=TestDB" ss = "Select * From TableName"
conn.Open strconn
conn.Execute ss
rs.Open ss, conn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs
DataGrid1.Refresh数据库连接正常,可如果我修改了DATAGRID的列的CAPTION栏时,数据就无法显示了!!