Kheilmann 发表于 2006-6-26 18:25:27

VBA 中的 SQL 语句在 Access 中

我可能做错了,但是...
我想我需要帮助来创建一个SQL字符串,它将从一个表中打开一个记录,查找某些字段并将它们应用到我创建的变量中。
我一直收到数据转换错误...
我的代码:
Dim Job as string
Dim Builder as string
Dim Plan as string
Job = MeJobEntry.value '自定义对话框job search with TextBox ' job entry '
SQLstring = " Select * FromWhere。[作业编号]= ' " & Job & " ';"
‘这在我的Cad VBA中有效,我猜访问是不同的?
Set Jobrs = current db . open recordset(sqlstring,Dynaset)
“我在此处得到转换错误....我假设我的Sql字符串是错误的...
我让我的表单运行一个查询,并返回JObEntry文本框中任何JOb#的记录。
Access VBA使用语句...
Docmd.openquery stDocName,AcNormal,AcReadOnly
我可以从这里访问其他字段并将它们应用到我的变量吗??
我是access的新手,所以我可能会偏离正道....
哦,我希望这是这个问题的正确区域...
**** Hidden Message *****

MickD 发表于 2006-6-26 21:48:50

除了错字(工作和工作?)也许您在db中的数据类型并不都是“文本”类型??
此外,只是观察,在不同的api中创建sql查询时,列名中有空格可能是危险的。
只是一些尝试'直到一些真正知道那里在做什么的人出现

Kheilmann 发表于 2006-6-27 06:42:47

谢谢,
我检查了表中的作业号数据类型,它是一个文本字段。
我还尝试在字符串变量周围使用'mark,但没有成功...
即。Sql="Select*From在哪里。[作业编号] = ' " & 作业 & " ';"
我使用空格来显示'mark and'mark。我也试过没有......
数据库是10或11年前创建的,我不想进去开始乱搞这样的东西......
我正试图让他们将他们的许多独立实用程序升级到一个集中式系统中...但是在那之前......
我会一直努力解决这个问题,直到有人给我开灯。

quicksilver 发表于 2006-6-27 07:42:52

我发现一个有用的技巧是打开一个新的查询并转到SQL视图。复制并粘贴您的sql语句,用实际条目替换作业变量。如果在调用字段等时有任何错误,这可能会对您有所帮助。进行所需的任何更改,然后将SQL代码剪切并粘贴回您的VBA,用变量替换文本。

Rob_Kish 发表于 2006-6-27 10:30:41

单引号和作业号之间不能有空格。当它运行时,结果是:
"Select*fromwhere.[作业号]='作业';"
并且dBase中可能没有与之匹配的作业(作业号中有空格)。

Dnereb 发表于 2006-6-27 11:01:30

第一个问题…此代码是在Acad中打开Access数据库还是在Access中
假设您正在访问VBA:
将作业作为字符串调整
将生成器作为字符串调整计划作为字符串调整作业作为DOA。记录集
Job=Me.JobEntry。值为“自定义对话框作业搜索”,文本框为“作业条目”
SQLstring=“从中选择*,其中。=”“&Job&;”
调试。始终将“SQLString”打印为该值。如果您构建一个SQL字符串并在中间窗口中查找结果,
“这在我的Cad VBA中工作,我想访问是不同的吗?”
将作业设置为当前数据库。openrecordset(sqlstring,dbOpenDynaset)
您可以通过Docmd访问您的数据库,但我警告您,这是一个旧的传统,对于某些命令,它不会同步运行
您还可以使用DAO、ADO和SQL
为了最大限度地提高性能,请在记录集中使用SQL,通过WHERE子句筛选出所需的特定记录。瓶颈是将数据从数据库传输到应用程序。

Kheilmann 发表于 2006-6-27 17:14:05

我关于空格的注释是关于这个论坛上的句子…
我添加了一个空格以便更容易阅读…我的代码中没有空格…
,感谢Dnereb…
我的整个问题是,我的Set记录集语句中有dynaset,而不是dbOpenDynaset的
<谢谢大家的帮助

Dnereb 发表于 2006-6-28 15:45:07

注意:
如果出于兼容性原因使用DAO,请务必将记录集声明为DAO。某些版本的Access默认使用ADO
通过currentdb对象(DAO)分配记录集时不及格
页: [1]
查看完整版本: VBA 中的 SQL 语句在 Access 中