2012-07-26 38 views
0

我有通過ODBC將Oracle表數據提取到記錄集中的vba代碼。但是,如果oracle表中有時間戳字段,則會顯示一些未指定的錯誤。vba ODBC在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多個表

+0

我認爲你需要準確地展示你在做什麼。例如,什麼是'Dynamic_table_name'?它的結構是什麼? 「有些時候這張表有時間戳(6)字段」的意思是 - 它有那個字段或者它沒有。而且您可能還需要提及哪個版本的Oracle。 – 2012-07-26 14:46:17

+0

@AndrewLeach:我修改了這個問題來顯示具體的例子。請讓我知道吧。 – logan 2012-07-26 14:48:57

+0

您錯過了「它的結構是什麼?」你需要儘可能多地提供信息:沒有人能看到你能做的。當我們的眼睛,描述一切。 – 2012-07-26 14:53:29

回答

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 - 你需要得到它的工作: -

即時客戶端軟件包 - 基本
即時客戶端程序包 - ODBC

您需要兩個包讓司機工作。然後,您需要使用您的ODBC數據源,例如即時客戶端連接: -

192.168.0.25:1521/orcl 

IP:端口/名稱

+0

我正在使用Oracle的Microsoft驅動程序。我已經安裝在我的服務器機器上。請讓我知道 – logan 2012-07-27 04:00:17