filter对datalist不起作用的,
把分类ID=2加入到sql语句的where重新查询

解决方案 »

  1.   

    那怎么把返回的记录给DataList呢?
      

  2.   

    DataList的BoundText对我很有用,所以必须用DataList.怎样改变RowMember,能在数据源中筛选出我需要的记录。哪位帮帮忙,急啊...
      

  3.   

    '我对数据环境不熟悉,看200分挺多,也想来蹭分.我想了一下,你看能不能这样解决:增加一个comMyCommandFilter,对应于满足条件的记录
    Private Sub Command1_Click()
    '''  comMyCommand的查询语句为 "select * from 类型表",控件属性设置与下列代码设置的值相同,或设计时指定数据库对象为表,表名称为类型表
    '''  Set DataList1.RowSource = DTEMain
    '''  DataList1.RowMember = "comMyCommand"
    '''  DataList1.ListField = "类型名称"
    End SubPrivate Sub Command2_Click()
    '''  comMyCommandFilter的查询语句为 "select * from 类型表 where 类型表>5"
      DataList1.RowMember = "comMyCommandFilter"
      DataList1.ListField = "类型名称"
    End Sub
      

  4.   

    更正,我上面的查询语句写错了:"类型表>5"应为"类型编号>5"
    Private Sub Command2_Click()
    '''  comMyCommandFilter的查询语句为 "select * from 类型表 where 类型编号>5"
      DataList1.RowMember = "comMyCommandFilter"
      DataList1.ListField = "类型名称"
    End Sub
      

  5.   

    那如何动态改变comMyCommandFilter的查询条件,比如改成“select * from 类型表 where 类型编号>10”或“select * from 类型表 where 类型编号>50”,不可能为了每一个查询条件都在设计期建N个数据命令.
    如何...
      

  6.   

    to suolan(我就知道这么多)
    我在以下代码中用Filter试了一下,从MSHFlexGrid1显示的查询结果看Filter是有效的
    Private Sub Command3_Click()
      DTEMain.rscomMyCommand.Filter = "类型编号>5"
      Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
    End Sub
      

  7.   

    Filter 能够控制查询结果。我的问题是,怎么过滤DTEMain.comMyCommand而不是DTEMain.rscomMyCommand因为RowMember 需要它另外,To: footballboy(郑创斌) Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand这句话,我觉得有问题
      

  8.   

    'to suolan(我就知道这么多)
    'DataList1.RowMember只不过是一个字符串行变量而已 ,不存在你所说的过滤DTEMain.comMyCommand
    '的操作,过滤的实际上就是DTEMain.rscomMyCommand。在DataList1的RowMember属性框中
    '选comMyCommand实际上就是为了获取DTEMain.rscomMyCommand的内容。因此无论是在设计时指定
    'DataList1的RowSource、RowMember、ListField还是像Command3_Click()代码中用代码
    'DataList1.RowMember = "comMyCommand"和DTEMain.rscomMyCommand.Filter = "类型编号>5"
    '设定RowMember和filter属性其效果是相同的。每次你修改了Filter属性后,再次访问
    'DTEMain.rscomMyCommand得到的就是新的过滤结果,下面的例子中先后点击按钮3、按钮4的查询结果是不同的Private Sub Command3_Click()
      Set DataList1.RowSource = DTEMain
      DataList1.RowMember = "comMyCommand"
      DTEMain.rscomMyCommand.Filter = "类型编号>5"
      Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
    End SubPrivate Sub Command4_Click()
      DTEMain.rscomMyCommand.Filter = "类型编号>7"
      Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
    End Sub
      

  9.   

    我不知道你的这句话
    Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
    为什么能用,不过,我觉得有问题。另外,我题目已经说了:
    DTEMain.rscomMyCommand.Filter = "类型编号>5"
    DataList1.RowMember = "comMyCommand"并不行,我开始也是这样认为的,不过实际不行。
      

  10.   

    我的问题不是怎么在数据环境中的记录源里返回指定的记录集,我是问如何让DataList控件的RowMember所关联的记录源的变化反映给DataList控件
      

  11.   

    我遇到的问题是,不管DTEMain.rscomMyCommand.Filter如何,DataList所返回的都是DTEMain.rscomMyCommand.Filter=0(也就是全部记录)
      

  12.   

    请留下email,我把我测试用的例子发给你,看看运行结果和在我的机上的远行结果是否相同
      

  13.   

    抱歉,我看球去了,现在才回来.
    我重新看了你的问题,发现可能是我理解错你的意思.你的意思是将过滤的结果反映在datalist1中.那我前面就答非所问了.好.我按你的意思调试一下看行不行吧.由于水平所限,可能要花不少时间.
      

  14.   

    '显示整个表
    Private Sub Command3_Click()
      Set DataList1.RowSource = DTEMain
      DataList1.RowMember = "comMyCommand"
      Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
    End Sub'显示过滤结果
    '如果数据量不大,能否考虑生成临时表和记录集
    Private Sub Command5_Click()
      Dim strsql As String
      Dim num As Long
      
      num = IIf(Text1 <> "", Val(Text1), 0) '查询条件值
      
      Set cmd = New ADODB.Command
      strsql = "select * into newtable from 类型表 where 类型编号>" & num
      cmd.ActiveConnection = DTEMain.Connection1
      cmd.CommandText = strsql
      
      On Error Resume Next
      DTEMain.Connection1.Execute "drop table newtable"
      Set rs = cmd.Execute
      rs.Open "select * from newtable", DTEMain.Connection1, adOpenKeyset, adLockOptimistic
      
      Set MSHFlexGrid1.DataSource = rs '这句只是为了便于查看记录集内容而加入的
      Set DataList1.RowSource = rs
      DataList1.RowMember = ""
      DataList1.ListField = "类型名称"
    End Sub