2010-05-05 53 views
0

嘿,我掙扎主鍵複製到另一個領域的訪問。 這是無關緊要的,但澄清了我的比較。複製主鍵到另一場訪問

... WHERE Tunniste=" & [Tarkiste] & "" 

Tunniste =主鍵,自動編號,編號(由Access生成的。)

Tarkiste =這是我要複製它來比較它的領域。

我打開的建議,我已經用的Form_Load try'ed,使用下面的代碼。

Private Sub Form_Load() 

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=('" & Tunniste & "');" 

End Sub 

但是,這將同一個鍵複製到「Tarkiste」字段中的所有條目。

在簡單起見,我想1:1個「Tunniste」到「Tarkiste」,它需要的任何一種方法的副本。

從這個問題開始。 File Picker Replaces All Rows With The Same Choice.

+0

@BashLover:我給Toni +1正確的答案,但我建議你閱讀我的答案,因爲有幾點你可能會覺得有用。 – Unreason 2010-05-05 09:32:38

回答

1

如果兩個字段都在同一個表,你可以這樣做:

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=[Tunniste]" 

而且它確保它運行!

+0

感謝它的工作,這個社區岩石=)我肯定會幫助其他人在我的未知問題的知識領域。 – HoxDef 2010-05-05 09:15:59

0

爲了更好地掌握所發生的事情是

,因爲您的查詢的字符串的形式加載時計算出的單值獲取每一行中更新。 那時變量Tunniste從它綁定的控件(在你的情況下可能是指向同一個表的記錄集中的字段的控件)獲得一個值。

因此,假設Tunniste是1上的Form_Load當前記錄的數據庫最終運行查詢

UPDATE Korut SET [Tarkiste]=('1'); 

其中

UPDATE Korut SET [Tarkiste]=[Tunniste]; 

會做正確的事情。

事情需要注意:

  • 你可以(應該)測試和獨立承建形式事件的SQL命令(尤其是如果查詢參數的不依賴於表單中的值,綁定或取消綁定);在自己的空間中運行SQL發生
  • 使用可視化查詢生成練習你的SQL技能(切換到SQL模式和回明白髮生了什麼)
  • 上的數據如何綁定到窗體
  • 你閱讀起來每次表單加載時更新表中的所有記錄,並且(如果這是一個正常的編輯表單),這當然不是最優的(您至少可以添加WHERE條件來設置[Tarkiste]只在數值不同的情況下),這將會很糟糕
  • 您似乎正在使用不同的數據類型進行相同的字段和無提示轉換;這可能會適得其反

也許解釋你試圖達到什麼會帶來更好的建議。