vb Adodc DataGrid 多条搜索我想同时搜索2条显示怎么做??
例如: text1=物品1 物品2
显示:物品1 物品2 2条搜索的内容!!!
我用 For next 循环就显示最后一天!!奇怪!
例如: text1=物品1 物品2
显示:物品1 物品2 2条搜索的内容!!!
我用 For next 循环就显示最后一天!!奇怪!
解决方案 »
- 如何用正则法分离字符?
- Inet1.GetChunk(1024) 汉字会得到"?",各位帮忙看看,谢谢啊~~
- 请问在窗口里显示一个文件夹中所有图片的缩略图?需要用到什么组件~?如何使用?先谢谢了
- ====第一次使用资源文件,将文件放入再读取出来时,文件开头处多了12个字节出来====
- 看段简单的代码 解决问题马上 100分
- datareport问题,急!
- 请教:access中二叉树搜索
- 如何能得到硬盘上某一个目录下的所有文件的文件名?
- 怎样在VB中用ADO访问Foxpro 2.6里的数据??
- 新人求助:vb脚本调用pcomm的com接口问题
- 求个vb6 winsock发邮件附件,base64编码,已能编译成功通过的代码
- 求解答……各位大侠帮帮忙……急用
例如:text1.text= 多个值用回车分隔
123
456
789
...后边我点搜索,就显示 Adodc DataGrid
123
456
789
...
所有信息!!!属于多条搜索
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.RecordSource = "select * from P2 "
'Adodc1.RefreshFor i = 0 To List1.ListCount - 1
List1.ListIndex = iAdodc1.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.MoveNextAdodc1.Recordset.Update
Next i我这样写可是只一条显示,多条搜索,就显示最后一条!!不知道为甚么????
我想,搜索 text1.text="1
2
3"
...
显示id=1 2 3....多条数据!!!
List1.ListIndex = iAdodc1.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.MoveNextAdodc1.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')