Problème de requête d'insertion

Résolu
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007 - 31 mai 2005 à 23:18
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 - 1 juin 2005 à 15:07
Hello hello,

Voila, j'ai créé un projet et je voudrais insérer desdonnées dans ma base de donnée. Je crééune requet eINSERT, mais apres verification de ma requete, j'ai une erreur de type :

Erreur d'execution 3219 :
Operation non valide.

Voila mon code source, si quelqu'un peut me dire la ou est l'erreur et si il y un pb d'écriture :

' Définition base de donnée
Set db = OpenDatabase("L:\BTS\PTI\VB\FNCI\fnci.mdb")
' requete
Set Donnee = db.OpenRecordset("SELECT max(num_fnci) AS max from fnci")
' si il y a des resultats
If Donnee.RecordCount <> 0 Then
' on donne a la variable le numero de fnci trouvée et on incremente
Newnum = Donnee("max") + 1
End If
Set Donnee = db.OpenRecordset("INSERT INTO FNCI VALUES (" & Newnum & ",#" & dateS & "#, '" & description.Text & "','" & cause.Text & "', '" & nom_prenom.Text & "'," & ai & "," & af & ");")
' on libere les ressources
Set db = Nothing
Set Donnee = Nothing

Merci

20 réponses

Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
1 juin 2005 à 09:54
nan faut se placer sur el champ a modifier et faire un .edit
et ensuite .update
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 10:00
Exact Slyders...juste .Edit à la Place de .AddNew
aprés avoir bien selectionner l' Enregistrement avec un WHERE dans le requéte par exemple

N'oublies pas de cocher Reponse Acceptée

It@li@
3
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
1 juin 2005 à 08:36
essaie en mettant le nom de tes champs avant les variables
Set Donnee = db.OpenRecordset("INSERT INTO FNCI (num, date, description, cause, nom_prenom, ai, af) VALUES (" & Newnum & ",#" & dateS & "#, '" & description.Text & "','" & cause.Text & "', '" & nom_prenom.Text & "'," & ai & "," & af & ");")

good luck
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 08:37
Donc ta Table FNCI à pour type de Champ :
-Entier
-Date
-Texte
-Texte
-Texte
-Entier
-Entier

It@li@
0

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

Posez votre question
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 08:38
Qu'elle est ta clé primaire ??

It@li@
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
1 juin 2005 à 08:53
Salut,

dans ta requête :
"INSERT INTO FNCI VALUES (" & Newnum & ",#" & dateS & "#, '" & description.Text & "','" & cause.Text & "', '" & nom_prenom.Text & "'," & ai & "," & af & ");"

il me semble que tes virgules ne sont pas toujours encadrées par des ' : nom_prenom.Text & "'," .
C'est juste une idée, on ne sait jamais, parfois (souvent en ce qui me concerne ) on cherche longtemps à cause de petits trucs comme ça.

@+
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 08:59
Personnellemnt je n'utilise jamais cette Mathode d' INSERT mais :

Définition base de donnée
Set db = OpenDatabase("L:\BTS\PTI\VB\FNCI\fnci.mdb")
Set Donnee = db.OpenRecordset("SELECT max(num_fnci) AS max from fnci")
If Donnee.RecordCount <> 0 Then
Newnum = Donnee("max") + 1
End If
Set Donnee = db.OpenRecordset("SELECT * FROM FNCI")
Donnee.AddNew
Donnee("num")=num.text
Donnee("date")=date.text
Donnee("description")=description.text
Donnee("cause")=cause.text
Donnee("nom_prenom")=nom_prenom.text
Donnee("ai")=ai.text
Donnee("af")=af.text
Donnee.UpDate
Set db = Nothing
Set Donnee = Nothing

It@li@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 09:07
Oki merci tout le moe ! J'ai déja essayé en mettant les données de ma table FNCI...

Voila structure de ma table FNCI :

Num_FNCI -------> Cle primaire (numeric)
Date_creation -------> Date
Description_fnci -------> Texte (mémo dans acess)
Cause_fnci -------> Texte (mémo dans acess)
Nom -------> Texte
Num_ai # -------> Numeric (en relation avec une autre table AI)
Num_af # -------> Numeric (en relation avec une autre table AF)

Apres verification, il n'y avait pas d'erruer dans ma requete donc je vais tenter la méthode d'Italia et je verrai si cela fonctionne :)
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 09:07
Oki merci tout le moe ! J'ai déja essayé en mettant les données de ma table FNCI...

Voila structure de ma table FNCI :

Num_FNCI -------> Cle primaire (numeric)
Date_creation -------> Date
Description_fnci -------> Texte (mémo dans acess)
Cause_fnci -------> Texte (mémo dans acess)
Nom -------> Texte
Num_ai # -------> Numeric (en relation avec une autre table AI)
Num_af # -------> Numeric (en relation avec une autre table AF)

Apres verification, il n'y avait pas d'erruer dans ma requete donc je vais tenter la méthode d'Italia et je verrai si cela fonctionne :)
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 09:27
Je suis vraiment désolé pour le sp@m mais mon PC plante et je ne vois pas mes message directement comme je devrais les voir....

Encore désolé aux mod de ce forum
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 09:31
Avec la methode Addnew..tu verras bien sur quel champ il y a un souci

It@li@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 09:41
Comme toujours, Italia, tu viens de faire des merveilles !!

Mon insert marche a merveille avec ta methode.

Et pour modifier une fnci existante, il faut que je remplace Donne.Addnew par Donnee.Update ???

Merci
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 10:19
Merci bocou, c génial de pouvoir compter sur des personnes lorsqu'on débute et kon a un peu du mal avec les tutos :)
0
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
1 juin 2005 à 10:36
le forum est la pour sa
(et moi sa me fait reviser en même temps )
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 10:43
On est tous passé par là............

@+ sur le Forum
Forza Italia

It@li@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 12:38
Zkusé Mi encore une fois LooL, mais pour la suppression, c'est Donnee.delete ??
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 13:33
Set db = OpenDatabase("L:\BTS\PTI\VB\FNCI\fnci.mdb")Req "DELETE * FROM QuantiteArticle WHERE Annee " & Val(List2.List(i)) & ""
Db.Execute Req

It@li@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 13:35
Oki merci ;)
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
1 juin 2005 à 14:41
Voila, en fait, c'est comme la modif ou l'insert, on est obligé de créer la requete de selection puis de supprimer les resultats dans la table...

Voila le code qui pose probleme et que j'ai mis :
Set SupTR db.OpenRecordset("SELECT * FROM FNCI_TRAITEMENT WHERE FNCI_TRAITEMENT.Num_fnci " & num_fnci & " AND FNCI_TRAITEMENT.Num_traitement = TRAITEMENT.Num_traitement")
SupTR.Delete

:: FNCI_TRAITEMENT ::
num_fnci
num_traitement

:: TRAITEMENT ::
Num_traitement
Date_creation
Nom
Quoi
Quand

Et voila le souci :

Erreur d'execution '3027' :
Mise ajour impossible : La base de donnée ou l'objet est en lecture seule

Sa ne me le fait pas pour la suppression dans la table FNCI qui elle marche très bien (code ci dessous) : Set SupFNCI db.OpenRecordset("SELECT * FROM FNCI WHERE Num_fnci " & num_fnci & "")
SupFNCI.Delete

J'ai modifier mes types de jointures, j'ai mm enlever toutes jointure pour ester, mais cela me le fait a chaque fois.

Et ma base de donée n'est pas en lecture seule :S
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 15:07
Set db = OpenDatabase("L:\BTS\PTI\VB\FNCI\fnci.mdb")
Db.Execute ("DELETE * FROM FNCI WHERE Num_fnci = " & num_fnci & "")
Set db=Nothing

It@li@
0
Rejoignez-nous