2012-10-18 45 views
1

我使用Access 2007年爲原型application.I有兩臺數據庫testUi.accdb(其中數據綁定或操作的訪問數據表使用VBA代碼

包含了我所有的形式)和testDb.mdb(含我的數據庫)。 現在我想在我的一個子表單中使用數據表。 有人可以幫我解決這些問題嗎?

  1. 我可以手動建立沒有表格的數據表嗎?
  2. 如何使用DAO或ADO通過VBA綁定數據與此數據表代碼
  3. 是否可以使用VBA代碼循環數據表?獲取或設置每行的值?
  4. 如果上述不可行,那麼在Access中使用數據表格類似數據表的替代方式 是什麼?
+0

沒有表格,你想要把這個數據表綁定到什麼地方? –

+0

我想執行查詢/提取記錄集並將其與數據表綁定(如數據庫拆分環境!) – mnhmilu

回答

2

1)數據表格只能綁定到DAO記錄集對象或ADO記錄集對象。您可以通過設置RecordSource隱式地將它們綁定到DAO記錄集對象,或者您可以在代碼中手動執行它,如#2所示。您只能使用代碼綁定到ADO記錄集,然後某些數據表的默認選項(如篩選和排序)將不起作用。

2)我知道這是過度簡化,但......在窗體的Load事件:設置Me.Recordset = RS(RS是你的記錄集對象)

3)你可以不通過數據表中插入行對象循環和像你可以在許多網格控件上的數據。

4)您可以使用Microsoft的ActiveX控件,如網格控件或ListView控件。

您可能會完成此操作的一種方法是使用「製作的ADO記錄集」,然後將窗體綁定到該記錄集。這將使用我在#1和#2中列出的選項。

在任何情況下,Access數據表格不會動態地添加和配置足夠的單元格/列來顯示像許多網格控件一樣的數據。這意味着您需要在表單上擁有足夠的文本框,然後使用代碼將它們綁定到DAO或ADO記錄集中的字段。任何不需要的列都必須使用代碼隱藏。必須使用代碼填寫標籤標題,以便製作正確的列標題。簡而言之,雖然數據表視圖實際上非常強大,但它不是網格控件。

如果你曾經使用過.NET它很可能是相當簡單的(雖然不平凡)來創建一個外接程序或一個DLL,它會給你你在找什麼。唯一的問題是,.NET的DataGridView中不能被綁定到DAO或ADO記錄集,所以你必須編寫代碼來採取DAO或ADO記錄集,並「翻譯」是記錄到ADO.NET數據表。或者,你可以編寫的是讓你的.NET表單通過獲取數據庫和查詢信息並使用它來檢索所需的數據來進行數據訪問。

編輯1
爲迴應您的意見,下面是一些示例代碼。我認爲你需要創建一個明確的記錄集對象,你在下面的評論中沒有這樣做。

Option Compare Database 
Option Explicit 

Private Sub Form_Load() 
    Dim db As DAO.Database 
    Set db = OpenDatabase("E:\Access\Testdb.mdb") 
    Dim rs As DAO.Recordset 
    Set rs = db.OpenRecordset("Select * from tblMarket", dbOpenSnapshot) 
    Set Me.Market1.Form.Recordset = rs 
    Set rs = Nothing 
End Sub 
+0

感謝您的時間!我已經厭倦了選項#2通過設置記錄集,它只顯示3空白行(表格有3行!),而不顯示數據。 **「昏暗DB作爲DAO.DATABASE 集DB =的openDatabase( 「E:\ ACCESS \ Testdb.mdb」)** 設置Me.Market1.Form.Recordset = db.OpenRecordset( 「從tblMarket選擇*」,dbOpenSnapshot )' – mnhmilu

+0

你有沒有把你的文本框綁定到tblMarket的字段? – HK1

+0

是的我有兩個文本框控制源屬性設置爲ID,MarketName.Do我需要設置其他屬性? – mnhmilu