簡體   English   中英

ms訪問:空子表單查詢導致空父控件引用

[英]ms access: Empty subform query causes empty parent control reference

問題

我在主表單 C 的表格布局中有兩個連續的子表單 A 和 B。 第一個有一些化學品的名稱,第二個有這些化學品的相應信息。 我在 C 上有一個字段 D,它采用當前記錄的 A 的主鍵 [stoff_id] 的值。 B 鏈接到 D,因此它顯示當前所選化學品的所有相應記錄。 這里是數據庫的快速概覽:

數據庫關系

A [stoffe_abfrage 子形式] 的查詢:

 SELECT chemikalien_tabelle.stoff_id, chemikalien_tabelle.bezeichnung, chemikalien_tabelle.einsatzgebiet, kategorie_tabelle.kategorie FROM kategorie_tabelle INNER JOIN chemikalien_tabelle ON kategorie_tabelle.[kategorie_id] = chemikalien_tabelle.[kategorie_id];

B [tmb_abfrage 子形式] 的查詢:

 SELECT tmb_tabelle.version, tmb_tabelle.datum_aktualisiert, tmb_tabelle.datum_upload, sprachen_tabelle.bezeichnung, tmb_link.stoff_id, tmb_link.tmb_id, tmb_tabelle.datei.FileType, tmb_tabelle.datei FROM (sprachen_tabelle INNER JOIN tmb_tabelle ON sprachen_tabelle. [sprache_id] = tmb_tabelle.[sprache_id]) INNER JOIN tmb_link ON tmb_tabelle.[tmb_id] = tmb_link.[tmb_id];

C 上的控件 D [MainLinkStoff] 的值:

 =[stoffe_abfrage subform].[Formular] [stoff_id]

(B 從 B 上的 [stoff_id] 鏈接到 D)

我想在 B 上的按鈕事件中使用 A 上的主鍵值,所以我需要一種方法來引用它。 不幸的是,僅當 B 不為空時,從 B 引用 A 上的主鍵 (stoff_id) 才有效。 如果 B 上沒有記錄,則從 B 對 A 的 stoff_id 的引用變為空,盡管 A 上的控件的值本身是非空的。


我試過的:

  • 我嘗試從 A 獲取 [stoff_id] 並且我也嘗試從 D 獲取值,但兩者都導致了相同的問題。 當 B 當前沒有記錄時,由於值為空,我收到運行時錯誤。
  • 我很好奇為什么如果直接從 D 獲取值會出現這種情況,因為該字段有一個值並且永遠不會為空。 所以我在 B 上創建了一個虛擬文本框 [dummyB],我的按鈕位於 header 部分,並將值設置為等於 D。

對於第二個測試,我嘗試了 2 種不同的方法:

  1. 通過父級從 C 獲取 D

     =[Me].[Parent].[MainLinkStoff]
  2. 從 forms 手動獲取 D 值

    =Formulare.[HUB] [NavigationSubform] Formular [MainLinkStoff]

在這兩種方法中,如果化學物質在 B 中已經有記錄,則 dummy 和 D 都正確顯示主鍵的值並且是相同的。 如果化學品在 B 中沒有當前記錄,則父表單上的 D 顯示正確,但虛擬對象也突然為空。 為什么是這樣? 這里有一些我的意思的圖像。 D 在表格 C 的頂部中間,在右側子表格 B 上與它相鄰的假人。A 在左側,B 在右側。 (隱形邊框)

現有記錄

沒有現有記錄


所以,我發現了這個問題。 我正在使用兩台不同的計算機進行該項目。 一個使用德語版本的 Access,另一個使用英語版本。 在這些版本中由向導和內部工具創建的 Object 參考使用不同的公式([Forms]=[Formulare] 等)。 最終發生的事情是 SQL 查詢、標准等中的一些 object 引用是德文的,對象本身有進一步的英文引用,而這些引用又引用了其他德文的引用。 這在大多數情況下都有效,但通常情況下,尤其是在邊緣情況下,它會導致 Access 完全弄亂了引用。 例如,在查詢或字段值返回空的情況下。 我不完全確定 Access 如何管理不同語言版本的引用轉換,但在混合它們時似乎存在問題。 解決方案是選擇一種語言版本作為參考,並在整個項目中堅持該表述。 我在任一版本的訪問中都進行了測試,無論是德語還是英語都可以正常工作。 然而,將它們混合在同一個項目中會產生問題。

暫無
暫無

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

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