2013-02-19 29 views
2

我有一個訪問數據庫,通過ADODB連接到SQL數據庫。訪問表視圖的記錄集通過下面方法中的記錄集屬性進行設置。該方法從Form_Load函數調用它可查看的表單。表單通過主表單上的選項卡訪問。Access Recordset產生NAME?

不幸的是,記錄集在機器之間似乎沒有正確更新。在一臺機器上(Access 2010)它加載正常。在第二個(Access 2010)中,它只加載第一行作爲Name ?.有時我可以在第二臺機器上加載,如果我打開它自己的表單,然後打開選項卡。

任何幫助,將不勝感激。提前致謝!

Function LoadTblEmployeesADOtoForm() 

Dim sqlStr As String 

Dim cn As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    Dim p As ADODB.Property 
    Const ConnStr = "PROVIDER=SQLOLEDB;Server=SERVER;Database=DB;User ID=ID;Password=PWD;" 
    Set cn = New ADODB.Connection 
    cn.Open ConnStr 

    Set rs = New ADODB.Recordset 
    With rs 
     .CursorLocation = adUseClient 
     .CursorType = adOpenKeyset 
     .LockType = adLockPessimistic 

     'SELECT 
     sqlStr = "SELECT * FROM tblEmployees ORDER BY NetworkID" 

     Debug.Print sqlStr 

     .Source = sqlStr 

     Set .ActiveConnection = cn 
     .Properties("Preserve on Abort") = True 
     .Properties("Preserve on Commit") = True 
    End With 
    'cn.BeginTrans 
    rs.Open 

    Debug.Print rs.RecordCount 
    Dim temp As Integer 

    Set Form_frmManagetblEmployees.Recordset = rs 


    cn.Close 


    Set rs = Nothing 


End Function 
+0

@ Remou這是我剛剛維護的遺留代碼。一旦用戶將他們的計算機更新到Access 2010,就會出現這個問題。我可以做一個鏈接表,但如果能夠快速修復先前存在的代碼,我想採用這種方式。 – steventnorris 2013-02-19 16:31:57

+0

@Remou我試圖使用傳遞查詢並將其設置爲記錄源,現在它似乎加載在另一臺機器上,但不是第一臺。 – steventnorris 2013-02-19 19:29:09

+0

@Remou在每種情況下都是相同的字段和列。唯一不匹配的是我能看到的是訪問表在頂部讀取LoggedDateTime,在SQL DB中讀取LoggedDate。但是,我似乎無法找到更改該列標題的位置,以查看是否存在問題。 – steventnorris 2013-02-19 19:32:23

回答

2

當窗體作爲子窗體,你不能引用:

Set Form_frmManagetblEmployees.Recordset = rs 

不過,我會爲這兩個形式和窗體工作,所以:

Set Me.Recordset = rs 
+0

稍作調整以考慮將Me.Subform傳遞給外部方法,並且此工作完美無缺。 – steventnorris 2013-02-19 20:51:52

相關問題