Erreur insert into dans base oracle à partir de vb6

vbetu Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 26 octobre 2004 - 25 oct. 2004 à 16:38
jujunio Messages postés 37 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 22 septembre 2010 - 2 nov. 2004 à 16:42
bonjour, j'utilise une connexion odbc en dao pour manipuler des données oracle.
lorsque je fais un select je n'ai pas de probleme pour recuperer les données. mais qd je fais un insert into simple sur une table à une colonne j'ai l'erreur 3113 :
le champ 'T1' n'est pas un champ pouvant être mis à jour

voici mon code :

cmd = "INSERT INTO TEST (T1) VALUES('test);"
dbs.Execute (cmd)
avez-vous deja eu ce probleme?
la table possède une colonne de type varchar2(10) et peut être nulle.

merci

7 réponses

cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
25 oct. 2004 à 16:59
Tout d'abord ta requete lui manque un apostrophe à la fin
VALUES('test);"

Dans le cas ou la table TEST possede que le champs T1

"INSERT INTO TEST (T1) VALUES ('test');"

Sinon tu dois mettre les champs Not Null

"INSERT INTO TEST (ch1,ch2,c3) VALUES ('val','val2', 'val3');"

NB : les apostrophes sont utilisés si les champs sont de type Text

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
0
vbetu Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 26 octobre 2004
25 oct. 2004 à 17:19
voici la syntaxe
cmd = "INSERT INTO TEST (T1) VALUES ('test') ;"
dbs.Execute (cmd)

çà bloque toujours. j'ai mis à not null le champ T1 mais toujours la même erreur ...
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
25 oct. 2004 à 20:51
suivant le message "le champ 'T1' n'est pas un champ pouvant être mis à jour" :

Est-ce que le champ T1 est de type auto-incrément ???

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
0
vbetu Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 26 octobre 2004
26 oct. 2004 à 11:20
non, il est pas en autoincrement. c'est un champ ordinaire de type varchar(10) sans contraintes.
mais peut-être cela vient du fait que j'utilise le .execute et il y a peut-être un paramètre à mettre pour pouvoir écrire sur une table. faut-il utiliser la propiété .openrecordset ...

je ne maitrise pas bien la connexion odbc. voici mon code de départ me permettant de me connecter à ma base oracle :

Dim dbs As Database
Dim enreg As Variant
Dim cmd As Variant
Dim strAttributs As String
Dim nomBase, nomServeur, nomUt, mdp As String
Dim val As String
val = "test"
nomBase = "nombase" 'Nom de la base (Data source name de la source ODBC)
nomServeur = "service_name" 'Nom du serveur (Service name de la source ODBC)
nomUt = "nom_user" 'Nom d'utilisateur de connexion à la base
mdp = "password" 'Mot de passe de l'utilisateur pour la connexion

'Déclaration de la source ODBC
strAttributs = "Database=" + nomBase + _
vbCr + "Description=" + nomBase + _
vbCr + "OemToAnsi=No" + _
vbCr + "Server=" + nomServeur + _
vbCr + "User=" + nomUt
DBEngine.RegisterDatabase nomBase, "Oracle ODBC Driver", True, strAttributs

'Connexion à la base de données
Set dbs = OpenDatabase( _
nomBase, dbDriverCompleteRequired, True, _
"ODBC;DATABASE=" + nomBase + ";DSN=" + nomBase + ";pwd=" + mdp _
)

'Exécution de la requête
Debug.Print "Début requête : " + CStr(Now) + vbCr
cmd = "INSERT INTO TEST (T1) VALUES ('test') ;"
dbs.Execute (cmd)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
26 oct. 2004 à 12:03
essai comme suit

cmd = "INSERT INTO TEST VALUES ('test') ;"
dbs.Execute cmd

Sinon reposte ton message sur www.sqlfr.com

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
0
vbetu Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 26 octobre 2004
26 oct. 2004 à 12:14
toujours pas. même problème. je rappelle que j'utilise access pour développer en visual basic. sur un simple formulaire...
quand je tape .execute il me propose après la parenthèse de rentrer la chaine de caractere comprenant la requete mais aussi de rentrer une option. mais je ne sais pas quelle option il faut rentrer
0
jujunio Messages postés 37 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 22 septembre 2010
2 nov. 2004 à 16:42
Salut,

Vérifie que tu as bien le droit d'écrire sur ta base de données dans les paramètres de ton lien ODBC.

Jujunio
0
Rejoignez-nous