外部連接的 VBA 代碼已由我們的 IT 部門提供給我。不是我自己寫的。我只是做了一些調整以使其適用于我的資料庫。我不是專家。該函式Clear_Analysis只是從 tabel 中洗掉所有記錄tbl_Analysis。該功能Analysis_Check確實適用于我的所有其他功能。我想檢查一個表是否包含任何記錄。
Function Analysis_Check()
If DCount("*", "tbl_Analysis") = 0 Then
MsgBox ("No Records!")
End If
If DCount("*", "tbl_Analysis") <> 0 Then
MsgBox ("Success!")
End If
End Function
但是在連接到外部 SQL 資料庫后,此功能不再起作用。
我如何在同一功能中完成這項作業?
Function Analysis_LIMS()
Dim objRec
Dim objConn
Dim cmdString
Dim insertString
Call Clear_Analysis
Set objRec = CreateObject("ADODB.Recordset")
Set objConn = CreateObject("ADODB.Connection")
objConn.ConnectionString = "Provider=.....; "
objConn.Open
Set localDbConn = CreateObject("ADODB.Connection")
localDbConn.ConnectionString = "...;Persist Security Info=False;"
localDbConn.Open
cmdString = "SELECT DISTINCT t.rapportnaam, t.norm FROM taken t"
Set objRec = objConn.Execute(cmdString)
Do While Not objRec.EOF
insertString = "INSERT INTO tbl_Analysis ([Analysis], [Analysis_Norm]) VALUES ('" & objRec("rapportnaam") & "', '" & objRec("norm") & "')"
localDbConn.Execute (insertString)
objRec.MoveNext
Loop
Call Analysis_Check
localDbConn.Close
我想在函式Analysis_Check末尾添加呼叫函式Analysis_LIMS
我還嘗試將 Dcount 作為一個單獨的函式并在函式末尾呼叫此函式,Analysis_LIMS
我可以確認 table 中有明確的記錄tbl_Analysis。但是對于這兩種方法,Dcount 函式都給出 0 作為答案。不是這種情況。
如果我在呼叫 function 的同一表單上創建一個按鈕Analysis_Check,則 functionAnalysis_Check確實有效。但在那之后,如果我Analysis_Check通過函式呼叫函式Analysis_LIMS,結果是我得到彈出訊息“無記錄”,我單擊“確定”,然后出現第二個彈出訊息“成功”。如果然后我再次做同樣的事情,但不使用那個臨時按鈕,它只會給出“無記錄”的答案,但肯定有記錄,tbl_Analysis
我不知道我做錯了什么,也不知道為什么 Access 會這樣。我想這與記錄集有關嗎?也許將記錄集設定為 CurrentDb?任何幫助都會受到幫助。
uj5u.com熱心網友回復:
可能是時間問題,因為查詢呼叫將在另一個背景關系中運行。
嘗試使用DoEvents:
Do While Not objRec.EOF
insertString = "INSERT INTO tbl_Analysis ([Analysis], [Analysis_Norm]) VALUES ('" & objRec("rapportnaam") & "', '" & objRec("norm") & "')"
localDbConn.Execute (insertString)
objRec.MoveNext
Loop
DoEvents
或使用 DAO:
Dim Records As DAO.Recordset
Set Records = CurrentDb.OpenRecordset("Select * From tbl_Analysis", dbOpenDynaset, dbAppendOnly)
Do While Not objRec.EOF
Records.AddNew
Records!Analysis.Value = objRec("rapportnaam").Value
Records!Analysis_Norm.Value = objRec("norm").Value
Records.Update
objRec.MoveNext
Loop
Records.Close
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374990.html
