Pb Insertion dans base Oracle

Résolu
Signaler
Messages postés
4
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
23 mai 2007
-
Messages postés
4
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
23 mai 2007
-
Bonjour,

Je cherche à transferer mes données d'une base access vers une base Oracle.
J'ai donc créé une connection vers la base Oracle et celle ci marche car toutes les requetes de type "SELECT" me renvoient les bons résultats (utilisation d'un Recordset). Malheuresement, dès que je veux inserer un enregistrement dans la base Oracle, je me retrouve avec une erreur.

Voici une partie de mon code :

Dim DB_Oracle As Database

Set DB_Oracle = OpenDatabase( _
"ORCL", dbDriverCompleteRequired, True, _
"ODBC;DATABASE=ORCL;DSN=ORCL;pwd=password" _
)

DB_Oracle.Execute "INSERT INTO INDIVIDU (REF_INDIVIDU) VALUES ('azerty')"

L'erreur se situe sur la derniere ligne avec l'utilisation du 'Execute' :

 Erreur d'execution '3113'
Le champ 'REF_INDIVIDU' n'est pas un champ pouvant etre mis a jour

Je ne comprend pas le probleme

Si quelqu'un a une idée, n'hésitez pas.

Merci

6 réponses

Messages postés
4
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
23 mai 2007

Bonjour,
J'ai résolu mon problème, grâce a des AddNew sur le Recordset (méthode que j'avais testée au début et qui ne marchait pas ...). J'ai tellement bidouiller des trucs que je ne sait même pas pourquoi ça marche mais bon ...

Je met le bout code si ça peut interesser quelqu'un

Dim rst_Ora As ADODB.Recordset
Set rst_Ora = New ADODB.Recordset

Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection

cnx.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=ORCL;User Id=TEST;Password=password;"
cnx.Open

        rst_Ora.Open "SELECT * from INDIVIDU WHERE INDIVIDU_ID = 1", cnx, adOpenStatic, adLockOptimistic, adCmdText
       
        rst_Ora.AddNew
        rst_Ora.Fields("REF_INDIVIDU") = "azerty"
        rst_Ora.Update
       
        rst_Ora.Close

Set cnx = Nothing

Merci quand même à ceux qui se sont penchés sur mon problème.

+
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut,

'REF_INDIVIDU' est bien le nom de ton champ dans la table INDIVIDU.

Je te rappelle qu'il faut checher un peu avant de poster et regarde ce que j'ai trouvé en 2 minutes (si tu ne la pas deja fait),

http://www.vbfrance.com/infomsg_ERREUR-INSERT-INTO-DANS-BASE-ORACLE-PARTIR-VB6_319747.aspx
Messages postés
4
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
23 mai 2007

Merci pour ta réponse

Le champ REF_INDIVIDU existe bien dans la base (quand j'ecris la requete dans sqlplus elle passe sans problèmes).

Pour ce qui est des recherches, ça fait maintenant 3 jours que j'écume forums et tuto pour trouver une réponse, et j'ai tout essayé (connections en DAO, ADO) mais ça bloque toujours lorsque je veux faire un INSERT

Par contre le dernier post de ton lien parle de "droit d'écriture sur la base de données dans les paramètres de ton lien ODBC".  J'ai beau regarder, je ne trouve pas ou modifier ces droits.
Quelqu'un aurait une solution ?

Merci
Messages postés
46
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013

Bonjour,

si dans sqlplus tu fais un describe de ta table, ca donne quoi ?
c'est surtout pour avoir le type de ton champ ref_individu, ne serais-ce pas un numéro automatique ?

Etienne
Messages postés
46
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013

Aussi,

il faut voir les droits de l'utilisateur qui ouvre la session sur oracle par rapport
au schéma propriétaire des tables ;-)

Etienne
Messages postés
4
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
23 mai 2007

Bonjour,
REF_INDIVIDU est de type VARCHAR2(60). Quant à l'utilisateur qui ouvre la session oracle, c'est le même que celui qui a créé les tables (les tables appartiennent au schéma du même nom que cet utilisateur).