一个数据库查询与DataGrid控件的综合问题,请大家帮忙
我现在在程序也想实现的是这样一个功能:
在窗体上我放了一个DataGrid控件,而且当我这个窗体一出现它就会自动显示数据库中的所有数据,而在DataGrid控件下面有三个按钮 <<修改数据>> <<保存新数据>> <<删除数据>>,<<修改数据>>的功能是让用户可以在DataGrid控件进行编辑就是将DataGrid控件的某些属性设置成真了,<<保存新数据>>是当在DataGrid控件里修改成功后进行保存,<<删除数据>>是当用户在DataGrid控件任选一行都可以删除,现在这些功能在窗体登陆后都可以正常的操作没有错误,但我在DataGrid控件上面还有三个查询条件,第一个是根据编号查询,第二个是姓名,第三个是 公司 ,如果数据库中的数据很多的话用户不可能在DataGrid控件中一个一个的找,,所以设置了查询以便用户快速找出要修改及删除的数据,并且将查找到的结果显示在DataGrid控件中进行操作。
而现在遇到的问题是:
通过查找的到的数据在DataGrid控件中无法实现上面想做的操作了。
就是说现在查询可以找到要修改及删除的数据并且能够显示在DataGrid控件中,但是这样以来当我在DataGrid控件中进行上面说的修改操作时,行不通了,无法将修改后的数据保存到数据库中,而通过查询得到的数据对它进行删除时删除掉的却是数据库中的第一条记录
这是为什么???我现在怀疑我的ADO用的有问题但是不知道解决的原因请大家帮我解决一下,这类问题已经捆饶我很久了,下面我会将我的那几个 按钮中的代码帖出来请大家帮我解决一下,谢谢大家了,分不够在加
<<搜索>>中的代码:
Private Sub cmd_cdok_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Set cn = New ADODB.Connection
cn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=CY"
If cd_opt_id.Value = False And cd_opt_name.Value = False And cd_opt_company.Value = False Then
MsgBox "你是不是玩我啊?什么不条件不选怎么得到数据啊,给点面子选一个,谢谢合作~!~", vbOKOnly + vbExclamation, "注意"
Exit Sub
End If
If cd_opt_id.Value = True Then
If Trim(cd_txt_id.Text) = "" Then
MsgBox "不写编号怎么查询啊,请写好编号~!~", vbOKOnly + vbExclamation, "注意"
cd_txt_id.SetFocus
Else
sql = "select*from Cinformation where 编号='" & cd_txt_id.Text & "'"
Set rs = New ADODB.Recordset
rs.Open sql, cn, adOpenKeyset, adLockOptimistic
If rs.EOF Then
MsgBox "对不起,很遗憾没有您要查询的数据~!~", vbOKOnly + vbExclamation, "注意"
cd_txt_id.Text = ""
cd_txt_id.SetFocus
Exit Sub
Else
Set DataGrid1.DataSource = rs
End If
End If
End If
End Sub
<<修改数据>>中的代码:
Private Sub cmd_cdchange_Click()
With DataGrid1
.AllowArrows = True
.AllowDelete = True
.AllowUpdate = True
End With
End Sub
<<保存新数据>>中的代码:
Private Sub cmd_cdsavenew_Click()
ado_information.Recordset.Update
ado_information.Refresh
With DataGrid1
.AllowArrows = False
.AllowDelete = False
.AllowRowSizing = True
.AllowUpdate = False
End With
End Sub
<<删除数据>>中的代码:
Private Sub cmd_seldel_go_Click()
Dim varBmk As Variant
For Each varBmk In frm_main.DataGrid1.SelBookmarks
frm_main.ado_information.Recordset.Bookmark = varBmk
frm_main.ado_information.Recordset.Delete
frm_main.ado_information.Refresh
Next
Me.Hide
End Sub