台灣最大程式設計社群網站
線上人數
7278
 
會員總數:246136
討論主題:189720
歡迎您免費加入會員
討論區列表 >> ACCESS >> [ACCESS 2013]查出有重複資料後資料不進入資料表 - 不清楚從哪裡下手查資源QQ
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
[ACCESS 2013]查出有重複資料後資料不進入資料表 - 不清楚從哪裡下手查資源QQ
價值 : 8 QP  點閱數:472 回應數:5
樓主

Delia
門外漢
0 5
95 6
發送站內信

各位大大好!
本菜今日想尋找個突破點,
希望各位大大能夠指點個方向~

本菜做了個ACCESS的表單,
欄位只有身分代碼和身分2個欄位,
重複資料的檢核之前有請教某位大大幫忙解答,
下面是我拿到的語法:

Private Sub 身份代碼_AfterUpdate()
On Error Resume Next '若發生錯誤,以此避開
aa = DLookup("身份代碼", "身份表", "身份代碼='" & Me![身份代碼] & "'")
If IsNull(aa) = False Then '若取得重複值
MsgBox "身份代碼重複,請重新確認。"
End If
End Sub

但目前本菜有個疑問,
若我現在身分代碼已有S、C、A這3筆資料,
在表單身分代碼輸入S後,
會跳出正確訊息「身份代碼重複,請重新確認。」,
可是我點擊「確定」後,
這個被判定重複的S還是會保留在資料庫裡,
也會留在表單畫面的身分代碼中,
我想讓他跳警示訊息並點擊「確定」後,
這筆重複資料不會出現在畫面上,
也不會進資料庫中,
想詢問大大有沒有什麼資源可以參閱呢?






1樓
回應

roar
檢舉此回應
這從一開始設定資料表table 時就可以設定某欄位是不重複,重複資料根本無法存入資料庫之內。(簡單一點就用主索引)
以下是MS的說明
什麼是主索引鍵?
主索引鍵是資料表中的一個或一組欄位,這會提供每一個資料列的唯一識別碼給 Microsoft Access。 在關聯式資料庫 (例如 Access 資料庫) 中,資訊會根據主題區分且個別存放在主題式的資料表中。 然後您需要使用資料表關聯性及主索引鍵,來告訴 Access 如何重組這些資訊。 Access 會使用主索引鍵欄位,來建立多重資料表資料之間的關聯性,並以有意義的方式組合資料。
識別碼或序號或代碼等唯一識別碼,通常可做為資料表中的主索引鍵。 例如,您可以建立「客戶」資料表,並在當中給每個客戶指派一組唯一的客戶識別碼編號。 此客戶識別碼欄位便會是主索引鍵。
不佳的主索引鍵選擇的範例為名稱或位址。 這兩者都包含可能隨著時間變更的資訊。
Access 會確保主索引鍵欄位中每筆記錄都具有值,且是唯一的值。
本篇文章回覆於2019-08-31 09:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

tungta
捐贈 VP 給 tungta 檢舉此回應
請加上一行指令SendKeys "{ESC}", True '還原為原值
如下
Private Sub 身份代碼_AfterUpdate()
On Error Resume Next '若發生錯誤,以此避開
aa = DLookup("身份代碼", "身份表", "身份代碼='" & Me![身份代碼] & "'")
If IsNull(aa) = False Then '若取得重複值
MsgBox "身份代碼重複,請重新確認。"
SendKeys "{ESC}", True '還原為原值
End If
End Sub
本篇文章回覆於2019-08-31 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
您的動作不能寫在 afterupdate 要寫在 Before update
afterupdate 資料已進資料庫了
1.用Roar 所提的 主索引鍵 來避開重覆


2.Private Sub 身份代碼_BeforeUpdate()
aa = DLookup("身份代碼", "身份表", "身份代碼='" & Me![身份代碼] & "'")
If IsNull(aa) = False Then '若取得重複值
Cancel=true <-- 您先試一下 不行的話再來改
End If

End Sub
本篇文章回覆於2019-08-31 21:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
主索引、 After update、 before Update 各有不同的使用時機,有時要併用。(原則上主索引我是一定用的)
主索引 需等寫入資料庫時才會知道是否重覆
AfterUpdate beforeUpdate 請您仔細分辨別其用法


本篇文章回覆於2019-08-31 22:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Delia
檢舉此回應
謝謝各位大大的指教!
也謝謝P陳大大提供的方式和說明,
因為目前tungta的方式一次解決我的問題,
其他的部份我會再研究看看,謝謝大家:D!
本篇文章回覆於2019-09-07 09:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.