Office中国论坛/Access中国论坛
标题: [求助]请问如何判断某查询是否存在? [打印本页]
作者: bjyizhang 时间: 2006-4-13 23:28
标题: [求助]请问如何判断某查询是否存在?
因为我要在程序中删除查询后新建此查询,可老是提示此查询不存在,请问如何判断某查询是否存在?谢谢
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编辑过]
作者: fan0217 时间: 2006-4-13 23:31
用你刚才提到的系统报错,就可以实现的.用错误处理拦截错误代码.
不过也可以用查询Access系统对象表来实现.
[此贴子已经被作者于2006-4-13 15:32:08编辑过]
作者: 一点通 时间: 2006-4-13 23:35
删除查询又创建这样的查询,有这个必要吗?
作者: bjyizhang 时间: 2006-4-13 23:40
我是要求根据系统时间建立不同的查询,因为名字要一样,所以只好这样做了.
作者: 一点通 时间: 2006-4-13 23:43
晕,未见过这样建查询的
作者: fan0217 时间: 2006-4-13 23:44
我觉得没有这各必要.
动态建立查询的意义不大.
作者: bjyizhang 时间: 2006-4-13 23:45
因为字段是不能为变量的么,而且老板要的又着急,只好对付一下,见笑了.
作者: bjyizhang 时间: 2006-4-14 00:17
请问:如何用变量取代字段名?
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
作者: hi-wzj 时间: 2006-4-14 06:19
可用命令更新查询语句的.
作者: andymark 时间: 2006-4-14 07:31
如果查询存在则执行删除
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
作者: hi-wzj 时间: 2006-4-14 18:07
Dim dbsCurrent As Database
Dim qryTest As QueryDef
Set dbsCurrent = CurrentDb
Set qryTest = dbsCurrent.QueryDefs("要更改的查询名称")
qryTest.SQL = "更新后的sql语句"
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |