'我对数据环境不熟悉,看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
更正,我上面的查询语句写错了:"类型表>5"应为"类型编号>5" Private Sub Command2_Click() ''' comMyCommandFilter的查询语句为 "select * from 类型表 where 类型编号>5" DataList1.RowMember = "comMyCommandFilter" DataList1.ListField = "类型名称" End Sub
那如何动态改变comMyCommandFilter的查询条件,比如改成“select * from 类型表 where 类型编号>10”或“select * from 类型表 where 类型编号>50”,不可能为了每一个查询条件都在设计期建N个数据命令. 如何...
to suolan(我就知道这么多) 我在以下代码中用Filter试了一下,从MSHFlexGrid1显示的查询结果看Filter是有效的 Private Sub Command3_Click() DTEMain.rscomMyCommand.Filter = "类型编号>5" Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand End Sub
Filter 能够控制查询结果。我的问题是,怎么过滤DTEMain.comMyCommand而不是DTEMain.rscomMyCommand因为RowMember 需要它另外,To: footballboy(郑创斌) Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand这句话,我觉得有问题
'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
'显示整个表 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
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
Private Sub Command2_Click()
''' comMyCommandFilter的查询语句为 "select * from 类型表 where 类型编号>5"
DataList1.RowMember = "comMyCommandFilter"
DataList1.ListField = "类型名称"
End Sub
如何...
我在以下代码中用Filter试了一下,从MSHFlexGrid1显示的查询结果看Filter是有效的
Private Sub Command3_Click()
DTEMain.rscomMyCommand.Filter = "类型编号>5"
Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
End Sub
'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
Set MSHFlexGrid1.DataSource = DTEMain.rscomMyCommand
为什么能用,不过,我觉得有问题。另外,我题目已经说了:
DTEMain.rscomMyCommand.Filter = "类型编号>5"
DataList1.RowMember = "comMyCommand"并不行,我开始也是这样认为的,不过实际不行。
我重新看了你的问题,发现可能是我理解错你的意思.你的意思是将过滤的结果反映在datalist1中.那我前面就答非所问了.好.我按你的意思调试一下看行不行吧.由于水平所限,可能要花不少时间.
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