Access交流中心

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

查询语句自动的丢失

凡卓  发表于:2010-07-07 13:31:50  
复制

我在查询视图中写了一个查询语句名为“Quarter Stocktaking Query”,这个语句需要引用主窗体中的Combo Box控件的当前值(Combo Box控件位于选项卡控件中)。另外,在主窗体中有一个名为MySubForm的子窗体,将这个MySubForm子窗体的属性SourceObject定义为这个查询。从而实现当改变这个Combo Box控件的值时,子窗体中列出符合条件的记录。

 

现在问题是:这个查询在视图中运行是没有问题的,但是关闭窗体再打开时这个查询时语句自动的消失了。

 

查询语句如下:
SELECT [Location List].Location_Code, [Location List].Area_Type, Left([Location List].Location_Code,3) AS Aisle, [Stock Inventory].Owner, [Stock Inventory].Stock, [Stock Inventory].Supplier, [Stock Inventory].PalletID, [Stock Inventory].OnhandQty, [Stock Inventory].Impressions
FROM [Location List] LEFT JOIN [Stock Inventory] ON [Location List].Location_Code=[Stock Inventory].Location
WHERE ([Location List].Area_Type)=Forms!MainForm!List_AreaType
ORDER BY Left([Location List].Location_Code,3), Right([Location List].Location_Code,2), Mid([Location List].Location_Code,4,3);

 

Combo Box控件更新后事件如下:
Private Sub List_AreaType_AfterUpdate()
       Me.MySubForm.SourceObject = "Query.Quarter Stocktaking Query"
End Sub

 

请各位老师指导,谢谢!

 

Top
煮江品茶 发表于:2010-07-07 14:25:30
估计是太繁琐,Access同志有些不愿意了。

凡卓 发表于:2010-07-07 14:49:57

请问有什么办法可以解决呀?有些网友也碰到过这种问题,也是说查询太复杂了,可以用VBA代码写这个查询,然后调后。但我不是很懂VBA,下面是我写的,执行时出错,请指导,如何将这个查询的记录在主窗体中的MySubForm的子窗体中显示出来。

 

Private Sub List_AreaType_AfterUpdate()
Dim strSQL As String

    strSQL = "SELECT [Location List].Location_Code, [Location List].Area_Type, Left([Location List].Location_Code,3) AS Aisle, " _
            & "[Stock Inventory].Owner, [Stock Inventory].Stock, [Stock Inventory].Supplier, " _
            & "[Stock Inventory].PalletID, [Stock Inventory].OnhandQty, [Stock Inventory].Impressions " _
            & "FROM [Location List] LEFT JOIN [Stock Inventory] ON [Location List].Location_Code=[Stock Inventory].Location " _
            & "WHERE [Location List].Area_Type = """ & Forms![MainForm]![List_AreaType] & """ " _
            & "ORDER BY Left([Location List].Location_Code,3), Right([Location List].Location_Code,2), Mid([Location List].Location_Code,4,3)"
   
    DoCmd.RunSQL (strSQL)
End Sub

 

其实个人感觉这个查询也并不是很复杂,不知是不是因为用了Left 和Right函数?



煮江品茶 发表于:2010-07-07 15:26:19

1、 DoCmd.RunSQL (strSQL)用法不对吧?你的sql是个选择查询,似乎不能用这个语句。

 

2、在查询中可以给表名称用as取一个简单的别名,这样语句就简介了。

 

3、我习惯于用strsql=strsql & “....." 这样的方式来写sql语句的字符串,似乎可读性要好一些。

 




凡卓 发表于:2010-07-07 16:18:35

煮江品茶老师向你请教以下几个问题:

 

1、针对于我上述的问题,用VBA执行选择查询的正确用法应什么?

 

2、如何将这个查询的记录在主窗体中的MySubForm的子窗体中显示出来

 

3、如果在VBA中执行这个查询,那么如何将这个查询的结果作为报表的数据源?(也就是有一个报表的数据来源是这个查询)

 

 

点击下载此附件

煮江品茶 发表于:2010-07-07 17:00:31

原查询没什么用,被我删除了。

请注意看子窗体数据源、报表数据源、子窗体加载事件、打开报表事件。

 

点击下载此附件



煮江品茶 发表于:2010-07-07 17:13:03


凡卓 发表于:2010-07-09 18:02:28

谢谢你的帮助,按照你的方法,已解决了我的疑问。



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