
DAO
时,Microsoft
有提供
CompactDatabase
Method
来压缩
Microsoft
Access
文件,RepairDatabase
Method
来修复损坏的
Microsoft
Access
文件,。可是自从
ADO
出来之后,好像忘了提供相对的压缩及修复
Microsoft
Access
文件的功能。
现在
Microsoft
发现了这个问题了,也提供了解决方法,不过有版本上的限制!限制说明如下:
ActiveX
Data
Objects
(ADO),
version
2.1
Microsoft
OLE
DB
Provider
for
Jet,
version
4.0
这是
Microsoft
提出的
ADO
的延伸功能:Microsoft
Jet
OLE
DB
Provider
and
Replication
Objects
(JRO)
这个功能在
JET
OLE
DB
Provider
version
4.0
(Msjetoledb40.dll)
及
JRO
version
2.1
(Msjro.dll)
中第一次被提出!
这些必要的
DLL
文件在您安装了
MDAC
2.1
之后就有了,您可以在以下的网页中下载
MDAC
的最新版本!
Universal
Data
Access
Web
Site
在下载之前先到
VB6
中检查一下,【控件】【设定引用项目】中的
Microsoft
Jet
and
Replication
Objects
X.X
library
如果已经是
2.1
以上的版本,您就可以不用下载了!
1、新建一个新表单,选择功能表中的【控件】【设定引用项目】。
2、加入
Microsoft
Jet
and
Replication
Objects
X.X
library,其中
(
X.X
大于或等于
2.1
)。
3、在适当的地方加入以下的程序代码,记得要修改
data
source
的内容及目地文件的路径:
Dim
jro
As
jro.JetEngine
Set
jro
=
New
jro.JetEngine
jro.CompactDatabase
"Provider=Microsoft.Jet.OLEDB.4.0Data
Source=d:\
wind2.mdb",
_
'来源文件
在
DAO
3.60
之后,RepairDatabase
Method
已经无法使用了,以上的程序代码显示了
ADO
CompactDatabase
Method
的用法,而它也取代了
DAO
3.5
时的
RepairDatabase
method!
首先在master库中,新建存储过程CREATE PROCEDURE p_compdb
@dbname sysname --要压缩的数据库名
as
--1.清空日志
exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')
--2.截断事务日志:
exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小
exec('DBCC SHRINKDATABASE(['+@dbname+'])')
--4.设置自动收缩
exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')
GO
然后在VB中调用,参数是数据库名。
需要用访问master库的权限连接到master库上调用。
try this:
command.Execute("sp_dboption '"&数据库名 &"'")
这个写得还比较详细了,在此基础上补充如下:Private Sub Command1_Click()
Dim cn As New ADODB.Connection '声明数据库连接对象cn
Dim rs As New ADODB.Recordset '声明记录集对象rs
Dim strsql As String, mypath As String, connstr As String 'strsql表示查询语句,mypath表示数据库路径,connstr表示访问数据库的语句
mypath = App.Path &"\study.mdb" '获取数据库的路径
connstr = "provider=microsoft.jet.oledb.4.0data source=" &mypath &"Persist Security Info=False" '连接数据库字符串配置信息
strsql = "Select * From userInformation Where userId='" &txtuser.Text &"'" '查询语句命令
cn.Open (connstr) '连接数据库
'rs.Open strsql, cn, 1, 1
rs.Open strsql, cn '执行查询命令,查询结果返回到rs记录集
'If rs.RecordCount = 0 Then
If rs.EOF = True And rs.BOF = True Then '当前记录集中没有记录
MsgBox "用户不存在!", , "提示" 'd出对话框,显示信息
rs.Close '关闭记录集
cn.Close '关闭数据库连接
ElseIf txtpassword.Text = rs("userPassword") And Combo1.Text = rs("shenfen") Then '记录集中有记录,并且当然记录的字段(用户密码:userPassword)等于窗体上文本框内容,下拉框选择内容等于字段 (身份:shenfen)
rs.Close '关闭记录集
cn.Close '关闭数据库连接
If Combo1.Text = "教师" Then '下拉框内容为“教师”
Form2.Show '打开窗体(Form2)
Unload Me '卸载当前窗体Form2
Else '下拉框内容不为“教师”,否则
Form3.Show '打开窗体(Form3)
Unload Me '卸载当前窗体Form3
End If
ElseIf Combo1.Text <>rs("shenfen") Then '下拉框选择内容不等于字段 (身份:shenfen)
rs.Close '关闭记录集
cn.Close '关闭数据库连接
MsgBox "请重新进行身份选择", "0", "提示" 'd出对话框,显示信息
Else
rs.Close '关闭记录集
cn.Close '关闭数据库连接
MsgBox "密码不对,请重新输入!", vbOKOnly + vbExclamation, "错误提示" 'd出对话框,显示信息
txtpassword.Text = "" '窗体文本输入控件(密码)内容设为空
txtpassword.SetFocus '设置控件焦点为当前可用。
End If
End Sub
Private Sub Command2_Click()
End
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)