簡體   English   中英

MS Access將計算字段插入表字段

[英]MS Access Insert Calculated Field to Table Field

我正在嘗試獲取一個表單控件,該控件正在執行以下操作作為控件源,以將其添加到關聯表中的字段中。

=[Company] & " " & IIf([Cable]="Fiber","FO Cable","CC Cable") & " " & [CableStartPoint] & "-" & [CableEndPoint]

輸入相關字段后,上面的控件會在表單的控件中顯示以下內容-> Company FO Cable Start-End

我試過在更新后和其他...屬性中使用該表達式。 這給我留下了空白。

我的下一個選擇是使用VBA,我嘗試使用與此問題類似的VBA( 訪問表單計算字段 ),但是我的VBA技能似乎減少了一些,我不確定如何繼續滿足我的需求。 .. :(

我的主要目標是不必手動輸入信息以防止輸入錯誤並輸入已經存儲在數據庫中的冗余信息,例如公司,起點和終點。

如果可以使用SQL完成此操作,那么我也對該解決方案感興趣。 盡管我不確定需要在哪里更新記錄(After,Before或僅使用Code builder),但這就是我需要的SQL。

UPDATE tblCableDetails
SET CompletedLabel=Form!CableDetails!Label.Value
WHERE CableDetailsID=Form!CableDetailsID.Value

我想將它們存儲在數據庫中而在需要時運行表達式的原因是,我想在另一個表中使用該值作為查找另一種形式的查詢,以跟蹤有關電纜的詳細信息。

謝謝大家的時間!

如果所有字段都在同一表中,則訪問表具有可在表的“設計”視圖中訪問的“計算”數據類型,這將很容易地處理此數據。 這是您最簡單的路線; 只需在計算字段中使用您的表達式,如下圖所示。 請注意,計算字段還有其他潛在的局限性,但是我對此不必太擔心。 計算字段的名稱為CompletedLabel,Access會根據表達式中其他字段的當前值來保持其值。

在此處輸入圖片說明

如果字段不在同一個表中,並且表單已綁定並且Access正在處理Saves(這意味着表單具有RecordSource屬性,並且當用戶更改值時,您可以通過Access處理記錄的保存),它們將導航到新的記錄,關閉表單等),您可以添加一個VBA BeforeUpdate事件,該事件在Access自動保存字段之前標記該列。 只需將CompletedLabel字段添加到表單中即可(可以將其隱藏),然后創建一個更新前事件:

Private Sub Form_BeforeUpdate(Cancel As Integer)
   Me!CompletedLabel = [Company] & " " & IIf([Cable]="Fiber","FO Cable","CC Cable")    & " " & [CableStartPoint] & "-" & [CableEndPoint]
End Sub

在某些情況下,您甚至不需要表單上的CompletedLabel文本框,但它必須在表單所基於的記錄源(查詢或表)中。 它也必須是可編輯的(可能已經是這種情況)。

您可以按照建議使用SQL,也可以在更新后事件中進行。

UPDATE 
tblCableDetails
SET 
CompletedLabel=[Company] & " " & IIf([Cable]="Fiber","FO Cable","CC Cable") & " " & [CableStartPoint] & "-" & [CableEndPoint]
WHERE 
CableDetailsID=Form!CableDetailsID.Value

或在窗體打開或關閉時使用外部查詢,例如:

UPDATE 
     tblCableDetails
SET 
     CompletedLabel=[Company] & " " & IIf([Cable]="Fiber","FO Cable","CC Cable")    & " " & [CableStartPoint] & "-" & [CableEndPoint]
WHERE 
     CompletedLabel = null Or Nz(CompletedLabel,"") = ""

您還可以創建一個包含表達式的查詢,並在需要查看計算值的位置使用它。

很多可能性。 祝你好運,Tag!

這不能通過執行calc的事件屬性中的表達式來完成。

要保存計算的數據,需要宏或VBA代碼,我更喜歡VBA。

此表單是否綁定到您要將數據保存到的表? 如果是這樣,那么適當的方法就是:

Me!fieldname = Me.textboxname

正如您所發現的,真正的竅門是找出正確的事件以將該代碼放入其中。 在首選事件屬性中選擇[事件過程],然后單擊省略號(...)以轉到VBA過程並鍵入所需的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM