Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

参数不足,期待是1

增  发表于:2016-04-14 20:27:25  
复制

遇到了"参数不足,期待是1" 的问题

查了很多资料说是SQL出错,但是直接运行查询是正确的.

代码如下:

 

Private Sub Report_Activate()


Dim db  As DAO.Database
Dim rs  As DAO.Recordset
Dim fd  As DAO.Field
Dim bh As String

Set db = CurrentDb()

'以下这句出错,出错时,rs=nothing
Set rs = db.OpenRecordset("EQ_DN_Report") ' 打开查询,如果查询时不指条件的话,就不会出错

'上面一句出错

 

If rs.EOF = True Then
 MsgBox " 记录为空,请填写送货单内容!"
   DoCmd.Close
Else

Me.DNNO = rs.Fields("dnno").Value
Me.CusName = rs.Fields("CusName").Value

End If
End Sub

 

附件如下

点击下载此附件

 

 

 

Top
leoyoung 发表于:2016-04-15 07:45:31
strSQL = "SELECT * FROM Delivery_Note WHERE DNNO = '" & [Forms]![选单号]![aa] & "'"
Set rs = db.OpenRecordset(strSQL)

增 发表于:2016-04-15 11:09:58

谢谢 leoyoung!

但是我不明白,另外一个查询和这个查询一相同的,只是不指定条件,却能正确运行,为什么这个查询却出问题呢? 为什么在VBA里执行SQL却能正确运行? 求指点,大神,谢谢!



何保辛 发表于:2016-04-15 13:40:04

新同学呀,

我们创建了带参数的 查询后,

当你用 openrecordset打开的话,所有参数都没有值的,不管你在查询里写了什么表达式!

dbengine 是获取不到 access 环境里的任何值的,所以只能让你手动提供。


如果,我们是用 vba 打开有参数查询的话,

应该用 ADO方式:

 Private Sub Command0_Click() 
 
    Dim rs As New ADODB.Recordset 
    Dim myPro As String
    myPro = "myQuery '" & Me.Text1 & "'"   '向参数查询传递参数
    rs.CursorLocation = adUseClient
    rs.Open myPro, CurrentProject.Connection  '打开记录集 
    '然后将记录集灌入窗体或报表进行显示  
End Sub
或 DAO方式:

Dim ff As QueryDef
Set ff = CurrentDb.QueryDefs("cscx")
MsgBox ff.Parameters.Count
ff.Parameters("dd") = "1a"
MsgBox ff.Parameters(0).Value
Dim TempSet1 As Recordset
Set TempSet1 = ff.OpenRecordset



增 发表于:2016-04-15 15:13:13
谢谢何保辛 朋友解惑! 谢谢热心的朋友! 真的万分感谢!

总记录:4篇  页次:1/1 9 1 :