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 16/05/2011, 13h23   #1
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
Par défaut Insertion de valeurs sous Access et VBA

Bonjour à tous
Voila mon probleme :

En VBA, j'ai une variable qui doit me récuperer la valeur max de l'ID equipment, et ma requete d'insertion doit me faire un
mais pour le moment sans succés
Voila ce que j'ai actuellement

Code :
MaxEquipment = "Select MAX(IDEQUIPMENT) From Equipment;"
Code :
DoCmd.RunSQL "Insert into Equipment values (MaxEquipment +1, ...);"
Lorsque je lance l'insertion, une boite de dialogue s'ouvre et me demande le MaxEquipment
En fait, l'equipement que j'insere dans la BDD doit avoir un ID qui est egal à l'IDmax + 1
J'ai tenté avec
Code :
Dim MaxEquipment as String
ou
Code :
Dim MaxEquipment as Integer
Toutes vos solutions sont les bienvenues
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 13h32   #2
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Bonjour Tydher,

Je ne suis pas sûr de comprendre ton problème mais j'utilise le code suivant pour stocker le max de l'ID et l'incrémenter de 1 :

Code :
1
2
IdMax = DLookup("Max([ID])", "MaTable")
IdMax = IdMax + 1
Je stocke donc l'ID Max dans une variable IdMax et je lui ajoute 1 dans la même variable.
Après il te suffit je pense d'utiliser la variable dans une requête.
Enfin c'est tout ce que je peux te donner vu le peu de détails que tu donnes sur ton code et tes requêtes. (et surtout sur ta question...)

Soit plus précis.

Cordialement,

Quentin
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 13h43   #3
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
Je vais tenter d'être plus précis

J'ai un formulaire où l'utilisateur entre diverses données sur un équipement
Lorsque l'utilisateur clic sur un bouton, mon code VBA se lance

Dans ce code, j'insert les données entrées dans le formulaire, dans ma table équipement.
Je souhaite donc que l'équipement entrer dans le formulaire prenne comme ID la valeur max de ma table equipement, +1

J'ai donc fait :
Code :
'MaxEquipment = "Select Max(IDEQUIPMENT) From Equipment"
Mais cela ne marche pas, en effet, une boite de dialogue me demande MaxEquipment, comme si la variable était inexistante

Edit : J'ai tenté avec ce que vous m'avez proposez :
Code :
1
2
MaxEquipment = DLookup("Max([IDEQUIPMENT])", "Equipment")
MaxEquipment = MaxEquipment + 1
Mais j'ai toujours le même probleme
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 13h53   #4
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Ok, je pense que j'ai compris.

Bon je débute plus ou moins aussi en VBA mais je te propose de tester cette solution :

Code :
1
2
3
MaxEquipement = Dlookup("Max([IDEQUIPMENT])", "Equipment")
MaxEquipementInc = MaxEquipement +1
Docmd.RunSQL " Insert into Equipment values (" & MaxEquipmentInc & ", ...);"
Essaye si ce code fonctionne, s'il y a un problème et bien dis-le ^^.
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 14h01   #5
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
Cela à l'air de bien fonctionner.

Donc en fait ma requete devrais donner quelques choses comme :

Code :
Insert into Equipment values (" & MaxEquipment & ", " & FEquipment & ", ...)
Mais pour mon autre variable (FEquipment) j'ai un message d'erreur
Erreur de syntaxe (operateur absent) dans l'expresseion 'Equipment Test 1'
Equipment Test 1 correspond à la valeur de mon champ dans le formulaire

FEquipment est un String

Edit : Il me manquais les simple cote
Code :
Insert into Equipment values (" & MaxEquipment & ", '" & FEquipment & "', ...)
Maintenant ca fonctionne

Merci beaucoup pour ta réponse rapide
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 14h05   #6
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Lol j'allais te le dire, comme tu as des espaces dans le nom de ton champ, il faut mettre des côtes ^^!

De rien ça m'a fait plaisir de t'aider, n'oublie pas de mettre la discussion en résolue, et bonne continuation !
Nitromard 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 12h03.


 
 
 
 
Partenaires

Hébergement Web