Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 11h14   #1
Membre à l'essai
 
Inscription : février 2011
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 76
Points : 20
Points : 20
Par défaut probleme valeur variable

bonjour,

access me demande d'entrer une valeur pour le champs correspondant à la variable refcontenant, alors que cette variable est déjà instanciée. Dans le déboggeur, refcontenant prend la bonne valeur, mais dans la requete, refcontenant n a apparemment pas de valeur.

Merci de m'aider, voici le code des variables et de la requete. Je précise que dans mon formulaire, mes objets portent le meme nom.

Code :
1
2
3
4
5
6
7
8
NumComm = Me.NumComm
refprod = Me.Produit
quantiteprod = Me.QteProduit
refcontenant = Me.Contenant
nbcontenant = Me.nbCont
 
reqinsert = "insert into Ligne_Commande "
reqinsert = reqinsert & " VALUES (NumComm, 1, produit, qteproduit,  refcontenant, nbcont);"
xargin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 11h37   #2
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Bonjour,

Je pense qu'il faut distinguer les variables "propres" à VBA et celles propres au langage SQL.

Code sql :
1
2
3
 
reqinsert = "insert into Ligne_Commande "
reqinsert = reqinsert & " VALUES ( " & Me.NumComm & " , 1,  " & Me.Produit & " , " & Me.Contenant & ", " & Me.nbCont & ");"

Je n'ai pas pris en compte les régles de transypage :
Si la variable est de type String => ' " & VARIABLE & " '
Si la variable est de type Integer ou autre => " & VARIABLE & "
Si la variaible est de type Date => # " & VARIABLE & " #

De plus , tu peux encore optimiser ton code en remplacant les Me par Forms(NomFormulaire).Controls(NomControle)

Cdt
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 11h47   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Optimiser en remplaçant le Me par Forms(..), ce n'est pas le terme que j'emploirais.

Le Me fait référence au formulaire/état/classe courante et donc restreint l'utilisation de la procédure, en l'état, à ce seul périmètre, alors que Forms(..) permet de stocker cette procédure ailleurs dans le code (dans un module notamment).

Sinon employer l'un ou l'autre ne procurera aucun gain de performance ni de facilité de lecture.

Sinon rien à dire sur la réponse elle-même sinon qu'il existe un tuto sur les requete en VBA.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/08/2011, 12h04   #4
Membre à l'essai
 
Inscription : février 2011
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 76
Points : 20
Points : 20
Citation:
Envoyé par lelensois16 Voir le message
Bonjour,

Je pense qu'il faut distinguer les variables "propres" à VBA et celles propres au langage SQL.

Code sql :
1
2
3
 
reqinsert = "insert into Ligne_Commande "
reqinsert = reqinsert & " VALUES ( " & Me.NumComm & " , 1,  " & Me.Produit & " , " & Me.Contenant & ", " & Me.nbCont & ");"

Cdt
merci de vos reponses, ma requete fonctionne correctement, mais maintenant, j'ai un autre problème, lié à cette requete.
access me dit "erreur violation de cle". En fait, les champs NumComm et NumLigne sont des clés primaires.
NumComm faisant reference au numero de la table commande.

Ma question, si je peux la poser dans la même discution, c'est de savoir s'il est possible d'inserer des enrregistrements dans une table à cle primaire composée.

Je viens de lire "la sql applique au vba" de ce site, mais je n'ai pas trouvé de reponse.
xargin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h02   #5
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Voici le lien dont fait référence Loufab

Sinon , tu peux insérer des enregistrements dans une table à clé primaire composée. Après ca dépend de la strucutre de ton modèle entité-association , il faut faire des vérifications de saisie dans le formulaire ( ex : "N° de commande déja enregistrée , veuillez en saisir une autre " )
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h22   #6
Membre à l'essai
 
Inscription : février 2011
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 76
Points : 20
Points : 20
le problème c'est que ma table est vide, et je voudrais la remplir avec la requete précédente.
xargin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h34   #7
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
Peux t on avoir plus d'informations concernant les clés primaires ( clé étrangères , table d'origine , idée du contenu des tables ) ?

Cdt
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h47   #8
Membre à l'essai
 
Inscription : février 2011
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 76
Points : 20
Points : 20
j ai une table commande (numero, date) numero=cle primaire
ligne_commande(#numcomm, numero, #refprod, qteprod, #refcont, qtecont)
refprod, refcont=cles etrangeres

produit(ref, designation)
contenant(ref, designation)

la table commande contiendra toutes les commandes
la table ligne commande contient les produits, les contenant et leurs quantites respectives qui appartiennent a une commande

la table produit contient les produits fabriques vendus par l entreprise
la table contenant contient les contenant vendus par l entreprise

Merci de m aider, car la je sais plus quoi faire


j'ai modifié la structure de ma table commande et ligne commande, et ca fonctionne.
Merci de ton aide
xargin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h37.


 
 
 
 
Partenaires

Hébergement Web