0

我有 vba 代码通过ODBC将 Oracle 表数据提取到记录集中。但是如果 oracle 表中有时间戳字段,它会显示一些未指定的错误。

我有 100 多个表,我不知道哪个表会有时间戳。我在循环下运行查询以检索数据。

Query = "Select End_Time from MyTable" 'this table has End_Time timestamp(6) field
CmdSQLData.CommandText = Query
CmdSQLData.CommandType = adcmdText  
CmdSQLData.Timeout=0 set rs = CmdSQLData.Execute() 'This line shows unspecified error then the table is having timestamp field 
'Then code for store data here...

运行时错误“-2147467259 (80004005)”;未指定的错误

Oracle表结构是:

create table MyTable    (
Date_id Integer,
Date_Today Date,
End_Time Timestamp(6)
)

不要提出类似的建议,

从 my_table 中选择 to_char(timestamp_field)

如果我进行上述查询,那么问题就不会出现。 我需要永久代码来处理记录集中的时间戳,因为我可能不知道表是否有时间戳字段,因为我有 100 多个表

4

2 回答 2

1

您可能会遇到以下情况:https ://forums.oracle.com/forums/thread.jspa?messageID=4210331

尝试升级您的 ODBC 客户端。

于 2012-07-27T11:14:35.027 回答
0

以下代码对我来说很好:-

Dim con As New ADODB.Connection
Dim cmd As New ADODB.command
Dim rs As New ADODB.Recordset

con.Open "DSN=Oracle", "test", "test"
con.Execute "drop table tstest "
con.Execute "create table tstest ( a int, b Timestamp(6))"
con.Execute "insert into tstest values ( 1, current_timestamp ) "

q = "select * from tstest"
cmd.ActiveConnection = con
cmd.CommandText = q
cmd.CommandType = adCmdText
Set rs = cmd.Execute

Debug.Print rs.Fields(1)

con.Close

这是使用 ADO 2.8 和 Oracle 驱动程序版本 11.1.0.7

*注意:Oracle 驱动程序来自Oracle - 你需要让它工作: -

Instant Client 包 - 基本
Instant Client 包 - ODBC

您需要这两个软件包才能使驱动程序正常工作。然后,您需要在 ODBC 数据源中使用 Instant Client 连接,例如:-

192.168.0.25:1521/orcl

IP:端口/名称

于 2012-07-26T15:35:55.210 回答