vb Adodc DataGrid 多条搜索
vb Adodc DataGrid 多条搜索我想同时搜索2条显示怎么做??
例如: text1=物品1 物品2
显示:物品1 物品2 2条搜索的内容!!!
我用 For next 循环就显示最后一天!!奇怪! --------------------编程问答-------------------- 帮帮忙啊~~~谢谢啦 --------------------编程问答-------------------- Select * From TB Where (物品='物品1‘ And 物品='物品2') --------------------编程问答-------------------- 不是这个意思~~~
例如:text1.text= 多个值用回车分隔
123
456
789
...
后边我点搜索,就显示 Adodc DataGrid
123
456
789
...
所有信息!!!属于多条搜索 --------------------编程问答-------------------- 高人 帮帮忙 怎么写!!! --------------------编程问答-------------------- 随便写了一下,没太多时间,没能仔细调试程序。应该基本可以满足你的要求,不过我知道存在一个问题,就是当用户最后一行没有输入回车时,查询结果最后一行不能查询出来。突然发懒病,不想再去修改了。不过我想你自己加一段条件判断语句就可以搞定了。
Private Sub Command2_Click() '查询按钮事件
Dim LgTxt As Integer '定义循环变量
Dim EnNumber As Long '定义变量记录查找到多少个回车字符
Dim SQLTxt As String '定义查询变量
SQLTxt = "select * from table"
EnNumber = UBound(Split(Text1.Text, Chr(13))) '返易做图车键数量
SubStr = Split(Text1.Text, Chr(13)) '将各段字符记录到数组
'以下根据回车字符数量调整查询变量
If EnNumber < 1 Then
If Text1.Text = "" Then
MsgBox "你没有输入任何记录"
Exit Sub
Else
SQLTxt = SQLTxt & " where item='" & Trim(Text1.Text) & "'"
End If
Else
If EnNumber = 1 Then
sqltext = sqltext & " where item='" & SubStr(EnNumber) & "'"
Print SQLTxt
Else
SQLTxt = SQLTxt & " where item='" & SubStr(0) & "'"
For LgTxt = 1 To EnNumber - 1
SQLTxt = SQLTxt & " or item='" & SubStr(LgTxt) & "'"
Print SQLTxt '显示查询变量
Next LgTxt
End If
End If
End Sub --------------------编程问答-------------------- Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=P2.mdb;Persist Security Info=False;jet oledb:database password='060615'"
Adodc1.RecordSource = "select * from P2 "
'Adodc1.Refresh
For i = 0 To List1.ListCount - 1
List1.ListIndex = i
Adodc1.RecordSource = "select * from P2 where Panel_ID ='" & List1.Text & " ';"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Columns(0).Width = 1350
DataGrid1.Columns(1).Width = 550
DataGrid1.Columns(2).Width = 1550
DataGrid1.Columns(3).Width = 800
DataGrid1.Columns(4).Width = 1500
DataGrid1.Columns(5).Width = 900
DataGrid1.Columns(6).Width = 1600
'DataGrid1.Scroll.MoveNext
Adodc1.Recordset.Update
Next i
我这样写可是只一条显示,多条搜索,就显示最后一条!!不知道为甚么????
我想,搜索 text1.text="1
2
3"
...
显示id=1 2 3....多条数据!!! --------------------编程问答-------------------- For i = 0 To List1.ListCount - 1
List1.ListIndex = i
Adodc1.RecordSource = "select * from P2 where Panel_ID ='" & List1.Text & " ';"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Columns(0).Width = 1350
DataGrid1.Columns(1).Width = 550
DataGrid1.Columns(2).Width = 1550
DataGrid1.Columns(3).Width = 800
DataGrid1.Columns(4).Width = 1500
DataGrid1.Columns(5).Width = 900
DataGrid1.Columns(6).Width = 1600
'DataGrid1.Scroll.MoveNext
Adodc1.Recordset.Update
Next i
你以上语句本来就有问题,每一次循环都重新刷新adodc.recordsource,这样在跳出循环时,实际上你的adodc1.recordsource="select * from P2 where Panel_ID ='x';",这个"X"是你Listbox控件最后一笔文本。而如果你想全部显示,SQL语句应该为"select * from P2 where Panel_ID='1' or panel_ID='2' or Panel_ID='3' or ......Panel_ID='x'"才对。
所以,我上面回答你的是用Textbox控件多行显示,通过判断回车字符将各Text1.text字符串分段,然后通过一个查询按钮Command2的单击事件,根据行数多少更新SQL语句变量的值。
用Adodc控件和DataGrid控件建立数据源联系后,DataGrid控件会自动根据Adodc控件的RecordSource属性变化刷新显示内容,也就是说当你调用一次Adodc1.Refresh,DataGrid1的显示内容就依Adodc1.RecordSource刷新一次,所以你才会每次看到的是最后一笔数据。
因此,问题的关键是,你要先把你的SQL查询变量的赋值弄正确了。怎么赋值,请参考我前面的代码。 --------------------编程问答--------------------
老兄,运算方法错误,应该是
Select * From TB Where (物品='物品1' OR 物品='物品2')
补充:VB , 数据库(包含打印,安装,报表)