Access911.net   |   a9BBS   |   OTaA System  
  搜索文章︰  
Access911歡迎您光臨  
   主頁      上傳      简体版       論壇     
設為首頁  |  加入收藏   
  
你現在的位置︰文章索引 -> 文章分類 -> 查詢  
 首頁|  近日更新|  下載  |  文章索引  |  搜索|  朮語|  承接工程|  
 
系統正在加載內容,請耐心等待...
 
 查詢
 窗体
 報表
 
 
 VBA
 函數
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 發布
 OA
 ASP/ASP.NET
 其他語言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用軟件
 參考文檔
 業主作品
 网友大作
 
 
友情鏈接
 access911.net
 
訪問人次
 1701862
 
站長 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 訂閱

顯示附加信息 >>>

新手來看︰如何根據一個表去更新另一個表,帶 JOIN 的update怎么寫?

作者︰cg1  摘自︰access911.net  ︰cg1  更新日期︰2010-9-1  瀏覽人次︰

 

問題︰

如何根據一個表去更新另一個表,帶 JOIN 的update怎么寫?

實時表
編號(自動編號)      欄目(文字)      點擊率(長整)
1                   公告欄           25000
2                   新聞欄              56
3                   產品欄             556
4                   廣告欄             698


統計表
編號(自動編號)      欄目(文字)      點擊率(長整)
1                   公告欄               0
2                   新聞欄               0
3                   產品欄               0
4                   宣傳欄               0

如何將[實時表]的點擊率更新到[統計表]的點擊率,以欄目字段為關聯?

更新後的結果為︰

統計表
編號(自動編號)      欄目(文字)      點擊率(長整)
1                   公告欄           25000
2                   新聞欄              56
3                   產品欄             556
4                   宣傳欄               0

 


回答︰


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


 

 

 
相關文章
     沒有手動相關文章
 
評論
     查看或發表更多的評論,請單擊這里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期︰2000年4月2日  |  設計施工︰陳格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陳格 保留所有權利