设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2298|回复: 10
打印 上一主题 下一主题

[查询] [求助]请问如何判断某查询是否存在?

[复制链接]
跳转到指定楼层
1#
发表于 2006-4-13 23:28:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为我要在程序中删除查询后新建此查询,可老是提示此查询不存在,请问如何判断某查询是否存在?谢谢

Dim Conn As New ADODB.Connection
Set Conn = CurrentProject.Connection
Conn.Execute "drop table currentQuery"
Set Conn = Nothing

'**************
Dim dbs As Database, qdf As QueryDef, strSQL As String, dmonth As String
dmonth = Year(Now()) & month(Now())
Set dbs = CurrentDb

'************** judge month and create new Query
Select Case dmonth
  Case 20064
  MsgBox "20064"
  strSQL = "SELECT JobName.[Job No], StaffName.[Staff Name], Jobschedule.[2006-4], Jobschedule.[2006-5], Jobschedule.[2006-6], Jobschedule.[2006-7], Jobschedule.[2006-8], Jobschedule.[2006-9], Jobschedule.[2006-10], Jobschedule.[2006-11], Jobschedule.[2006-12], Jobschedule.[2007-1], Jobschedule.[2007-2], Jobschedule.[2007-3], Jobschedule.[2007-4] FROM StaffName INNER JOIN (JobName INNER JOIN Jobschedule ON JobName.[Job No] = Jobschedule.[Job No]) ON StaffName.[Staff Name] = Jobschedule.[Stuff Name];"
  Set qdf = dbs.CreateQueryDef("currentQuery", strSQL)

[此贴子已经被作者于2006-4-13 15:29:09编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-4-13 23:31:00 | 只看该作者
用你刚才提到的系统报错,就可以实现的.用错误处理拦截错误代码.

不过也可以用查询Access系统对象表来实现.

[此贴子已经被作者于2006-4-13 15:32:08编辑过]

3#
发表于 2006-4-13 23:35:00 | 只看该作者
删除查询又创建这样的查询,有这个必要吗?
4#
 楼主| 发表于 2006-4-13 23:40:00 | 只看该作者
我是要求根据系统时间建立不同的查询,因为名字要一样,所以只好这样做了.


5#
发表于 2006-4-13 23:43:00 | 只看该作者
晕,未见过这样建查询的
6#
发表于 2006-4-13 23:44:00 | 只看该作者
我觉得没有这各必要.

动态建立查询的意义不大.
7#
 楼主| 发表于 2006-4-13 23:45:00 | 只看该作者
因为字段是不能为变量的么,而且老板要的又着急,只好对付一下,见笑了.
8#
 楼主| 发表于 2006-4-14 00:17:00 | 只看该作者
请问:如何用变量取代字段名?

1 Dim f1 As String
2 f1 = Year(Now()) & "-" & month(Now())
3 strSQL = "SELECT JobName.[Job No], StaffName.[Staff Name], Jobschedule.[f1]
4 strSQL = "SELECT JobName.[Job No], StaffName.[Staff Name], Jobschedule.[2006-4]

如何使第3句和第4句有相同效果?我试验,他会提示请输入f1

thanks
9#
发表于 2006-4-14 06:19:00 | 只看该作者
可用命令更新查询语句的.
10#
发表于 2006-4-14 07:31:00 | 只看该作者
如果查询存在则执行删除

   Dim Rs As New ADODB.Recordset
   Dim TemName As String
   
    Rs.Open "SELECT Name FROM MSysObjects WHERE Type=5 and MSysObjects.Flags=0", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
   Do While Not Rs.EOF
       If Rs.Fields("name") = "currentQuery" Then
      
          DoCmd.DeleteObject acQuery, "currentQuery"
        End If
      Rs.MoveNext
   Loop


   Set Rs = Nothing
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-27 21:06 , Processed in 0.090652 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表