如果SQL语句没有找到任何';匹配项';在桌子上?
使用MS Access,我尝试运行SQL语句,但在表还没有记录的情况下,我无法使其工作。我会感谢你的帮助!谢谢如果SQL语句没有找到任何';匹配项';在桌子上?,sql,ms-access,vbscript,Sql,Ms Access,Vbscript,使用MS Access,我尝试运行SQL语句,但在表还没有记录的情况下,我无法使其工作。我会感谢你的帮助!谢谢 Public Function GetReferenceID(RefCode As String) As Integer Dim RefID As Integer Dim rec As Recordset Call connectDB sSQL = "select RefID from Exceptions where RefCode = '" &am
Public Function GetReferenceID(RefCode As String) As Integer
Dim RefID As Integer
Dim rec As Recordset
Call connectDB
sSQL = "select RefID from Exceptions where RefCode = '" & RefCode & "'"
Set rec = CurrentDb.OpenRecordset(sSQL)
If (Not rec.EOF And Not rec.BOF) Then
RefID = rec.RecordCount + 1
Else
RefID = 1
End If
GetReferenceID = RefID
End Function
Private Sub RefCode_Change()
Dim tr As Transactions, rID As Integer
Set tr = New Transactions
tr.GetReferenceID (RefCode.Value)
end sub
更新!此行有错误(运行时错误3464,“条件表达式中的数据类型不匹配”): …在此代码中:
Private Sub RefCode_Change()
Dim rec As Recordset, RefID As Integer
sSQL = "select RefID from Exceptions where RefCode = '" & RefCode.Value & "'"
Set rec = CurrentDb.OpenRecordset(sSQL)
If (rec.EOF And rec.BOF) Then
RefID = 1
Else
rec.MoveFirst
RefID = rec.RecordCount + 1
End If
End Sub
我想你想这么做
If (rec.EOF And rec.BOF) Then
'empty recordset
RefID = 1
Else
'at least one row
rec.movefirst
RefID = rec.RecordCount + 1
End If
您还可以将所有这些简化为
RefID = Dcount("*","Exceptions","refCode='" & RefCode & "'") +1
我不完全确定问题是什么,但我看到两个潜在问题:
Dim rs as DAO.recordset
或Dim rs as ADOX.recordset
(我认为后者是正确的——我从不使用ADO,所以不必指定它!)。Set rec=CurrentDb.OpenRecordset(sSQL)
返回的数据类型不匹配这一事实强烈地表明您声明了ADO记录集,因为这将导致与CurrentDb.OpenRecordset()返回的DAO记录集不匹配使用参数化SQL避免SQL注入攻击。如果有人向您提供的RefCode为“”;drop table Exceptions;--“?如果有人向您提供的RefCode为“”;drop table Exceptions;”,Access数据库引擎将不会执行drop table。@HansUp:尝试以下操作:使用参数化SQL以避免错误(例如,当RefCode.Value包含单引号时)为了避免Access中的
WHERE
子句SQL注入(例如,如果有人向您提供”或“=”
?@Ali:您似乎假设RefID将是一个完美的序列,即MAX(RefID)=COUNT(*)、MIN(RefID)=1,无差距等。我打赌您在此表上没有约束,以确保您的假设始终正确。但是,与其添加这些约束,我敦促您改为采用不同的方法来生成标识符。@有一天,为了澄清这一点,我没有反对参数。我的观点只是“drop trable…”Access数据库引擎没有风险。Refcode是一个字符串字段。您知道我应该如何解决此问题吗?
RefID = Dcount("*","Exceptions","refCode='" & RefCode & "'") +1