Bonjour,

Je vous contacte car j'ai un soucis avec une injection de données sur ma base Oracle.

Je m'explique, je dois transferer mes données d'une base Access vers une base oracle avec certaines regles de gestions.

Je parcours donc ma base acces puis tente de faire un insert sur ma base oracle qui ne fonctionne pas..

Voici ce que j'ai utiliser pour me conencter à la base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub connection_bdd_oracle(base_oracle As ADODB.Connection, DSN As String, log As String, mdp As String)
Set base_oracle = New ADODB.Connection
On Error GoTo BadConnection
base_oracle.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=" & DSN & ";Uid=" & log & ";Pwd=" & mdp
base_oracle.Open
 
Exit Sub
BadConnection:
If base_oracle.Errors.Count > 0 Then
    'Affichage des erreurs
    MsgBox base_oracle.Errors.Item(0)
    Exit Sub
Else
    MsgBox Err.Description
End If
 
End Sub
J'ai donc tenter plusieurs méthode pour l'injection :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Dim rst_oracle As ADODB.Command 
req = "INSERT INTO TEST_ACCESS_RAPHAEL FIELDS('ID',Valeur') VALUES  ('" & rst_acc.Fields("N°") & "','" & rst_acc.Fields("test") & "')"
       With rst_oracle
            .ActiveConnection = oracle
            .CommandType = adCmdText
            .CommandText = req
            .Execute
        End With
qui me sort une Erreur Ora-00928 : mot-clé Select absent
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
req = "INSERT INTO TEST_ACCESS_RAPHAEL FIELDS('ID',Valeur') VALUES  ('" & rst_acc.Fields("N°") & "','" & rst_acc.Fields("test") & "')"
oracle.Execute req, iAffected, adExecuteNoRecords
qui me sort aussi une Erreur Ora-00928 : mot-clé Select absent

et la dernière méthode :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Set rst_oracle = New ADODB.Recordset
With rst_oracle
            .AddNew
            .Fields("ID") = rst_acc.Fields("N°")
            .Fields("VALEUR") = rst_acc.Fields("test")
            .Update
End With
qui me sort une erreur différente : ORA-00001 : Violation de contraite unique.

Je vous remercie par avance de votre aide.