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 :

Incompatibilté de type


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut Incompatibilté de type
    Bonjour,
    je souhaite calculer la difference entre un champ de mon formulaire et un champ de ma table et stocker le résultat dans un autre champ de ma table

    Tsalle est une table qui contient 2 champ (salle et Place)
    le champ Place est de type numérique (entier)

    quand on clique sur valider la table doit être remplie automatique

    l'erreur se trouve à cet endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbplace = " SELECT Place FROM Tsalle WHERE Salle LIKE '* " & Me.salle.Value & "* '"
    alors qu'ils sont normalement du même type


    Un bout de code pour que vous puissiez comprendre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim nbplace As Integer
    Dim nbrestant As Integer
    Dim nbréserve As Integer 
    ....
     
    Private Sub valider_Click()
    nbréserve = Me.nbplace.Value 
    nbplace = " SELECT Place FROM Tsalle WHERE Salle LIKE '* " & Me.salle.Value & "* '"
    nbrestant = nbplace - nbréserve
    ...

    merci beaucoup pour votre aide

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 131
    Par défaut
    Je crois qu'il faut utiliser " à la place des ' sur access
    essaye à la place
    <... WHERE Salle LIKE ""* """ & Me.salle.Value & """*"";">

  3. #3
    Membre expérimenté Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Par défaut
    Bonjour,

    Normal que ça ne marche pas :

    Tu déclares nbplace comme un entier et tu essaies d'y stocker un String alors ce ne peux pas marcher. Explication :

    quand tu fait
    nbplace = " SELECT Place FROM Tsalle WHERE Salle LIKE '* " & Me.salle.Value & "* '"
    , " SELECT Place FROM Tsalle WHERE Salle LIKE '* " & Me.salle.Value & "* '" est considéré comme un String et pas comme un requête SQL qui retourne un résultat. Il faut que tu utilise un recordset ou un truc du genre.

    Cordialement

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    NbPlace est un nombre et tu lui affecte une chaîne de caractère alors il n'est pas vraiment content :-).

    Pour obtenir ce que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbPlace=val(nz(Dfirst("[NbPlace]", "Tsalle", "[Salle] LIKE ""* " & Me.salle.Value & " *"""),0))
    Note : Je suis supris des espace entre les étoiles et Me.salle.Value. Avec ce masque tu vas chercher toutes les noms de salle qui contiennent le mot Me.salle.Value et qui sont précédés et suivit par au moins un blanc. Si le mot Me.salle.Value est en début ou fin de champ, tu n'obtiendra aucun résultat. Est-ce bien ce que tu veux ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    avec ce code j'ai une erreur de référence sur le champ

    j'ai essayé de faire plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If (Me.salle = "222") Then
    nb2 = 8 - nb1
    Else
    nb2 = 12 - nb1
    End If
    ...
    DoCmd.RunSQL "INSERT INTO tableau VALUES (forms!formulaire2!salle,forms!formulaire2!CtlActiveX1,forms!formulaire2!horaire,forms!formulaire2!nbpl,nb2);"
    je n'ai pas de problème de compilation mais quand je clique sur valider il me demande d'entrer la valeur de nb2
    alors que j'ai demandé de faire un cacul direct et de stocker dans le champ [places dispo ] de ma table


    Merci de m'aider c vraiment urgent

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Quand tu mets des guillemets cela défini une chaîne de caractère. Ce qui est dans une chaîne de caractère n'est pas interprété par access donc NB2 n'est pas vu comme une variable.

    Ici la version corrigée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO tableau VALUES (forms!formulaire2!salle,forms!formulaire2!CtlActiveX1,forms!formulaire2!horaire,forms!formulaire2!nbpl," & nb2 & ");"
    Ce code va créer une chaîne de caractère qui va intégré nb2.

    Une solution encore plus efficasse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO tableau VALUES (" & me.salle & "," & me.CtlActiveX1 & "," & me.horaire & "," & me.nbpl "," & nb2 & ");"
    en suposant que ton code s'exécute sous Formulaire2.

    Je te suggère aussi de changer Formulaire2 pour quelque chose de plus explicit (ex : ReservationSalle), la personne qui fera la maintenance de ton appli t'en sera reconnaissante.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    merci beaucoup
    ça marche et aucun problème de compilation

Discussions similaires

  1. l'erreur Incompatibilté de type
    Par tioch dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/07/2011, 08h59
  2. Incompatibilté de type
    Par oulspplus dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/10/2008, 18h32
  3. incompatibilté de types
    Par bbillel dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 08/06/2007, 22h49
  4. Err 13 Incompatibilté de type sur recordset
    Par AndréPe dans le forum Access
    Réponses: 3
    Dernier message: 18/01/2007, 16h04
  5. [Recordset] Incompatibilté de type avec une requête
    Par lbourlet dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 15h52

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