Option Explicit Dim objcn As New ADODB.Connection Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()'查询,修改信息 objcn.Execute "delete from temp " '清空临时表 objcn.Execute "insert into b select * from table",复制表内容到临时表 If rs.State = 1 Then rs.Close rs.Open "select * from temp", objcn, adOpenKeyset, adLockOptimistic Set DataGrid1.DataSource = rs End Sub Private Sub Command2_Click() '保存 objcn.Execute "delete from table " '清空表, objcn.Execute "insert into b select * from temp" '复制 End SubPrivate Sub Form_Load() objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=Text" objcn.Open End Sub
objcn.Execute "insert into b select * from temp" '复制 应该是 objcn.Execute "insert into table select * from temp" '复制
Option Explicit Dim objcn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub Form_Load() objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=text" objcn.Open rs.Open "select * from b ", objcn, adOpenKeyset, adLockOptimistic Set DataGrid2.DataSource = rs DataGrid2.AllowAddNew = True DataGrid2.AllowUpdate = True 'DataGrid2.SetFocus DataGrid2.Row = 1 MsgBox DataGrid2.Columns(1).Text Debug.Print DataGrid2.Text DataGrid2.Columns(1).Text = "007"End Sub 我按你的程序测试了,没问题, //////////////////////// 数据修改后自动更新到数据库 不过加上这个会更好 Private Sub DataGrid2_AfterColEdit(ByVal ColIndex As Integer) rs.Update End Sub我用的是VB6.0 和你用的有什么区别吗
我的代码,窗体就2个控件Update按钮和DataGrid电子表,属性都改为允许修改了。帮我看看。我回去试试在vb6.0下怎样。我现在是在Access环境下 Option Compare Database Dim rs As New ADODB.Recordset Dim SQL As StringPrivate Sub cmdUpdate_Click() DataGrid2.SetFocus DataGrid2.Col = 1 DataGrid2.Row = 1 'MsgBox DataGrid2.Text DataGrid2.Text = "CC"End SubPrivate Sub Form_Load() rs.CursorLocation = adUseClient rs.Open "Select * from tblDataGrid", CurrentProject.Connection, 1, 1 Set DataGrid2.DataSource = rs End Sub
这个最好做个临时表,把数据存到临时表,保存后,复制到表中
//////////如何读取DataGrid相应表格中的数据
DataGrid2.Columns(0).CellText
DataGrid2.setFocus
DataGrid.col=1
DataGrid.Row=1
Msgbox DataGrid.text现在我是想直接赋值给DataGrid的单元格(或者编辑单元格的内容),将修改的信息直接体现在表格中,然后自己手动可以保存到数据库(或者说更新数据库)也可以说先从数据库中读取数据到DataGrid,然后可以在DataGrid上面进行添加删除修改等等操作,在返回给数据库(update),只是每次操作都要先获取焦点。想请教有什么好的解决办法,或者说可以用其它Grid控件取代(我试过MSHFlexGrid可以添加纪录到单元格,然后更新数据库,但是编辑就不知怎么做了)
谢谢
Dim objcn As New ADODB.Connection
Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()'查询,修改信息
objcn.Execute "delete from temp " '清空临时表
objcn.Execute "insert into b select * from table",复制表内容到临时表
If rs.State = 1 Then rs.Close
rs.Open "select * from temp", objcn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs
End Sub
Private Sub Command2_Click() '保存
objcn.Execute "delete from table " '清空表,
objcn.Execute "insert into b select * from temp" '复制
End SubPrivate Sub Form_Load()
objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=Text"
objcn.Open
End Sub
应该是
objcn.Execute "insert into table select * from temp" '复制
给DataGrid的表格赋值的时候出错误阿,错误提示为DataGrid属性为Readonly,而我已经在设计中修改了它的AllowAddnew,AllowUpdate,AllowDelete为true.同时我又不能设置DataGrid.readOnly=False.
DataGrid2.col = 1
DataGrid2.Row = 1
DataGrid2.Text="AA"就错误了,只能读阿,Msgbox DataGrid2.Text
我贴给你看
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "Select * from tblRcvg", CurrentProject.Connection, 1, 1
set DataGrid2.DataSource=rs
DataGrid2.AllowAddNew = True
DataGrid2.AllowUpdate = True
DataGrid2.SetFocus
DataGrid2.Row = 1
MsgBox DataGrid2.Columns(1).Text
Debug.Print DataGrid2.Text
DataGrid2.Columns(1).Text = "007"
上传到http://access911.net/csdn/
Dim objcn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub Form_Load()
objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=text"
objcn.Open
rs.Open "select * from b ", objcn, adOpenKeyset, adLockOptimistic
Set DataGrid2.DataSource = rs
DataGrid2.AllowAddNew = True
DataGrid2.AllowUpdate = True
'DataGrid2.SetFocus
DataGrid2.Row = 1
MsgBox DataGrid2.Columns(1).Text
Debug.Print DataGrid2.Text
DataGrid2.Columns(1).Text = "007"End Sub
我按你的程序测试了,没问题,
////////////////////////
数据修改后自动更新到数据库
不过加上这个会更好
Private Sub DataGrid2_AfterColEdit(ByVal ColIndex As Integer)
rs.Update
End Sub我用的是VB6.0 和你用的有什么区别吗
Option Compare Database
Dim rs As New ADODB.Recordset
Dim SQL As StringPrivate Sub cmdUpdate_Click()
DataGrid2.SetFocus
DataGrid2.Col = 1
DataGrid2.Row = 1
'MsgBox DataGrid2.Text
DataGrid2.Text = "CC"End SubPrivate Sub Form_Load()
rs.CursorLocation = adUseClient
rs.Open "Select * from tblDataGrid", CurrentProject.Connection, 1, 1
Set DataGrid2.DataSource = rs
End Sub
rs.update
Set dataGrid2.datasource=rs