Office中国论坛/Access中国论坛

标题: 用VB创建和修改查询 [打印本页]

作者: todaynew    时间: 2009-3-7 18:19
标题: 用VB创建和修改查询
本帖最后由 todaynew 于 2009-3-7 19:34 编辑


  用TransferSpreadsheet导出Excel时,你常常会遇到一个麻烦,就是你需要一个查询的名称,没有这个名称你是无法导出你需要的数据的。你固然可以用向导事先建立你需要的查询,你也就有了这个查询名称。但是,当的程序已经开始运用了,此时你或你程序的使用者,或许需要改变你对导出数据的想法时,你的麻烦就来了。这时你就琢磨了,当初怎么不考虑扩展性问题呢?于是乎,你便会想到论坛上的这个帖子了。

  起初写这个帖子时的想法是为了解决以上问题的,不过想了想,问题需要简化成《用VB创建和修改查询》,简化的结果是你没有发现导出Excel问题,倒是可以沿着这个思路找到更为广泛的用途。

  这个帖子是为初学者撰写的,这样声明的含义有两层:其一是本人是初学者,因此代码可能不完善;其二是仅对初学者有帮助,因此代码很简单。

  

[attach]36408[/attach]

[attach]36409[/attach]

Option Compare Database
Dim Qdef As QueryDef
Dim strsql As String
Dim strname As String

Private Sub 创建查询_Click()
strname = InputBox$("输入查询名称:", "查询名称", "临时查询")
On Error GoTo 创建_Err
     strsql = Me.子窗体.Form.RecordSource
     strsql = InputBox$("输入SQL语句:", "SQL语句", "select * from " & strsql & " where 准则;")
    Set Qdef = CurrentDb.CreateQueryDef(strname)  '创建查询
    Qdef.SQL = strsql
                                             '创建查询
     Me.子窗体.Form.RecordSource = strname
     Me.子窗体.Form.Requery
     Qdef.Close
     Set Qdef = Nothing
创建_Exit:
     Exit Sub
创建_Err:
     MsgBox strname & " 已存在!"
     Resume 创建_Exit
End Sub

Private Sub 删除查询_Click()
strname = InputBox$("输入查询名称:", "查询名称", "临时查询")
On Error GoTo 删除_Err
     Me.子窗体.Form.RecordSource = "成绩查询"
     Me.子窗体.Form.Requery
     DoCmd.DeleteObject acQuery, strname
删除_Exit:
     Exit Sub
删除_Err:
     MsgBox strname & " 不存在!"
     Resume 删除_Exit
End Sub

Private Sub 修改查询_Click()
strname = InputBox$("输入查询名称:", "查询名称", "临时查询")
On Error GoTo 修改_Err
     Me.子窗体.Form.RecordSource = "成绩查询"
     strsql = Me.子窗体.Form.RecordSource
     strsql = InputBox$("输入SQL语句:", "SQL语句", "select * from " & strsql & " where 准则;")
    Set Qdef = CurrentDb.QueryDefs(strname)  '修改查询
    Qdef.SQL = strsql                                     '修改查询
     Me.子窗体.Form.RecordSource = strname
     Me.子窗体.Form.Requery
     Qdef.Close
     Set Qdef = Nothing
修改_Exit:
     Exit Sub
修改_Err:
     MsgBox strname & " 不存在!"
     Resume 修改_Exit
End Sub


------------------------------------
作者: ACMAIN_CHM    时间: 2009-3-7 18:26
一上来就看到 todaynew  的新作,先来踹上一脚再说。



******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: todaynew    时间: 2009-3-7 18:30
一上来就看到 todaynew  的新作,先来踹上一脚再说。



******************
*  一切皆有可能 ...
ACMAIN_CHM 发表于 2009-3-7 18:26



作者: chaojianan    时间: 2009-3-7 21:15
1楼和2楼都是高手,佩服,
向您们看齐,学习。
作者: wanglhc    时间: 2009-3-12 12:06
学习,太强了
作者: Santree    时间: 2009-7-1 11:48
昨天找了这个东东大半天 ,
作者: ZZBZZBZZZB    时间: 2009-7-8 10:59
谢谢
作者: zzxgenius529    时间: 2009-12-23 18:29
真好啊
作者: heqing3000    时间: 2009-12-31 09:17
看见好东西必顶无疑!
作者: jsnjhu    时间: 2010-5-14 09:58
再次感谢todaynew老师指导
作者: ZHENGLIAN    时间: 2010-8-22 11:43
看见好东西必顶无疑
作者: ggguan@yeah.net    时间: 2015-5-8 15:42
的多少
作者: nncchh    时间: 2015-5-25 23:12
谢谢分享
作者: nncchh    时间: 2015-5-25 23:13
学习了
作者: ardu95    时间: 2016-11-1 06:50
谢谢分享。
收藏了,




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3