2009-12-02 88 views
0

所以我有一個表單,我希望用戶用來更新多個表格。我不希望表格綁定到表格上,因爲我寧願用VBA來做這件事(我想,我不知道)。將一個表單鏈接到多個表格,並點擊保存數據

因此,這裏是一個小桌子例子

用戶表

UserID 
First 
Middle 
Last 
Division 
Title 

EquipTable

EquipID 
AssignedLaptop 
Model 
Barcode 

SoftTable

SoftID 
SoftwareName 
License# 
Custom (running sum to calculate how many licenses are left....another question) 

ExchangeTable

UserID 
SoftID 
EquipID 

所以這就是我如何設置表格。所有這些文本/ cmb框都存在於一張桌子上,我希望能夠通過點擊按鈕將這些數據從這種形式保存到所有相關表格中。

因此,誰能幫助我的以下內容:

如果我有一個新建按鈕點擊後,此綁定表單填寫,怎能我告訴隱藏的文本框(即最好是包含「「的ID號),爲每個表填充新的ID號(自動編號),以便我可以將更新SQL語句分配給SAVE按鈕單擊,在VB中保存數據?

我可以設置它,讓我只是「交換表」(不知道爲什麼我給它命名)填充其他表的ID號,而不是反之亦然?

我要對這個錯誤的方式

編輯:

我只是想給你一個例子,看看有什麼我試圖做的是可能有多個表(最終多重鍵)在一個表單上,如果是這樣,它與用一個表單/表格做不同:我使用非綁定方法很多,因爲我必須構建表單,並且需要不斷地將參數從一個表單傳遞到下一個表單VBA。我認爲自己編寫代碼會更快嗎?所以對於這個概念,我總是在窗體上有一個隱藏的文本框,它通常有相對錶的ID號。所以點擊保存只需要一個簡單的SQL = * WHERE Tbl_ID = frmID有點想法。

我想知道的是這些問題嗎?

當你運行一個INSERT時,ID號碼是否需要出現在STATEMENT中,還是隻能在你執行時爲你分配下一個相關的ID號碼?

如果不是 考慮上面的方法,我如何確定這個數字(ID我需要使用)我自己,與代碼?

另一個問題?如何通過綁定表單上的記錄函數來打敗鼠標滾輪滾動?

+1

爲什麼你不希望使用綁定形式?你可能會在1/10的時間內建立這些表單,這將需要你編寫所有的代碼。 – 2009-12-03 01:38:42

+0

我不認爲這是一個很好的問題。所要求的與Access的一切是對立的。如果這些表具有幾乎相同的結構(在這一點上,您可能會考慮是否存在模式設計錯誤,並且來自這些近似​​表的數據應該全部位於同一個表中)。你所描述的看起來像你應該使用綁定父窗體與一些組合框和子窗體。但是,你沒有給出足夠的解釋,說明你想要做出正確的答案。 – 2009-12-03 05:07:31

+0

在Access中,綁定的EDITING表單從未如此簡單,除非您要求對保存的過度控制。我使用大量未綁定的表單來開始一個新記錄,僅收集必填字段,插入殘餘記錄,然後在綁定的完整數據編輯表單中爲用戶打開它。也許這種方法會有所幫助。但是你不解釋數據表之間的關係(這不是自明性的),所以很難說如何去做。但是如果你打算使用Access,你確​​實需要學習使用綁定表單。 – 2009-12-04 04:41:33

回答

2

我明白你在說什麼,措辭在這件事上很奇怪,但我確實看到你在這裏幹什麼。

這是你擁有的一切:

  • 您有不與任何表
  • 這種結合的形式,是不以任何方式與任何表將被你設計通過添加綁定表單一些文本框以及組合框和按鈕
  • 在這些文本框中,您有一些文本框將存儲該行的ID(鍵值)。所以,當你做一個保存ID號重新設置爲文本框
  • 一旦ID號設置爲這個隱藏字段,那麼你可以發出更新需要此ID號

是否所有表這聽起來正確嗎?如果是這樣,那很簡單。所有你需要做的是,一旦你點擊「創建按鈕」執行插入,東西這樣的效果:

' Command to Insert Records. 
     Dim cmdInsert As New OleDbCommand() 
     cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)" 
     cmdInsert.Connection = cnJetDB 
     cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description")) 
     oleDa.InsertCommand = cmdInsert 

然後您發出其他命令來獲取IDENTITY回來,即您的ID:

' Create another command to get IDENTITY value. 
    cmdGetIdentity = New OleDbCommand() 
    cmdGetIdentity.CommandText = "SELECT @@IDENTITY" 
    cmdGetIdentity.Connection = cnJetDB 

您可以隨時使用SELECT @@ IDENTITY

因此,在您的代碼背後,將文本框設置爲SELECT @@ IDENTITY的值。 5年來我還沒有完成訪問,但我記得做了這樣的事情。一旦你有了這個身份,你就把它放在隱藏的文本框中。這將幫助您執行使用此標識的UPDATES。

這是一個良好的開端:http://support.microsoft.com/kb/815629 這裏是另一個偉大的文章,可以幫助你:http://support.microsoft.com/kb/815629

相關問題