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

Requêtes et SQL. Discussion :

erreur conversion de type


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut erreur conversion de type
    Bonjour, j'ai un petit soucis avec une requête mise à jour en SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMev = DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture])
    WHERE (((DonneesPourRapport.NoFacture) In (select distinct [No Trans# Sev] from RFacturesRferDuMev)));
    l'erreur provient de cette partie de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture])
    Message d'erreur: Microsoft access n'a pas mis à jour 3 champs à la suite d'un échec de conversion de données

    Merci à l'avance !

    Avez-vous besoins de plus d'info ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Bonjour.

    Il est possible que DSum() te retourne un null.

    Fait un essai avec

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMev = Nz(DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture]), 0)
    WHERE (((DonneesPourRapport.NoFacture) In (select distinct [No Trans# Sev] from RFacturesRferDuMev)));

    Mais attention j'ai eu un cas où NZ m'a fait sauter les décimales :-( Pas cool.

    Si cela t'arrive, il faut utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(isnull(Nz(DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture])), 0, Nz(DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture]))
    Et il me semble qu'il ne faut pas mettre de crochet autours du nom de la source. Le problème vient peut-être seulement de là.

    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.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    pourtant, cette requête semblable fonctionne comme il faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMD = DSum("[Total]","[RFacturesMD]","[RFacturesMD].[Facture] =" & [DonneesPourRapport].[NoFacture])
    WHERE (((DonneesPourRapport.[NoFacture]) In (select distinct Facture from RFacturesMD)));

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Pas de Null dans mon cas...

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Bonjour.

    Vérifie si [DonneesPourRapport].[NoFacture] n'est pas nul à un moment donné.

    Et valide que le problème vient bien du DSum() en remplaçant ton DSum() par une constante (ex : 1234).

    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.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour, pas de null dans no facture et l'erreur provient bien du DSUM, j'avais déjà testé...

    merci

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Quel est le type de MontantMD ?

    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.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    MontantMD est monétaire, mais n'a rien avoir avec la requete en erreur...

    voici la requete en erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMev = DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture])
    WHERE (((DonneesPourRapport.NoFacture) In (select distinct [No Trans# Sev] from RFacturesRferDuMev)));
    RFacturesRferDuMev est une requête
    RFacturesRferDuMev.Montant total est un montant (nombre?)
    RFacturesRferDuMev.No trans# SEV est un nombre

    DonneesPourRapport est une table
    DonneesPourRapport.NoFacture est numérique
    DonneesPourRapport.MontantMev est monétaire

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    MontantMD est monétaire, mais n'a rien avoir avec la requete en erreur...
    Oops, je n'avais pas pris le bon SQL.

    Essaye de taper ? DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & iciunNumeroValide) et d'appuyer sur la touche [enter] dans la fenêtre d'éxécution immédiate.

    Pour la faire apparaître, il faut aller dans l'éditeur de code VBA.
    Taper sur les touches [ctrl][g].

    Cela va exécuter le DSum() et t'afficher le résultat. Cela donnera peut-être une piste.

    Et aussi essaye dans la requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CCur(DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & iciunNumeroValide))

    Peut-être que forcer la conversion donnera quelque chose.

    J'avoue être au bout de mes idées sur ce problème.
    Habituellement DSum() est une fonction sans soucis.

    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.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé ceci dans la fenêtre d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & 1897188)
    et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & "1897188")
    Même résultat : type de données incompatible dans l'expression du critère

    Pour ce qui est de l'essai avec la fonction Ccur: aucun changement

    Le problème provient du DSum car il y a une erreur dans la fenêtre d'exécution...

    merci

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Oui mais on progresse.

    Quel est le type de [No Trans# Sev] ?

    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.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Quel est le type de [No Trans# Sev] ?
    Type numérique

    a+

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Plus précisément :

    Entier ?
    Entier long ?
    Réel ?
    Réel double ?
    Monaitaire ?

    Aussi si c'est un probème de type essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & 1)
    Cela ne retourne probablement pas de résultat mais ne devrait pas générer d'erreur.

    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.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour marot_r, je m'excuse pour le délai...

    Je ne sais pas si ça peut aider, mais RFacturesRferDuMev est une requête qui extrait des données d'un fichier excel lié au projet et non d'une table de la base de données locale...

    Format de la Table Excel
    Nom : Screen Shot 02-23-18 at 02.47 PM 001.PNG
Affichages : 826
Taille : 12,8 Ko

    Données de la table Excel très très abrégé dans le nombre d'enregistrements...
    Nom : Screen Shot 02-23-18 at 03.12 PM.PNG
Affichages : 725
Taille : 11,2 Ko

    Données de la requête RFacturesRferDuMev
    Nom : Screen Shot 02-23-18 at 03.08 PM.PNG
Affichages : 749
Taille : 11,2 Ko

    Requête Excel RFacturesRferDuMev
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ImportationMev.[No MEV], ImportationMev.[No trans MEV], ImportationMev.[No trans# SEV], ImportationMev.[Date/Heure transaction SEV], ImportationMev.[Type transaction], ImportationMev.[Sous-total avant taxes], ImportationMev.TPS, ImportationMev.TVQ, ImportationMev.[Montant total], ImportationMev.Duplicata
    FROM ImportationMev
    WHERE (((ImportationMev.[Type transaction])='R') AND ((ImportationMev.Duplicata)='N'));

    pour ce qui est de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & 1)
    pas d'erreur lors de l'exécution comme tu l'avais prédit, pas de mise à jour non plus (normal)...

    Merci !

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 323
    Points : 23 758
    Points
    23 758
    Par défaut
    Bonjour.

    Je répète ma question sur le type de numérique qu'est No Trans# Sev.

    Là on ne voit pas. Il faut aller sur le champ et regarder en bas de la liste.
    Logiquement ce devrait être un entier long.

    Vérifie dans ta source (le fichier Excel) qu'il n'y a pas un nombre stocké comme du texte.

    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.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour, C'est un réel double et pas de nombres stockés comme du texte

    Merci A+

    Aimerais-tu avoir la base ? Il faut juste que j'épure un peu car la base est très grosse...

  17. #17
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Et si tout simplement la requête n'appréciait pas le nom No Trans# Sev ?
    En effet, j'ai fait un essai sur requête avec ce nom de champ utilisé dans une fonction. (Gauche en l’occurrence). Erreur !
    Si j'enlève les espaces tout fonctionne.

    Personnellement je ne mets ni d'espace ni de caractères particuliers, hormis le '_' dans mes noms de champs, variables, fichiers...

    Titi95
    Un problème bien posé est à moitié résolu

  18. #18
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par titi95 Voir le message
    Et si tout simplement la requête n'appréciait pas le nom No Trans# Sev ?
    Je suis d'accord avec les explications de Titi95 : à la fin de cette page du support Microsoft, après une liste (non exhaustive) de mots réservés, vous pouvez trouver les caractères interdits dans un nom de champ ou d'objet.
    "#" y figure en bonne place.

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Bonjour, j'ai toujours le même problème, même après avoir enlevé le # (encore le même message d'erreur...)

    Voici la requête originale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMev = DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans# Sev] =" & [DonneesPourRapport].[NoFacture])
    WHERE (((DonneesPourRapport.NoFacture) In (select distinct [No Trans# Sev] from RFacturesRferDuMev)));
    Voici la requête modifiée (enlevé le # de la table importée/liée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DonneesPourRapport SET DonneesPourRapport.MontantMev = DSum("[Montant Total]","[RFacturesRferDuMev]","[RFacturesRferDuMev].[No Trans Sev] =" & [DonneesPourRapport].[NoFacture])
    WHERE (((DonneesPourRapport.NoFacture) In (select distinct [No Trans Sev] from RFacturesRferDuMev)));
    J'ai tenté de modifier la partie en gras (ligne 1 à droite) par CSTR([DonneesPourRapport].[NoFacture]) : Même problème...

    Encore merci !

  20. #20
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Bonsoir,
    si on regarde les impression d'écrans du post #14, on voit que les champs Montant total et sous-total avant taxes sont de type Texte court et ne peuvent pas être traités comme des montants. Il faudrait enlever le format monétaire dans le fichier Excel.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [AC-2013] Requête ajout -> erreur conversion de type
    Par dad68 dans le forum Access
    Réponses: 2
    Dernier message: 28/12/2017, 18h31
  2. Erreur conversion de type surr combo box
    Par clickandgo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/03/2011, 18h59
  3. [AC-2003] Erreur conversion de type, violations en fusion tables
    Par rjl dans le forum IHM
    Réponses: 7
    Dernier message: 19/08/2010, 17h01
  4. Erreur conversion de type - import fichier excel
    Par Greg84 dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 17h32
  5. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 16h25

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