1

如何使用日期提示创建传递查询,然后将其加载到本地表(生成表)中?

我想在访问中运行它并且在它进入服务器之前我希望查询提示我输入一个日期作为条件,然后当返回结果时我希望它们存储在本地表中以供进一步处理并加入其他本地表和分析。

我知道有一种方法可以通过 VBA 做到这一点。下面是一些示例代码,但我没有看到可以将其存储到 MS Access 本地表中的部分。

/* SAMPLE CODE...not mine*/ 
Dim db As DAO.Database 
Dim qdExtData As QueryDef 
Dim strSQL As String 
Set db = CurrentDb 
strSQL = "SELECT * FROM TBL WHERE FIELD1 = " & 
[Forms]![Form1]![Combo6] 
Set qdExtData = db.CreateQueryDef("QRY_PASS_THROUGH") 
qdExtData.Connect = "ODBC;DSN=???;UID=???;PWD=???;DBQ=???;" 
qdExtData.SQL = strSQL 
qdExtData.Close 
db.Close 
Set db = Nothing 
/* SAMPLE CODE...not mine*/ 

背景信息:我使用直通查询的原因是因为我从 Peoplesoft 查询中复制了大量 SQL,其中包括一些 CASE 语句和其他 SQL 组件,Jet 引擎无法处理但我将其发送到的 Oracle 服务器能够。

4

2 回答 2

1

你为什么不试试

Dim db As DAO.Database 
Dim qdExtData As QueryDef 
Dim strSQL As String 

Set db = CurrentDb 

strSQL = "SELECT * FROM TBL WHERE FIELD1 = " & 
[Forms]![Form1]![Combo6] 

Set qdExtData = db.CreateQueryDef("QRY_PASS_THROUGH") 
qdExtData.Connect = "ODBC;DSN=???;UID=???;PWD=???;DBQ=???;" 
qdExtData.SQL = strSQL 
qdExtData.Close 

'Now use the Pass Thru query above as the data source for the Make table query below 
strSQL = "Select QRY_PASS_THROUGH.* INTO tblPassThruResults FROM QRY_PASS_THROUGH" 
db.Execute strSQL 

db.Close 
Set db = Nothing 

但是,这将工作一次,然后您必须处理删除以前的查询和表,因为上面的代码会创建新的。

更好的解决方案是在开发中创建 PassThruQuery 和表,然后在运行代码时重置它们:

Dim db As DAO.Database 
Dim qdExtData As QueryDef 
Dim strSQL As String 

Set db = CurrentDb 

strSQL = "SELECT * FROM TBL WHERE FIELD1 = " & 
[Forms]![Form1]![Combo6] 

'Reset the SQL statment for the query 
Set qdExtData = db.QueryDefs("QRY_PASS_THROUGH") 
qdExtData.SQL = strSQL 
'Empty the table 
strSQL = "DELETE * FROM tblPassThruResults"
db.Execute strSQL 

'Now use the Pass Thru query above to reload the table 
strSQL = "INSERT INTO tblPassThruResults Select QRY_PASS_THROUGH.* FROM QRY_PASS_THROUGH" 
db.Execute strSQL 

db.Close 
Set db = Nothing 
Watch out for your date string in the query. You may need to add delimiters. Top
于 2012-06-11T22:31:17.160 回答
1

另一种方法是将 SQL 包装在 PeopleSoft 系统中的视图中,从而简化您的 Access 代码。

PeopleSoft 还可以通过 PeopleSoft 组件生成 COM API。如果有 PeopleSoft 升级(通常是 1-2 年),这应该会简化开发并保护您的外部应用程序。PeopleSoft 中的原始 SQL 变得越来越复杂。另一种方法是通过组件接口与系统交互。

本 Oracle 手册的 p79 上有一个示例:http: //docs.oracle.com/cd/E28461_01/psft/acrobat/pt852tcpi-b0212.pdf

于 2012-06-23T21:58:20.053 回答