将 MS Access Form 日期传递到 Oracle SQL

加雷斯·W

我正在使用 MS Access 通过传递查询从 Oracle 服务器中提取一些数据。用户会看到一个表单,他们可以在其中输入一些变量(例如日期范围)。我希望 Oracle SQL 能够从表单中提取两个日期字段。

当前的 SQL(不起作用)如下:

SELECT a.I_LOAN_NUM, a.I_LOAN_SUB_ALLOC, c.N_EXCLV, e.I_GSL_SPNSR, e.N_GSL_SPNSR,  b.D_CAL, b.C_LOAN_STAT, g.N_CNTRY

FROM SLD_LOAN_MSTR a
JOIN SLD_LOAN_CDL b on b.I_LOAN_ID = a.I_LOAN_ID
JOIN SLD_EXCLV c on c.I_EXCLV_ID = b.I_EXCLV_ID
JOIN SLD_AC d on d.I_AC_ID = b.I_AC_ID
JOIN SLD_CUST e on e.I_CUST_ID = d.I_CUST_ID
JOIN SLD_DPT_CNTRY f on f.I_DPT_ID = b.I_DPT_ID
JOIN SLD_CNTRY g on g.I_CNTRY_ID = f.I_CNTRY_ID

WHERE (b.C_LOAN_STAT = 'SETTLED' and b.D_CAL between [Forms]![Cost Allocation Form]![Start_Date] and [Forms]![Cost Allocation Form]![End_Date])
ORDER BY b.D_CAL

如果我用硬编码日期替换表单引用,上面的 SQL 就可以工作,所以我知道 SQL 通常是好的。例子:

WHERE (b.C_LOAN_STAT = 'SETTLED'  and b.D_CAL between '01JAN2019' and '01FEB2019')

SQL 生成的错误消息指出“ODBC--调用失败。[Oracle][ODBC][Ora]ORA-00936:缺少表达式 (#936)”

表单中的两个日期字段都使用短日期格式。

我不确定这是否有任何区别,但表单有多个选项卡。从我从其他示例中看到的情况来看,表单引用不需要考虑选项卡标签。

谢谢

传递查询在服务器上执行。在您的情况下,Oracle 服务器无法识别[Forms]![Cost Allocation Form]![Start_Date][Forms]![Cost Allocation Form]![End_Date]属性。

您可以使用 VBA 动态更新查询的查询定义以包含表单控件值。然后执行查询。

Dim strSQL As String
Dim qdf As QueryDef

strSQL = "SELECT a.I_LOAN_NUM, a.I_LOAN_SUB_ALLOC, c.N_EXCLV, e.I_GSL_SPNSR, e.N_GSL_SPNSR,  b.D_CAL, b.C_LOAN_STAT, g.N_CNTRY " & _
        "FROM SLD_LOAN_MSTR a " & _
        "JOIN SLD_LOAN_CDL b on b.I_LOAN_ID = a.I_LOAN_ID " & _
        "JOIN SLD_EXCLV c on c.I_EXCLV_ID = b.I_EXCLV_ID " & _
        "JOIN SLD_AC d on d.I_AC_ID = b.I_AC_ID " & _
        "JOIN SLD_CUST e on e.I_CUST_ID = d.I_CUST_ID " & _
        "JOIN SLD_DPT_CNTRY f on f.I_DPT_ID = b.I_DPT_ID " & _
        "JOIN SLD_CNTRY g on g.I_CNTRY_ID = f.I_CNTRY_ID " & _
        "WHERE (b.C_LOAN_STAT = 'SETTLED' and b.D_CAL between '" & _
        [Forms]![Cost Allocation Form]![Start_Date] & "' and '" & [Forms]![Cost Allocation Form]![End_Date] & _
        "' ORDER BY b.D_CAL"

Set qdf = CurrentDb.QueryDefs("PassThroughQueryName")
qdf.SQL = strSQL

此外,由于您使用日期,我建议您将日期格式化为 ISO 格式 yyyy-mm-dd

在这种情况下,格式化控件,如

Format([Forms]![Cost Allocation Form]![Start_Date], "yyyy-mm-dd") & "' and '" & Format([Forms]![Cost Allocation Form]![End_Date], "yyyy-mm-dd")

另一种方法是仅使用 VBA ADO 访问 Oracle 服务器并检索数据。您仍然需要按照此处所述构建 SQL 字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将MS Access SQL转换为Oracle?

来自分类Dev

MS Access传递查询到Oracle VIA ODBC

来自分类Dev

从文本字段到SQL语句MS Access的短日期

来自分类Dev

将SQl查询转换为MS Access

来自分类Dev

将日期值插入MS Access

来自分类Dev

将日期值插入MS Access

来自分类Dev

MS Access SQL 日期范围查询

来自分类Dev

在MS ACCESS 2010中创建表-使用Oracle SQL查询

来自分类Dev

MS Access + Oracle Pass-Through SQL with DBLink 到另一个数据库

来自分类Dev

使用 VBA/Access 将变量传递到 SQL

来自分类Dev

更新查询从 MS Access 到 Oracle 的多个连接

来自分类Dev

将表从SQL Server导出到MS Access

来自分类Dev

将功能从SQL Server转换为MS Access

来自分类Dev

如何通过编码将数据从MS Access导入Sql Server

来自分类Dev

将 MS Access TRANSFORM/PIVOT 查询转换为 SQL Server

来自分类Dev

如何将日期从C#存储到MS-Access,以及如何检索它?

来自分类Dev

SQL查询PIVOT到MS Access SQL查询

来自分类Dev

MS Access SQL错误

来自分类Dev

MS SQL Server中的Oracle RR日期格式

来自分类Dev

MS Access 将文本字段绑定到表格

来自分类Dev

如何将ms sql数据传递到jQuery float

来自分类Dev

日期转换错误-MS Access前端查询SQL后端

来自分类Dev

MS Access:使用VBA进行SQL插入的日期格式

来自分类Dev

MS Access日期在VBA SQL查询中不起作用

来自分类Dev

年号/月的短文本列显示日期MS Access SQL

来自分类Dev

MS-Access SQL 查询 - 按日期过滤

来自分类Dev

MS Access Form:在没有键的情况下将新信息输入到两个链接表中

来自分类Dev

MS SQL将日期行合并为开始结束日期

来自分类Dev

无法从Access导入数据到MS SQL Server