访问记录集产生NAME?

时间:2013-02-19 15:57:13

标签: sql ms-access access-vba adodb recordset

我有一个通过ADODB连接到SQL数据库的访问数据库。访问表视图的记录集是通过以下方法中的recordset属性设置的。从Form_Load函数调用此方法可以查看它的表单。可以通过主窗体上的选项卡访问该表单。

不幸的是,记录集似乎没有在计算机之间正确更新。在一台计算机上(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

1 个答案:

答案 0 :(得分:2)

当表单用作子表单时,您不能参考:

 Set Form_frmManagetblEmployees.Recordset = rs

但是,我将同时使用表单和子表单,所以:

 Set Me.Recordset = rs