当前位置:编程学习 > VB >>

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查询变量的赋值弄正确了。怎么赋值,请参考我前面的代码。 --------------------编程问答--------------------
引用 2 楼 veron_04 的回复:
Select * From TB Where (物品='物品1‘ And 物品='物品2')


老兄,运算方法错误,应该是
Select * From TB Where (物品='物品1' OR 物品='物品2')
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,