Access Recordset产生NAME?
问题描述:
我有一个访问数据库,通过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
答
当窗体作为子窗体,你不能引用:
Set Form_frmManagetblEmployees.Recordset = rs
不过,我会为这两个形式和窗体工作,所以:
Set Me.Recordset = rs
+0
稍作调整以考虑将Me.Subform传递给外部方法,并且此工作完美无缺。 – steventnorris 2013-02-19 20:51:52
@ Remou这是我刚刚维护的遗留代码。一旦用户将他们的计算机更新到Access 2010,就会出现这个问题。我可以做一个链接表,但如果能够快速修复先前存在的代码,我想采用这种方式。 – steventnorris 2013-02-19 16:31:57
@Remou我试图使用传递查询并将其设置为记录源,现在它似乎加载在另一台机器上,但不是第一台。 – steventnorris 2013-02-19 19:29:09
@Remou在每种情况下都是相同的字段和列。唯一不匹配的是我能看到的是访问表在顶部读取LoggedDateTime,在SQL DB中读取LoggedDate。但是,我似乎无法找到更改该列标题的位置,以查看是否存在问题。 – steventnorris 2013-02-19 19:32:23