VB中根据几个输入框的输入内容在数据库中进行筛选并显示

VB中根据几个输入框的输入内容在数据库中进行筛选并显示在DataGrid中以前没学过、从网上找代码自学写出的下面代码、一直报错、大神给解决一下啊!DimCNAsNewAD... VB中根据几个输入框的输入内容在数据库中进行筛选并显示在DataGrid中
以前没学过、从网上找代码自学写出的下面代码、一直报错、大神给解决一下啊!
Dim CN As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String

Private Sub Form_Load()
Dim Sql As String
CN.Open "provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\data\data.mdb;"
Sql = "select * from 人才库"
Rs.CursorLocation = adUseClient
Rs.Open Sql, CN, adOpenKeyset, adLockPessimistic
DataGrid1.AllowAddNew = False
DataGrid1.AllowArrows = False
DataGrid1.AllowDelete = False
Set DataGrid1.DataSource = Rs
DataGrid1.AllowUpdate = True
Adodc1.ConnectionString = CN
Adodc1.RecordSource = "select * from 人才库"
Adodc1.Refresh

Set Text1.DataSource = Adodc1
Set Text2.DataSource = Adodc1
Set Text3.DataSource = Adodc1
Set Text4.DataSource = Adodc1
Set Text5.DataSource = Adodc1
Text1.DataField = Adodc1.Recordset.Fields(1).Name
Text2.DataField = Adodc1.Recordset.Fields(9).Name
Text3.DataField = Adodc1.Recordset.Fields(13).Name
Text4.DataField = Adodc1.Recordset.Fields(14).Name
Text5.DataField = Adodc1.Recordset.Fields(7).Name

End Sub

Private Sub Command1_Click()
If Trim(Text1) <> "" Then _
Adodc1.RecordSource = "select * from 人才库 where 性别=" & Val(Trim(Text1))
Adodc1.Refresh

If Trim(Text2) <> "" Then _
Adodc1.RecordSource = "select * from 人才库 where 文化程度=" & Val(Trim(Text2))
Adodc1.Refresh

If Trim(Text3) <> "" Then _
Adodc1.RecordSource = "select * from 人才库 where 英语水平=" & Val(Trim(Text3))
Adodc1.Refresh

If Trim(Text4) <> "" Then _
Adodc1.RecordSource = "select * from 人才库 where 计算机水平=" & Val(Trim(Text4))
Adodc1.Refresh

If Trim(Text5) <> "" Then _
Adodc1.RecordSource = "select * from 人才库 where 工作时间>=" & Val(Trim(Text5))
Adodc1.Refresh

End Sub

图片是界面设计
如果我的代码都错的话直接给我全代码也行、谢啦
展开
 我来答
蓝冰的时空
2012-05-26 · TA获得超过437个赞
知道小有建树答主
回答量:444
采纳率:55%
帮助的人:200万
展开全部
你这个提示什么错误啊?
最关键的是,你这个都是独立的if语句
存在以下问题:
1、你文本全部有内容的时 只能最后一个文本text5 满足筛选条件
2、你的文本框和adodc1绑定形式连接,可能会导致 改文本内容的话同时改变数据库内容
3、如果你要用adodc1控件的话 完全没有必要用 adodb 类的引用!就是浪费资源
直接这么说了吧!没有改写的价值!
重新写一个吧!
更多追问追答
追问
嗯嗯、全是独立的代码凑出来的、可是现在要用按照我的界面设计筛选该怎么写代码呢?可以指教一下吗?
追答
我这没有对应的数据库所以简单改写一下你的代码!参考一下吧! 
Dim CN As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String
Private Sub Form_Load()
Dim Sql As String
CN.Open "provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\data\data.mdb;"
Sql = "select * from 人才库"
Rs.CursorLocation = adUseClient
Rs.Open Sql, CN, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = Rs
Text1.text=rs.fields(0)
Text2.text=rs.fields(1)
Text3.text=rs.fields(2)
Text4.text=rs.fields(3)
Text5.text=rs.fields(4)
end sub
Private Sub Command1_Click()
Sql = "select * from 人才库 "
If Trim(Text1) "" Then
if instr(sql ,"where")=0 then
Sql =Sql +" where 性别=" & Val(Trim(Text1))
else
Sql =Sql +" and 性别=" & Val(Trim(Text1))
endif
endif
If Trim(Text2) "" Then
if instr(sql ,"where")=0 then
Sql =Sql +" where 文化程度=" & Val(Trim(Text2))
else
Sql =Sql +" and 文化程度=" & Val(Trim(Text2))
endif
endif
If Trim(Text3) "" Then
if instr(sql ,"where")=0 then
Sql =Sql +" where 英语水平=" & Val(Trim(Text3))
else
Sql =Sql +" and 英语水平=" & Val(Trim(Text3))
endif
endif
If Trim(Text4) "" Then
if instr(sql ,"where")=0 then
Sql =Sql +" where 计算机水平=" & Val(Trim(Text4))
else
Sql =Sql +" and 计算机水平=" & Val(Trim(Text4))
endif
endif
If Trim(Text5) "" Then
If Trim(Text4) "" Then
if instr(sql ,"where")=0 then
Sql =Sql +" where 工作时间>=" & Val(Trim(Text5))
else
Sql =Sql +" and 工作时间>=" & Val(Trim(Text5))
endif
endif
Rs.Open Sql, CN, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = Rs
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式