在运行“docmd.openquery sqlchaxun”时会报错,“sqlchaxun”是一条select的查询语句?

milerzhang 2007-09-03 06:12:33
请高手指点,小弟刚用ACCESS。谢谢大家了!
...全文
487 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhh715 2007-09-11
  • 打赏
  • 举报
回复
说了你现在的程序只是打开了一个查询而已
用的到结果要用ADO以记录集的方式

'DoCmd.OpenQuery "sqlchaxun
上面的不变
Dim conn As ADODB.Connection
dim rs as ADODB.Recordset
dim strTemp as string
Set Conn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open sqlchaxun,CurrentCon, adOpenDynamic, adLockOptimistic
if not rs.EOF then

strTemp =rs("表中的字段名称") '这里是取查询的字段值(我这里是文本类型,如果你要取的
'字段类型是数字的话,直接定义变量,然后赋值就可以了
end if
如果不行的话,请调试出sqlchaxun内容,检查是否有误
估计就是你的sqlchaxun内容出现问题了

或者你在窗体中摆一个子窗体(来源设置为你的查询sqlchaxun)
按钮事件执行完后刷新子窗体就可以现实数据了
milerzhang 2007-09-11
  • 打赏
  • 举报
回复
楼上的谢谢了!运行时不会报错了!可还有一个问题:就是运行完,不会显示查询结果?怎么样才可以显示出,查询结果呢?谢谢了!
OracleRoob 2007-09-11
  • 打赏
  • 举报
回复
在动态修改完查询的SQL串后,再运行查询就可以查看结果了,如:


DoCmd.OpenQuery "你的查询名"
hhh715 2007-09-10
  • 打赏
  • 举报
回复
'DoCmd.OpenQuery "sqlchaxun
上面的不变
Dim conn As ADODB.Connection
dim rs as ADODB.Recordset
dim strTemp as string
Set Conn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open sqlchaxun,CurrentCon, adOpenDynamic, adLockOptimistic
if not rs.EOF then

strTemp =rs("表中的字段名称") '这里是取查询的字段值(我这里是文本类型,如果你要取的
'字段类型是数字的话,直接定义变量,然后赋值就可以了
end if
如果不行的话,请调试出sqlchaxun内容,检查是否有误
估计就是你的sqlchaxun内容出现问题了
OracleRoob 2007-09-10
  • 打赏
  • 举报
回复

你的sqlchaxun是一个字符型变量


应该创建一个查询,名称为:sqlchaxun

新建“查询”,保存查询的名为“sqlchaxun”,然后再执行你的代码试试。

OracleRoob 2007-09-09
  • 打赏
  • 举报
回复
你的sqlchaxun是一个字符型变量


应该定义一个查询,名称为:sqlchaxun
milerzhang 2007-09-09
  • 打赏
  • 举报
回复
Private Sub chaxun_Click()
Dim cubdb As Database
Dim zdm1 As String
Dim zdm2 As String
Dim zdm3 As String
Dim zdm4 As String
Dim cs1 As String
Dim cs2 As String
Dim cs3 As String
Dim cs4 As String
Dim kssj As Date
Dim jssj As Date
Dim rs1 As Recordset
Dim sqlchaxun As String
Dim qry As QueryDef
Set qry = CurrentDb.QueryDefs("sqlchaxun")
sqlchaxun = ""
sqlchaxun = "select * from sbb"
zidm1.SetFocus
If zidm1.Text <> "" Then
zdm1 = zidm1.Text
chas1.SetFocus
If chas1.Text <> "" Then
cs1 = chas1.Text
sqlchaxun = sqlchaxun + " where " + zdm1 + " = " + cs1
zidm2.SetFocus
If zidm2.Text <> "" Then
zdm2 = zidm2.Text
chas2.SetFocus
If chas2.Text <> "" Then
cs2 = chas2.Text
sqlchaxun = sqlchaxun + "and " + zdm2 + " = " + cs2
zidm3.SetFocus
If zidm3.Text <> "" Then
zdm3 = zidm3.Text
chas3.SetFocus
If chas3.Text <> "" Then
cs3 = chas3.Text
sqlchaxun = sqlchaxun + "and " + zdm3 + " = " + cs3
zidm4.SetFocus
If zidm4.Text <> "" Then
zdm4 = zidm4.Text
chas4.SetFocus
If chas4.Text <> "" Then
cs4 = chas4.Text
sqlchaxun = sqlchaxun + "and " + zdm3 + " = " + cs3
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
kaissj.SetFocus
If kaissj.Text <> "" Then
kssj = kaissj.Text
jiessj.SetFocus
If jiessj.Text <> "" Then
jssj = jiessj.Text
chas1.SetFocus
If chas1.Text <> "" Then
sqlchaxun = sqlchaxun + "and 购买时间 between " + CStr(kssj) + " and " + CStr(jssj)
Else
sqlchaxun = sqlchaxun + " where 购买时间 between " + CStr(kssj) + " and " + CStr(jssj)
End If
End If
End If
MsgBox sqlchaxun
qry.sql = sqlchaxun
End Sub

程序运行到:Set qry = CurrentDb.QueryDefs("sqlchaxun")时报错:
运行时错误‘3265’:这个集合中找不到此项目。
OracleRoob 2007-09-08
  • 打赏
  • 举报
回复
--参考:

"添加DAO引用

"-->VBA代码窗口

"-->“工具”菜单

"-->引用

"-->选中“Microsoft DAO 3.6 Object Library”

Public Sub Test()

Dim qry As QueryDef

Set qry = CurrentDb.QueryDefs("查询1")

qry.SQL = "select * from 表名 where 年龄>10"
OracleRoob 2007-09-08
  • 打赏
  • 举报
回复
或者动态修改某个查询的SQL串,需要引用DAO。
OracleRoob 2007-09-08
  • 打赏
  • 举报
回复
你的变量sqlchaxun中是select 语句,不能执行DoCmd.RunSQL

用记录集打开。
milerzhang 2007-09-08
  • 打赏
  • 举报
回复
以上就是我的代码,请高手指点。谢谢!
milerzhang 2007-09-08
  • 打赏
  • 举报
回复
Dim cubdb As Database
Dim zdm1 As String
Dim zdm2 As String
Dim zdm3 As String
Dim zdm4 As String
Dim cs1 As String
Dim cs2 As String
Dim cs3 As String
Dim cs4 As String
Dim sqlchaxun As String
Set cubdb = CurrentDb
Dim rs1 As Recordset
'Set rs = YourObject
sqlchaxun = ""
sqlchaxun = "select * from sbb"
zidm1.SetFocus
If zidm1.Text <> "" Then
zdm1 = zidm1.Text
chas1.SetFocus
If chas1.Text <> "" Then
cs1 = chas1.Text
sqlchaxun = sqlchaxun + " where " + zdm1 + " = " + cs1
zidm2.SetFocus
If zidm2.Text <> "" Then
zdm2 = zidm2.Text
chas2.SetFocus
If chas2.Text <> "" Then
cs2 = chas2.Text
sqlchaxun = sqlchaxun + "and" + zdm2 + " = " + cs2
zidm3.SetFocus
If zidm3.Text <> "" Then
zdm3 = zidm3.Text
chas3.SetFocus
If chas3.Text <> "" Then
cs3 = chas3.Text
sqlchaxun = sqlchaxun + "and" + zdm3 + " = " + cs3
zidm4.SetFocus
If zidm4.Text <> "" Then
zdm4 = zidm4.Text
chas4.SetFocus
If chas4.Text <> "" Then
cs4 = chas4.Text
sqlchaxun = sqlchaxun + "and" + zdm3 + " = " + cs3
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
Else
MsgBox "请输入条件。", vbOKOnly, "设备管理系统"
Exit Sub
End If
End If
'zdm1 = zidm1.Text
MsgBox sqlchaxun
'DoCmd.OpenQuery "sqlchaxun"

End Sub
OracleRoob 2007-09-06
  • 打赏
  • 举报
回复
DoCmd.RunSQL 后面的变量中的SQL串,必须是操作性查询,如:insert 、delete、update,不能是select

DoCmd.OpenQuery 后面必须是一个查询名
milerzhang 2007-09-06
  • 打赏
  • 举报
回复
首先,谢谢楼上的!
我用了你的方法,会提示:语法错误,编辑错误。
hhh715 2007-09-06
  • 打赏
  • 举报
回复
你把你完整的代码贴出来
hhh715 2007-09-05
  • 打赏
  • 举报
回复
你可以放在按钮的单击事件中测试
注意要引用ADO
hhh715 2007-09-05
  • 打赏
  • 举报
回复
Dim Conn As ADODB.Connection
dim sqlchaxun as string

Set Conn = CurrentProject.Connection

sqlchaxun = "你的查询语句 "
Conn .Execute sqlchaxun
OracleRoob 2007-09-04
  • 打赏
  • 举报
回复
DoCmd.OpenQuery "sqlchaxun"



这里 sqlchaxun 必须是查询名,而不是你定义的变量名。
milerzhang 2007-09-04
  • 打赏
  • 举报
回复
请高手指点!谢谢了!
milerzhang 2007-09-04
  • 打赏
  • 举报
回复
“sqlchaxun”是string变量,里面复制一条sql查询语句。
加载更多回复(6)

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧