我正在使用与Sharepoint Server链接的MS Access数据库。 MS Access Forms作为FrontEnd和Sharepoint列为BackEnd。
今天我可以使用访问表单查看列表中的所有信息,没有问题。
我正在尝试使用SQL命令在列表中插入新的寄存器:“INSERT INTO ...”
如果有另一种可能性在列表中插入记录,可能会有用
当我调用DoCmd.RunSQL(txtsql)时,我收到运行时错误3999,说我已从服务器断开连接。
我尝试使用记录集,但没有成功。 我需要多次运行这个SQL,在循环中更改字符串“txtSql”。像这样:
Dim MaxSonda As Integer 'Get the max ID from the list MaxSonda = Nz(DMax("IdSonda", "Sondas", "((Sondas.[Tipo Sonda])<>1 Or (Sondas.[Tipo Sonda]) Is Null)"), 0) MsgBox "MaxSonda = " & MaxSonda 'Run the code for each "sonda" Do While MaxSonda > 1 If Nz(DLookup("[Tipo Sonda]", "Sondas", "Sondas!IdSonda = " & MaxSonda), 1) <> 1 Then DoCmd.OpenTable "Resumo", acViewNormal, acAdd DoCmd.GoToRecord acDataTable, "Resumo", acNewRec txtSql = "INSERT INTO Resumo ( Data, Sonda, Status ) SELECT #" & LastData + 1 & "#, " & MaxSonda & ", 0;" MsgBox txtSql DoCmd.RunSQL txtSql DoCmd.Close acTable, "Resumo", acSaveYes End If MaxSonda = MaxSonda - 1 Loop
P.S。:MsgBox仅用于检查步骤
感谢您的帮助
答案 0 :(得分:1)
您无需打开列表/表格即可插入记录。我不知道为什么你使用循环来插入行,但如果你打算在循环中尝试这个SQL_COMMAND:
If Nz(DLookup("[Tipo Sonda]", "Sondas", "[IdSonda] = " & MaxSonda), 1) <> 1 Then
txtSql = "INSERT INTO Resumo ( Data, Sonda, Status ) VALUES ('" & LastData + 1 & "'," & MaxSonda & ",0);"
MsgBox txtSql
DoCmd.RunSQL txtSql
End If
另请注意#tags用于在Access中插入日期,如果您打算保存日期,请将其保存为国际格式,如
vba.Format$([date_field],"yyyy-mm-dd hh:mm:ss")
这样你就可以在不使用#tags的情况下保存为字符串。
答案 1 :(得分:0)
也许这可以帮助某人。我确实有同样的问题,我解决了从访问中删除sharepoint列表并再次添加它。花几秒钟做一个SQL查询,但它确实有效。
迎接