2017-02-16 2 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 может это объяснить.

 Смежные вопросы

  • Нет связанных вопросов^_^