明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1728|回复: 2

急!请教关于VBA与DAO的问题

[复制链接]
发表于 2005-7-1 11:52:00 | 显示全部楼层 |阅读模式
本人在调用ACCESS数据库时,需解决如下问题:


(一)在程序运行时获得数据库中数据表的数量和各数据表的名称。


(二)在程序运行时进行数据库的复制和单个数据表的复制。


给段程序最好。


急!请各位高手指点,本人万分感谢!
发表于 2005-7-1 14:29:00 | 显示全部楼层
Application.CurrentData.AllTables.Count



注意,这里也包含了隐藏表和系统表,如果要精确获得用户表的数量,最好遍历判断一下。


数据库表复制直接用SQL命令吧。最好把你遇到的问题描述清楚一点。
发表于 2005-7-1 17:44:00 | 显示全部楼层
下面是我前几天做的一个Access的应用中的一部分,一个很标准的ADO数据存取程序,供你参考: _____________________________________________________________ Private Sub Calc(bolMode As Boolean)
Call Init

Dim curTotalArea(20) As Long
Dim curTotalFee(10) As Long Set con = Application.CurrentProject.Connection
Set rs = CreateObject("ADODB.Recordset")

stSql = "SELECT * FROM [房屋结构类型]"
rs.Open stSql, con, adOpenStatic

i = 0
While Not rs.EOF
curType(i) = rs![结构类型]
curFee(i) = CInt(rs![补偿标准])
i = i + 1
rs.MoveNext
Wend

rs.Close

stSql = "SELECT * FROM [年限折旧标准]"
rs.Open stSql, con

i = 0
While Not rs.EOF
curYearBegin(i) = CInt(rs![竣工年限(开始)])
curYearEnd(i) = CInt(rs![竣工年限(结束)])
curRate(i) = CSng(rs![折旧比率])
i = i + 1
rs.MoveNext
Wend

rs.Close

stSql = "SELECT * FROM [清违资料登记表] "
stSql = stSql & "WHERE [地址] Not Like '%%环城%%' And [地址] Not Like '%%国道%%' And [地址] Not Like '%%红岩%%' And [地址] Not Like '%%床单%%' And [地址] Not Like '%%凯运%%' And [地址] Not Like '%%桐荫坪%%' And [地址] Not Like '%%东门北路%%'"
stSql = stSql & "And [拆迁区内] = True ORDER BY [证号]"
rs.Open stSql, con, adOpenKeyset, adLockOptimistic

strMsg = "数据统计中..."
varReturn = SysCmd(acSysCmdInitMeter, strMsg, rs.RecordCount)

i = 0
j = 0
While Not rs.EOF
i = i + 1
varReturn = SysCmd(acSysCmdUpdateMeter, i)

If Not IsNull(rs![A建筑面积]) Then
rs![A折价] = CSng(rs![A建筑面积]) * curFee(getFee(rs![A房屋结构])) * curRate(getRate(rs![A建筑竣工时间]))
curTotalArea(getFee(rs![A房屋结构])) = curTotalArea(getFee(rs![A房屋结构])) + CSng(rs![A建筑面积]) * 100
curTotalFee(getFee(rs![A房屋结构])) = curTotalFee(getFee(rs![A房屋结构])) + CSng(rs![A折价])
Else
rs![A折价] = 0
End If

If Not IsNull(rs![B建筑面积]) Then
rs![B折价] = CSng(rs![B建筑面积]) * curFee(getFee(rs![B房屋结构])) * curRate(getRate(rs![B建筑竣工时间]))
curTotalArea(getFee(rs![B房屋结构])) = curTotalArea(getFee(rs![B房屋结构])) + CSng(rs![B建筑面积]) * 100
curTotalFee(getFee(rs![B房屋结构])) = curTotalFee(getFee(rs![B房屋结构])) + CSng(rs![B折价])
Else
rs![B折价] = 0
End If

If Not IsNull(rs![C建筑面积]) Then
rs![C折价] = CSng(rs![C建筑面积]) * curFee(getFee(rs![C房屋结构])) * curRate(getRate(rs![C建筑竣工时间]))
curTotalArea(getFee(rs![C房屋结构])) = curTotalArea(getFee(rs![C房屋结构])) + CSng(rs![C建筑面积]) * 100
curTotalFee(getFee(rs![C房屋结构])) = curTotalFee(getFee(rs![C房屋结构])) + CSng(rs![C折价])
Else
rs![C折价] = 0
End If

If Not IsNull(rs![D建筑面积]) Then
rs![D折价] = CSng(rs![D建筑面积]) * curFee(getFee(rs![D房屋结构])) * curRate(getRate(rs![D建筑竣工时间]))
curTotalArea(getFee(rs![D房屋结构])) = curTotalArea(getFee(rs![D房屋结构])) + CSng(rs![D建筑面积]) * 100
curTotalFee(getFee(rs![D房屋结构])) = curTotalFee(getFee(rs![D房屋结构])) + CSng(rs![D折价])
Else
rs![D折价] = 0
End If

If Not IsNull(rs![E建筑面积]) Then
rs![E折价] = CSng(rs![E建筑面积]) * curFee(getFee(rs![E房屋结构])) * curRate(getRate(rs![E建筑竣工时间]))
curTotalArea(getFee(rs![E房屋结构])) = curTotalArea(getFee(rs![E房屋结构])) + CSng(rs![E建筑面积]) * 100
curTotalFee(getFee(rs![E房屋结构])) = curTotalFee(getFee(rs![E房屋结构])) + CSng(rs![E折价])
Else
rs![E折价] = 0
End If

If Not IsNull(rs![F建筑面积]) Then
rs![F折价] = CSng(rs![F建筑面积]) * curFee(getFee(rs![F房屋结构])) * curRate(getRate(rs![F建筑竣工时间]))
curTotalArea(getFee(rs![F房屋结构])) = curTotalArea(getFee(rs![F房屋结构])) + CSng(rs![F建筑面积]) * 100
curTotalFee(getFee(rs![F房屋结构])) = curTotalFee(getFee(rs![F房屋结构])) + CSng(rs![F折价])
Else
rs![F折价] = 0
End If

rs![Z折价总计] = rs![A折价] + rs![B折价] + rs![C折价] + rs![D折价] + rs![E折价] + rs![F折价]

rs.Update
rs.MoveNext
Wend
Debug.Print "总记录条数:" & i
rs.Close

stSql = "SELECT * FROM [房屋结构类型] "
rs.Open stSql, con, adOpenForwardOnly, adLockOptimistic

While Not rs.EOF
rs![总面积] = curTotalArea(getFee(rs![结构类型])) / 100
rs![总补偿费] = curTotalFee(getFee(rs![结构类型]))
rs.Update
rs.MoveNext
Wend
rs.Close varReturn = SysCmd(acSysCmdClearStatus)
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 12:48 , Processed in 0.162119 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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