【发布时间】:2013-02-04 09:13:36
【问题描述】:
我有一个通过 ADODB 连接到 SQL 数据库的访问数据库。访问表视图的记录集是通过以下方法中的记录集属性设置的。这个方法是从 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
【问题讨论】:
-
@Remou 这是我正在维护的遗留代码。一旦用户将他们的计算机更新到 Access 2010,问题就出现了。我可以做一个链接表,但如果对预先存在的代码有一个快速修复,我想采取这条路线。
-
@Remou 我尝试使用直通查询并将其设置为记录源,现在它似乎在另一台机器上加载,但不是在第一台机器上。
-
@Remou 在每种情况下都是相同的字段和列。我能看到的唯一不匹配的是访问表在顶部读取 LoggedDateTime,SQL DB 读取 LoggedDate。但是,我似乎找不到在哪里更改该列标题以查看是否是问题所在。
-
@Remou 我将一个传递查询用作显示表格的表单的记录集。
-
该列的表单标题为“LoggedDateTime”,但 SQL DB 中的实际名称为“LoggedDate”
标签: sql ms-access vba adodb recordset