我有两个表需要更新。我必须检查一张桌子上的每条记录,然后对数据进行一些修改,然后上传修改后的 数据到另一个表!
这两个表有3,000条记录和11,000条记录。另外我还必须 从大约50条记录的第三张表中检查一些信息!
Dim id
Dim fly_SQL
id="user1"
Dim rsc1_conn As ADODB.Connection
Set rsc1_conn = CreateObject("ADODB.Connection")
rsc1_conn.Provider = "SQLOLEDB"
rsc1_conn.ConnectionString = "SERVER=companyserver;UID=" & id &
";Trusted_Connection=Yes;DATABASE=DATAbank" '
rsc1_conn.Open
Set rsc1 = CurrentDb.OpenRecordset("SELECT * FROM main_database",
dbOpenDynaset, dbSeeChanges)
rsc1.movefirst
do until rsc1.EOF
fly_SQL = "Select * from alt_db where alt_db.number = main.net_number"
Set rsc2 = CurrentDb.OpenRecordset(fly_SQL)
do stuff
code = dlookup( "type_def", "third_rec" , alt_db.activity = activity)
两个表都使用 net_number 作为参考,该表在主键上是唯一的主键,但是 alt_db 有多个条目。
所以基本上,我必须遍历主机上的每个 net_number ,查看 alt_db 上匹配的 net_number ,然后比较一个活动字段
第三张表,看看我主要更新哪个字段!如果这是项目管理费用,则将其放在main.PM_cost
中。 alt_db 中的 net_number 可能会重复10次,需要将这些其他费用汇总到主数据库中的相应费用类别中!例如:
主表类似于
net_number
第一条记录显示
main.netnumber = 123456
main.cont_cost
main.PM_cost
main.mgmt_cost
alt_db表看起来像
alt_db.net_number
alt_db.activity
alt_db.PM_cost
alt_db.const_cost
alt_db.mgmt_cost
third_rec看起来像
third_rec.code
third_type
数据可以是con1,sabb,
code type
sauf construction
con1 management
I130 project management
以及所需的规则:
用alt_db.activity
检查third_rec.act
并返回activity
类型
如果活动类型是构造类型,那么我将alt_db.cost
放入main.const_cost
如果活动类型为 project_mgmt ,那么我将alt_db.cost
放入main.PM_cost
中。 alt_db.activity可以是con1或SAF4,其类型由 third_rec 表确定。
试图找出最好的方法(最有效的方法)。
有什么建议吗?
上面的代码肯定会缺少适当的变量定义,但仅用于解释我的困境!
我也许可以用DLookup
来做到这一点,但我认为那不是非常有效!
Pete
答案 0 :(得分:0)
最好的方法是构建一个查询,该查询从Main和alt_db生成文件过滤的数据,以按net_number对活动进行分组。然后使用案例确定使用第三个文件更新alt_db中的哪些字段,并在主数据库的适当字段中更新结果。