Function DoUpdate() '先将数据恢复到初始状态 CreateTableUpdateJoin CreateProcedureUpdateJoin '大家可以分开执行以下几段代码,然后打开统计表看执行的效果 DoCmd.OpenQuery "用join方法更新" 'DoCmd.OpenQuery "用where方法更新" 'DoCmd.OpenQuery "用dlookup方法更新" ''大家注意实时表中栏目为“产品栏”的记录。实时表中有两条记录与统计表中的一条记录相符。但是更新时取的是ID较小的那条。 End Function '本函数创建3个更新查询。每个查询表示一种不同的更新方法。 Function CreateProcedureUpdateJoin() Dim strSql As String With CurrentProject.Connection DeleteProcedureUpdateJoin '用join的方法 strSql = "create procedure [用join方法更新] as update 统计表 inner join 实时表 on 统计表.栏目=实时表.栏目 set 统计表.点击率=实时表.点击率" .Execute strSql '用where关联的方法 strSql = "create procedure [用where方法更新] as update 统计表,实时表 set 统计表.点击率=实时表.点击率 where 统计表.栏目=实时表.栏目" .Execute strSql '用dlookup组织字符串的方法 strSql = "create procedure [用dlookup方法更新] as update 统计表 set 统计表.点击率=dlookup('点击率','实时表','点击率=' & 统计表.点击率)" .Execute strSql '大家注意实时表中栏目为“产品栏”的记录。实时表中有两条记录与统计表中的一条记录相符。但是更新时取的是ID较小的那条。 End With End Function '删除数据库中已经存在的2个表。 Function DeleteTableUpdateJoin() On Error Resume Next With CurrentProject.Connection .Execute "drop table 实时表" .Execute "drop table 统计表" End With End Function '删除数据库中已经存在的3个查询 Function DeleteProcedureUpdateJoin() On Error Resume Next With CurrentProject.Connection .Execute "drop procedure [用join方法更新]" .Execute "drop procedure [用where方法更新]" .Execute "drop procedure [用dlookup方法更新]" End With End Function '创建2个测试表,并加入测试数据 Function CreateTableUpdateJoin() Dim strSql As String With CurrentProject.Connection DeleteTableUpdateJoin .Execute "create table 实时表 (编号 AUTOINCREMENT(1,1) PRIMARY KEY,栏目 varchar(50),点击率 long)" .Execute "create table 统计表 (编号 AUTOINCREMENT(1,1) PRIMARY KEY,栏目 varchar(50),点击率 long)" .Execute "insert into 实时表 (栏目,点击率) values('公告栏',25000)" .Execute "insert into 实时表 (栏目,点击率) values('新闻栏',56)" .Execute "insert into 实时表 (栏目,点击率) values('产品栏',556)" .Execute "insert into 实时表 (栏目,点击率) values('产品栏',679)" '注意,这里有2个产品栏,但点击率不同 .Execute "insert into 实时表 (栏目,点击率) values('广告栏',698)" .Execute "insert into 统计表 (栏目,点击率) values('公告栏',0)" .Execute "insert into 统计表 (栏目,点击率) values('新闻栏',0)" .Execute "insert into 统计表 (栏目,点击率) values('产品栏',0)" .Execute "insert into 统计表 (栏目,点击率) values('宣传栏',0)" End With End Function |