設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 4932|回復(fù): 10
打印 上一主題 下一主題

[ADO/DAO] 判斷重復(fù)值

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2013-11-26 10:59:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在排單窗體輸入排單批次值PlanBath時,對記錄進行檢查,判斷同一天同一臺機不能重復(fù)PlanBath值的輸入。下面的代碼放在PlanBath 更新后事件里。發(fā)現(xiàn)會出錯,有時候不能檢查出同一天同一臺機已經(jīng)輸入同樣的PlanBath值,沒有反應(yīng)。請高手幫忙看看那里的問題?謝謝!

排單順序: PB01 => PB02 => PB03 => PB04   同一天DyelotDate同一臺機MachineName不能重復(fù)PlanBath值的輸入。

Private Sub PlanBath_AfterUpdate()
Dim rs As New ADODB.Recordset
rs.Open "SELECT Tbl_DyeHistory.DyelotDate, Tbl_DyeHistory.MachineName, Tbl_DyeHistory.PlanBath FROM Tbl_DyeHistory WHERE Tbl_DyeHistory.DyelotDate=# " & Me.DyelotDate.Value & " # ", CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do While Not rs.EOF
  If rs.RecordCount > 0 Then
    If Me.MachineName.Value = rs("MachineName") And Me.PlanBath.Value = rs("PlanBath") Then
       MsgBox "系統(tǒng)檢測到當天" & Me.MachineName.Value & " 機臺的這個" & Me.PlanBath.Value & " 已經(jīng)存在," & "請核對后重新輸入新的PlanBath ", vbInformation, "提示重復(fù)"
       Me.PlanBath = Null
       Me.PlanBath.SetFocus
    Exit Sub
  Else
    End If
  End If
rs.MoveNext
Loop
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2013-11-26 16:28:39 | 只看該作者
本帖最后由 smilingkiss 于 2013-11-26 16:32 編輯

在do while語句之前試試加上:rs.movefirst
還有,最好在函數(shù)結(jié)束前關(guān)閉rs



3#
發(fā)表于 2013-11-27 13:29:23 | 只看該作者
dim str as string
str="DyelotDate=#" & Me.DyelotDate.Value & "#"
str=str & " and MachineName='" & Me.MachineName.Value & "'"
str=str & " and PlanBath=" & Me.PlanBath.Value
if Dcount("*","Tbl_DyeHistory",str)>0 then
    MsgBox "系統(tǒng)檢測到當天" & Me.MachineName.Value & " 機臺的這個" & Me.PlanBath.Value & " 已經(jīng)存在," & "請核對后重新輸入新的PlanBath ", vbInformation, "提示重復(fù)"
end if


dim ssql as string
Dim rs As New ADODB.Recordset
ssql="SELECT * FROM Tbl_DyeHistory WHERE "
ssql=ssql & "DyelotDate=#" & Me.DyelotDate.Value & "#"
ssql=ssql & " and MachineName='" & Me.MachineName.Value & "'"
ssql=ssql & " and PlanBath=" & Me.PlanBath.Value
rs.Open ssql,CurrentProject.Connection, adOpenStatic, adLockReadOnly
If rs.RecordCount > 0 Then
    MsgBox "系統(tǒng)檢測到當天" & Me.MachineName.Value & " 機臺的這個" & Me.PlanBath.Value & " 已經(jīng)存在," & "請核對后重新輸入新的PlanBath ", vbInformation, "提示重復(fù)"
end if
rs.close
set rs=nothing
4#
 樓主| 發(fā)表于 2013-11-28 13:33:11 | 只看該作者
先謝謝 smilingkiss 和 todaynew 。我改用你們的代碼測試發(fā)現(xiàn)也不行。同一天同一機臺已經(jīng)輸入這個PlanBath值了,第一次輸入PlanBath值可以判斷出來重復(fù),再次重復(fù)輸入后不會判斷,沒反應(yīng)。請大家再幫忙看看。圖片如下:

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
5#
發(fā)表于 2013-11-28 13:55:17 | 只看該作者
建議在更新前判斷
6#
 樓主| 發(fā)表于 2013-11-28 14:11:29 | 只看該作者
也先謝謝 Henry D. Sy。剛剛我把上面三段代碼分別放在更新前事件里測試,結(jié)果也不行。問題同樣。請大家再幫忙看看。謝謝!{:soso_e100:}
7#
發(fā)表于 2013-11-28 19:34:59 | 只看該作者
本帖最后由 smilingkiss 于 2013-11-28 20:04 編輯
huanghyd 發(fā)表于 2013-11-28 13:33
先謝謝 smilingkiss 和 todaynew 。我改用你們的代碼測試發(fā)現(xiàn)也不行。同一天同一機臺已經(jīng)輸入這個PlanBath ...

剛才重新看過代碼,是更新后的,應(yīng)該是沒問題的呀本人水平有限,還是等等高手解答
8#
發(fā)表于 2013-11-28 19:36:37 | 只看該作者
或者做個相似的例子上傳上來看看
9#
發(fā)表于 2013-11-29 11:01:07 | 只看該作者
本帖最后由 todaynew 于 2013-11-29 11:13 編輯

1、寫一個自定義函數(shù)
Function btnEnabled(ByVal DyelotDate_Ctrl As Control, ByVal MachineName_Ctrl As Control, ByVal PlanBath_Ctrl As Control) As Boolean
    Dim ssql As String
    Dim rs As New ADODB.Recordset
    Dim b As Boolean
    b = IsDate(DyelotDate_Ctrl.Value)  '數(shù)據(jù)為日期類型
    b = b And IsNull(MachineName_Ctrl.Value) = False '數(shù)據(jù)不為null
    b = b And IsNull(PlanBath_Ctrl.Value) = False  '數(shù)據(jù)不為null
    If b = True Then
        ssql = "SELECT * FROM Tbl_DyeHistory WHERE "
        ssql = ssql & "DyelotDate=#" & DyelotDate_Ctrl.Value & "#"
        ssql = ssql & " and MachineName='" & MachineName_Ctrl.Value & "'"
        ssql = ssql & " and PlanBath=" & PlanBath_Ctrl.Value
        rs.Open ssql, CurrentProject.Connection, adOpenStatic, adLockReadOnly

        b =b and rs.RecordCount = 0 '不存在記錄

        rs.Close
    End If
    Set rs = Nothing

    btnEnabled = b
End Function

2、假設(shè)有一個用于新增的按鈕名曰:btnInsert,在控件DyelotDate、MachineName和PlanBath的更新后事件中均如下代碼:
        '調(diào)用自定義函數(shù)
        me.btnInsert.Enabled=btnEnabled(me.DyelotDate,me.MachineName,me.PlanBath)

10#
發(fā)表于 2013-11-29 19:36:06 | 只看該作者
本帖最后由 smilingkiss 于 2013-11-29 19:45 編輯
todaynew 發(fā)表于 2013-11-29 11:01
1、寫一個自定義函數(shù)
Function btnEnabled(ByVal DyelotDate_Ctrl As Control, ByVal MachineName_Ctrl As ...

明白了!!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:21 , Processed in 0.158907 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表