2016-10-04 81 views
0

對不起,夥計們,你好。不是程序員,試圖混淆東西。ms-access試圖把變量放入文本框

我讓我的搜索記錄工作。

Dim Date1 As String 
Dim Shift1 As String 
Date1 = Text6.Value 
Shift1 = List12.Column(1) 
DoCmd.OpenForm "Data", , , "Data![ShiftDate] = #" & Date1 & _ 
"# AND Data![Shift] ='" & Shift1 & "'" 

新的複雜功能現在是當它打開一個新的記錄,因爲沒有滿足標準。當找不到記錄時,我希望它強制用於搜索shiftdate和shift字段的兩個變量。通過這種方式,我可以鎖定這些字段,並限制我的用戶在同一日期和班次上進行十億次。它要麼始終將它們引導至當前創建的一個,要麼創建一個新的,如果它不可用的話。

我試圖

Data![shiftdate].Value = Date1 

讓每一個它找到了記錄或創建一個新的時間,它匹配的日期吧。可能不是最高效的,但它應該做我需要的。但是,我得到一個424錯誤代碼以及其他問題。任何人都知道爲什麼它不會接受我在創建/創建的記錄中對該字段的輸入?

+0

可以在的OpenForm的OpenArgs參數值傳遞。當窗體打開並加載時,您可以檢查Me.NewRecord是否爲true,如果是,則解析OpenArgs值並將它們分配給您的兩個鎖定文本框 – dbmitch

回答

0

您的424錯誤是因爲使用=需要=兩側的對象,而Data![shiftdate].Value不是對象。我想你需要的是:

Me.shiftdate = Date1 
1

簡單的測試+檢查記錄存在,然後打開窗體的記錄,或者乾脆打開添加模式的形式。

這應該做的伎倆:

Dim strWhere  As String 
Dim Date1   As String 
Dim Shift1  As String 

Date1 = Test6.Value 
Shift1 = List12.Column(1) 

strWhere = "Data![ShiftDate] = #" & Date1 & _ 
      "# AND Data![Shift] ='" & Shift1 & "'" 

If DCount("*", "tblShifts", strWhere) > 0 Then 
    ' record exist, simply open the form 
    DoCmd.OpenForm "Data", , , strWhere 

Else 
    ' record does NOT exist, open form in add mode 
    DoCmd.OpenForm "Data", , , , acFormAdd 
    ' 
    ' setup the two default values 
    Forms!Data!ShiftDate = Date1 
    Forms!Data!Shift1 = Shift1 

End If