access-vba
2016-11-07 146 views 0 likes 
0

我從另一篇文章中刪除了它,因爲它與我需要的類似。而不是使用me.ID等,我需要引用另一個表中的字段,特別是名爲Brief Sheet的表中的[Formdate]。在添加記錄之前查找重複記錄

我嘗試了許多變化,如表「簡表」 .Formdate但沒有運氣

什麼是正確的語法?

rst.FindFirst "[ID] <> " & Me.ID & _ 
" AND [TitleText] = '" & Me.TitleText & _ 
"' AND [UnitCode] = " & Me.UnitCode & _ 
" AND [AcademicYear] = " & Me.AcademicYear & _ 
" AND [Titleofchapterjournalarticle] = '" & Me.Titleofchapterjournalarticle &  "'" 
+0

考慮使用DLookup https://support.office.com/en-ie/article/DLookup-Function-8896cb03-e31f-45d1-86db-bed10dca5937 – Fionnuala

+0

你的領域必須是在您的記錄 - 什麼是您記錄集查詢看起來像現在?如果它在那裏,您只需使用與其他字段相同的[Formdate]。 – dbmitch

回答

1

使用Dlookup。在發佈的代碼片段中,編碼器已經實例化了一個記錄集,並使用記錄集方法在其中查找記錄。你說你想要做的事實際上是一個簡單的。

下面是一個測試過程來說明從您的表中獲取您的日期值。

你沒有說明你會用什麼標準從表格「Brief Sheet」中選擇合適的FormDate,所以我包含了「ID = 3」,它將選擇ID = 3的FormDate記錄。根據需要進行調整。另外,如果您的表名稱確實是「Brief Sheet」,並且您可以重命名它,我強烈建議爲您的表建立一些命名約定規則,首先不要有任何空格。即使Brief_Sheet也會讓你的生活更輕鬆。

Public Sub Test1() 

    'dimension a variable to hold the date value  
    Dim datFormDate As Date 

    'fill the variable with the value you need to reference 
    datFormDate = DLookup("FormDate", "Brief Sheet", "ID = 3") 

    'Print the value to the "immediate" pane (just for testing) 
    Debug.Print datFormDate 

    'If you're running this code from within your form module, you can assign 
    'the value in your variable to a field in your table as such: 
me.DateFieldtxtbx = datFormDate 

    End Sub 
+0

請注意,如果找不到值,dlookup將返回null,所以'Dim datFormDate As Date'將會遇到問題。 – Fionnuala

+0

好點,Fionnuala。人們可以將FormDate標註爲變體「Dim varFormDate as variant」,或者將Dlookup語句包裝在Nz()函數中。 –

相關問題