2017-02-16 11 views
1

マクロを使用して新しい接続を開こうとしていますが、文「Rcrdst.Open」が実行時エラー:「ORA-00911:無効な文字」を与えています。誰も私が問題を見つけるのを助けることができますか?マクロを使用してデータベースに接続

Dim C   As Integer 
Dim ambiente As String 
Dim userid  As String 
Dim Password As String 
Dim Query  As String 
Dim Newsht  As Worksheet 
Dim Conn  As ADODB.Connection 
Dim Rcrdst  As ADODB.Recordset 

Set Newsht = ActiveWorkbook.Sheets("sheet1") 
ambiente = InputBox("Please insert environement in which query has to be run.", "Test") 
userid = InputBox("Please insert your USER ID for " & ambiente & " environment.", "Test") 
Password = InputBox("Please insert the PASSWORD related to " & userid & " user.", "Test") 

If userid <> "" And Password <> "" Then 
    Set Conn = New ADODB.Connection 
    Conn.ConnectionString = "Provider=MSDAORA; Password= " & Password & ";User ID= " & userid & "; Data Source = " & ambiente & ";Persist Security Info=True" 
    Conn.Open 
    Query = "select seq_prenotazione, cod_rapporto,stato_pren from via.prenotazione where seq_prenotazione in (700016298527, 700016761977);" 

    Set Rcrdst = New ADODB.Recordset 
    Rcrdst.CursorLocation = adUseClient 
    Rcrdst.CursorType = adOpenStatic 
    Rcrdst.LockType = adLockBatchOptimistic 

    Rcrdst.Open Query, conn 

    'code to work on data extracted 

end if  
Rcrdst.Close 
Conn.Close 

事前

+0

クエリが実行されているときにエラーが発生し、エラーコードが "ORA .."で、データベースによってエラーがスローされたように見えます。エラーの説明は_Identifiersが文字と数字以外のASCII文字で始まらないことがあります。 $#\ _も最初の文字の後に許されています。あなたの 'userid'と' Password'変数にはデータベースが扱えないイタリアのUnicode文字が入っていると思います。また、他のオブジェクト(つまり、 'Rcrdst')が依存している間は、接続を閉じてはいけません。 – BenDot

+0

私の 'userid'と' password'にはアルファベットと数字だけが含まれています。この正確なクエリをSQL開発者に貼り付けてコピーすると、完璧に動作します。 – Srijan

+0

私は 'Query'変数を詳しく見ることをお勧めします。コードをコピーするよりも、コードの変更が異なる場合があります。 Excelが文字列を表示するか、デバッグモードで表示します。 – BenDot

答えて

2

のおかげでは、末尾を削除;クエリから。

場合によっては時には必要としないことがあります。多分、Oracleの専門家がそれを説明することができます。

関連する問題