vb Adodc DataGrid 多条搜索我想同时搜索2条显示怎么做??
例如: text1=物品1 物品2
显示:物品1 物品2   2条搜索的内容!!!
我用 For next 循环就显示最后一天!!奇怪!

解决方案 »

  1.   

    Select * From TB Where (物品='物品1‘ And 物品='物品2')
      

  2.   

    不是这个意思~~~
    例如:text1.text= 多个值用回车分隔 
    123
    456
    789
    ...后边我点搜索,就显示 Adodc DataGrid
    123
    456
    789
    ...
    所有信息!!!属于多条搜索
      

  3.   

    随便写了一下,没太多时间,没能仔细调试程序。应该基本可以满足你的要求,不过我知道存在一个问题,就是当用户最后一行没有输入回车时,查询结果最后一行不能查询出来。突然发懒病,不想再去修改了。不过我想你自己加一段条件判断语句就可以搞定了。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
      

  4.   

    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.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....多条数据!!!
      

  5.   

    For 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你以上语句本来就有问题,每一次循环都重新刷新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查询变量的赋值弄正确了。怎么赋值,请参考我前面的代码。
      

  6.   


    老兄,运算方法错误,应该是
    Select * From TB Where (物品='物品1' OR 物品='物品2')