IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Insertion de valeurs sous Access et VBA [AC-2000]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    MaxEquipment = "Select MAX(IDEQUIPMENT) From Equipment;"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MaxEquipment as String
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MaxEquipment as Integer
    Toutes vos solutions sont les bienvenues

  2. #2
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 175
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    '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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaxEquipment = DLookup("Max([IDEQUIPMENT])", "Equipment")
    MaxEquipment = MaxEquipment + 1
    Mais j'ai toujours le même probleme

  4. #4
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 175
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ^^.

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Cela à l'air de bien fonctionner.

    Donc en fait ma requete devrais donner quelques choses comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into Equipment values (" & MaxEquipment & ", '" & FEquipment & "', ...)
    Maintenant ca fonctionne

    Merci beaucoup pour ta réponse rapide

  6. #6
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 175
    Par défaut
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] QueryTables sous Access en vba
    Par Mut dans le forum VBA Access
    Réponses: 11
    Dernier message: 13/05/2011, 22h22
  2. [AC-2003] apercu puis impression d'un etat sous access en vba
    Par Marc31 dans le forum IHM
    Réponses: 10
    Dernier message: 10/09/2010, 14h33
  3. Insertion d'image sous ACCESS
    Par BraMali dans le forum Access
    Réponses: 1
    Dernier message: 26/07/2010, 19h26
  4. création de formulaire sous access et vba
    Par sdoango dans le forum VBA Access
    Réponses: 13
    Dernier message: 02/08/2007, 09h24
  5. [SQL]Problème requete sql sous access avec vba
    Par aaliyan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 13/04/2007, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo