2017-02-16 4 views
1

J'essaye d'ouvrir une nouvelle connexion en utilisant la macro mais l'instruction "Rcrdst.Open" me donne l'erreur d'exécution: "ORA-00911: caractère non valide". Quelqu'un peut-il m'aider à trouver le problème?Connexion à une base de données en utilisant la macro

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 

Merci à l'avance

+0

L'erreur se produit lors de l'exécution de la requête et le code d'erreur est "ORA ..", qui ressemble à l'erreur est levée par votre base de données. La description de l'erreur est _Identifiers ne peut pas commencer avec un caractère ASCII autre que des lettres et des chiffres. $ # \ _ sont également autorisés après le premier caractère. _ Je suppose que vos variables 'userid' et' Password' contiennent des caractères italiques Unicode que la base de données ne peut pas gérer. En outre, vous ne devez pas fermer votre connexion alors que d'autres objets (c'est-à-dire 'Rcrdst') en dépendent. – BenDot

+0

mes 'userid' et' password' ne contiennent que des alphabets et des nombres et quand je copie cette requête exacte dans le développeur SQL, elle fonctionne parfaitement. – Srijan

+0

Je suggère de regarder de plus près la variable 'Query'. Votre code peut changer différemment que si vous le copiez vous-même. Demandez à Excel d'imprimer la chaîne ou de la regarder en mode débogage. – BenDot

Répondre

2

Retirez le ; arrière de la requête.

Parfois, vous en avez parfois besoin. Peut-être un expert Oracle peut-il l'expliquer.