Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在线等:如何应用组合框中的值?

兔斯基  发表于:2011-04-13 12:57:59  
复制

在查询中,用组合框来筛选,组合框的行来源:

SELECT 客户表.客户名称 FROM 客户表 ORDER BY 客户表.客户名称;

子窗体的记录源是一个查询,SQL语句:

SELECT 运输清单.日期, 运输清单.客户名称, 运输清单.车号, 运输清单.驾驶员, 运输清单.装货地点, 运输清单.卸货地点, 运输清单.数量, 运输清单.单价, [数量]*[单价] AS 运费, 运输清单.代垫费用, 运输清单.过路费, 运输清单.油费, 运输清单.驾驶员工资, 运输清单.罚款, 运输清单.住宿费, 运输清单.维修费用, 运输清单.保险, 运输清单.检车, 运输清单.轮胎, 运输清单.代付运费, 运输清单.备注
FROM 运输清单;
“查询”按钮代码:

Private Sub cmd查询_Click()
Dim strWhere As String
strWhere = ""

If Not IsNull(Me.客户名称) Then
    strWhere = strWhere & "([客户名称] like '*" & Me.客户名称 & "*') and "
End If
If Not IsNull(Me.车号) Then
    strWhere = strWhere & "([车号] like '*" & Me.车号 & "*') and "
End If
If Not IsNull(Me.备注) Then
    strWhere = strWhere & "([备注] like '*" & Me.备注 & "*') and "
End If
If Not IsNull(Me.驾驶员) Then
    strWhere = strWhere & "([驾驶员] like '*" & Me.驾驶员 & "*') and "
End If
If Not IsNull(Me.装货地点) Then
    strWhere = strWhere & "([装货地点] like '" & Me.装货地点 & "') and "
End If
If Not IsNull(Me.卸货地点) Then
    strWhere = strWhere & "([卸货地点] like '" & Me.卸货地点 & "') and "
End If
If Not IsNull(Me.是否付款) Then
    strWhere = strWhere & "([是否付款] like '" & Me.是否付款 & "') and "
End If
    If Not IsNull(Me.日期开始) Then
        '【日期开始】有输入
        strWhere = strWhere & "([日期] >= #" & Format(Me.日期开始, "yyyy-mm-dd") & "#) AND "
End If
    If Not IsNull(Me.日期结束) Then
        '【日期结束】有输入
        strWhere = strWhere & "([日期] <= #" & Format(Me.日期结束, "yyyy-mm-dd") & "#) AND "
End If
   
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If


Me.费用明细子窗体.Form.Filter = strWhere
Me.费用明细子窗体.Form.FilterOn = True
End Sub

其中:按下面的三个组合框(客户名称,驾驶员,车号),均查不出结果,不知问题出在哪里?

 

Top
煮江品茶 发表于:2011-04-13 14:21:41
天知道

兔斯基 发表于:2011-04-13 14:30:15

老师 是不是组合框引用的问题?

 



兔斯基 发表于:2011-04-13 14:36:29

把附件传上来,老师看下好吗?里面的备份和还原好像也有问题。

点击下载此附件

煮江品茶 发表于:2011-04-13 15:41:43

这是组合框绑定问题。你的子窗体中客户名称绑定列为客户表中的ID,你用主窗体的客户名称字段当然查不出来,这叫做风马牛不相及。解决的方法是,将主窗体的客户名称也绑定客户表的ID,这样就可以查出来了(注意这是字段类型已经变成数字型了,筛选语句要修改)。

其他字段没细看,估计是同类问题。



兔斯基 发表于:2011-04-13 16:01:21
谢谢老师,查询的是解决了,数据的行来源,把ID也加进去,列数为2列,第一列隐藏,就可以了,筛选语句不用修改。

兔斯基 发表于:2011-04-13 16:06:23

把组合框的“行来源”改成:

1.客户名称  SELECT 客户表.ID, 客户表.客户名称 FROM 客户表 ORDER BY 客户表.客户名称;

2.车号      SELECT 车辆.ID, 车辆.车号 FROM 车辆 ORDER BY 车辆.车号;

3.驾驶员    SELECT 驾驶员.ID, 驾驶员.驾驶员 FROM 驾驶员 ORDER BY 驾驶员.驾驶员;

列数2,列宽0;2.54(隐藏第一列)



煮江品茶 发表于:2011-04-13 16:16:01
呵呵,不改的话,组合框记录超过10就出毛病了,不信你试试。

兔斯基 发表于:2011-04-13 16:43:12
这个还真没注意到。

兔斯基 发表于:2011-04-13 16:52:03

老师,我“客户名称”组合框记录有11个了,还是可以查询到,你指的是哪里?就是有11个客户也没问题啊?!

 



煮江品茶 发表于:2011-04-13 17:01:34

查到不是问题,是查得多出来不需要的应该是问题,呵呵。

 

以后你慢慢就理解了。



兔斯基 发表于:2011-04-13 20:08:27

我代码再仔细看看

 



兔斯基 发表于:2011-04-13 20:17:47

被老师说中了,组合框记录超过10就出毛病了,问题也不知道出在哪里?老师指点一下!



兔斯基 发表于:2011-04-13 20:35:07
原来是Like通配符在作怪,不知道怎么做到精确查找,老师指点一下!

煮江品茶 发表于:2011-04-13 20:36:42

"[客户名称] like '*" & Me.客户名称 & "*'

当你的ID=1的时候,可以筛选出所有ID含有1的记录来,也就是11、12....21、3214等等。所以这个方法是没法按照真正的客户名称来得到需要的记录的,实际只是按照ID的值进行筛选。

 



煮江品茶 发表于:2011-04-13 20:38:09
改成 "[客户名称]=" & Me.客户名称 即可

 



兔斯基 发表于:2011-04-13 21:36:35

strWhere = strWhere & "([客户名称] like '*" & Me.客户名称 & "*') and "

还是不会改,被引号给弄懵了,老师上面那句怎么改?



兔斯基 发表于:2011-04-13 21:45:36

改成这样:

strWhere = strWhere & "([客户名称] =" & Me.客户名称 & ") And "



总记录:17篇  页次:1/1 9 1 :