标题: 管理你的ACCESS查询语句 [打印本页] 作者: Victor_Duane 时间: 2007-12-15 12:25 标题: 管理你的ACCESS查询语句 导入ACCESS的查询语句到一个表中
直接运行 testCreatequerysql()这个过程就可以把你数据库中的查询导入到一个tblquerysql
这个表是过程建立的,如果过程已经建立了不会覆盖原来的表
Sub testCreatequerysql()
CDtable
CreateQuerySQL "tblquerysql"
End Sub
把查询的语句写入到一个表中的过程
Sub CreateQuerySQL(strTable As String)
On Error GoTo Err_Handler
Dim Rs As DAO.Recordset
Dim qy As DAO.QueryDef
Dim i As Integer
Set Rs = CurrentDb.OpenRecordset(strTable)
For Each qy In CurrentDb.QueryDefs
If qy.Name Like "[!~]*" Then
Debug.Print qy.Name
Rs.AddNew
Rs(1) = qy.Name
Rs(2) = qy.SQL
Rs.Update
qy.Close
End If
qy.Close
Next
Set qy = Nothing
Set Rs = Nothing
Err_Handler:
If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
End Sub
新建一个表tblquerysql可以存放查询语句
Public Sub CDtable()
On Error GoTo error1
Dim db1 As Database
Dim t1 As TableDef
Dim f1 As Field
Set db1 = Workspaces(0).Databases(0)
Set t1 = db1.CreateTableDef("tblQuerySql")
With t1
Set f1 = .CreateField("ID", dbLong)
f1.Attributes = dbAutoIncrField + dbFixedField
Debug.Print f1.Attributes
t1.Fields.Append f1
Set f1 = .CreateField("QueryName", dbText, 50)
t1.Fields.Append f1
Set f1 = .CreateField("SqlValue", dbMemo)
t1.Fields.Append f1
Set f1 = .CreateField("operTime", dbDate)
f1.DefaultValue = "=Now()"
t1.Fields.Append f1
End With
db1.TableDefs.Append t1
db1.Close
Exit Sub
error1:
If Err.Number = 3010 Then
Exit Sub
Else
MsgBox Err.Number & Err.Description
Exit Sub
End If
End Sub作者: gdfsslec 时间: 2007-12-15 12:28
谢谢版主分享!
在什么场合使用啊作者: Victor_Duane 时间: 2007-12-15 12:40
这些我为了方便整理都是写在模块里的,你可以在模块里直接运行,也可以在窗体的按钮事件中运行testCreatequerysql()
这个过程作者: iamee 时间: 2007-12-15 13:28
谢谢分享!!!!!!作者: gdfsslec 时间: 2007-12-15 13:56
我的意思是我们通常把ACCESS的查询语句写在代码里,然后生成MDE保护。如果放在表里不是很容易被人修改?作者: Victor_Duane 时间: 2007-12-15 15:42
这些不是运用于你的数据库的使用,而是为了更好的维护你的数据库的查询
一旦查询被破坏,可以从这个表中导入,这样你的数据库将更加的强壮作者: goto2008 时间: 2007-12-15 19:21
能弄个库上来吗,汗.....作者: t小宝 时间: 2007-12-15 21:54
很好,谢谢!作者: 5988143 时间: 2007-12-17 08:15
不錯,謝謝分享!