例如:

F1   F2   F3   F4   F5   F6
语文 数学 英语 政治 物理 化学
数学 英语 政治 物理 化学 体育
地理 语文 数学 英语 政治 劳动
........
现有一条记录信息(例如为数组形式)
A(1)  A(2)  A(3)  A(4)  A(5)  A(6)
政治  物理  化学 体育  地理   语文 我该如何编写代码,实现选取表中的6个字段
的内容与这条记录信息重复N(可变)个的记录呢?
例如条件重复N=4,既得到结果为表中的第1条。请附源码及解释,谢谢!如能解决问题,分数不够的话还可再加。

解决方案 »

  1.   

    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()
        Dim n As Integer
        n = Val(Text1.Text)
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=False"
        cn.Open
        rs.CursorLocation = adUseClient
        rs.Open "select * from TableName where f" & n & "='" & A(n) & "'", cn, 3, 3
        Set DataGrid1.DataSource = rs
    End Sub
      

  2.   

    大哥:
        您没看清说明,代码不对哟!“实现选取表中的6个字段
    的内容与这条记录信息重复N(可变)个的记录呢?
    例如条件重复N=4,既得到结果为表中的第1条”where f" & n & "='" & A(n) & "'"
    不正确!不过,还是要谢谢您。
      

  3.   

    试试以下语句
    select * from 表 where (case when F1 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F2 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F3 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F4 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F5 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F6 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)=4
    如果可以,则"'政治','物理','化学','体育','地理','语文'"在外部构建,参数4也是即时构建生成但我运行结果是第二条也符合条件,不知是我理解错了还是你漏了
      

  4.   

    不好意思,是我漏了第二条。
    “where”后面的条件能否给讲一下,我不理解。
    如果n=3,是不是可以这样写:
    select * from 表 where (case when F1 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F2 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F3 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F4 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F5 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)+(case when F6 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)=3
    请赐教!谢谢!!!
      

  5.   

    大哥:
       您写的代码在Microsoft SQL Server没问题,可我要在VB6通过ADO进行查询时,VB提示“where”后面的语句语法错误。请问我该如何编写?
       另外如果把条件
    “现有一条记录信息(例如为数组形式)
    A(1)  A(2)  A(3)  A(4)  A(5)  A(6)
    政治  物理  化学 体育  地理   语文 ”
    扩展到
    “现有一条记录信息(例如为数据表形式)
    A1    A2    A3   A4    A5    A6
    政治  物理  化学 体育  地理   语文
    ...   ...   ...  ...   ...  ... ”
    又该如何编写?
    请大家讨论一下,好吗!谢谢!!!
      

  6.   

    好象不是一条SQL语句能解决的。
      

  7.   

    WHERE后面的内容意思是
    (case when F1 in('政治','物理','化学','体育','地理','语文') then 1 else 0 end)
          如果 F1的内容在指定的六个变量中                       则  标识成功1个,否则标志0
    这样六个检测完之和为4则是有4个符合.把相关代码粘出才会知道出错的原因
      

  8.   

    您写的代码在Microsoft SQL Server没问题,可我要在VB6通过ADO进行查询时,VB提示“where”后面的语句语法错误。好象VB中的SQL语句不支持这种语句。