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 :

Type de données incompatible


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut Type de données incompatible
    Bonjour à tous,

    Je pédale un peu avec une requête selection simple a priori mais qui commence à me les c...

    Ma liste principale décrit des demandes avec pour chacune un tas d'information dont:
    - type de demande
    - date de saisie
    - date de réponse.

    Chaque type de demande a un délai théorique de réponse (date de réponse - date de saisie).
    Mon but est de faire resortir les demandes hors délais (en tenant compte des weekend, jours fériés ...).

    Jusque la j'utilisai 2 requêtes l'une derrière l'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) AS depassement, table_unique.Ref_W, table_unique.TypeDocument, table_unique.DateEnregistrementMSX, IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]) AS [DDC1-debut], IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]) AS [DDC1-fin], IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]) AS [DDC2-debut], IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]) AS [DDC2-fin], IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]) AS [DDC3-debut], IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]) AS [DDC3-fin], type_document.[suivi-delai]
    FROM table_unique INNER JOIN type_document ON table_unique.TypeDocument = type_document.[type_document-raccourci]
    WHERE (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.[suivi-delai])=Yes) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))=0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))=0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.[suivi-delai])=Yes) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.[suivi-delai])=Yes) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))<>0) AND ((type_document.[suivi-delai])=Yes) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null))
    ORDER BY JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) DESC;
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [docs hors delai-etape1].depassement, [docs hors delai-etape1].Ref_W, [docs hors delai-etape1].TypeDocument, [docs hors delai-etape1].DateEnregistrementMSX, [docs hors delai-etape1].[DDC1-debut], [docs hors delai-etape1].[DDC1-fin], [docs hors delai-etape1].[DDC2-debut], [docs hors delai-etape1].[DDC2-fin], [docs hors delai-etape1].[DDC3-debut], [docs hors delai-etape1].[DDC3-fin]
    FROM [docs hors delai-etape1]
    WHERE ((([docs hors delai-etape1].depassement)>0))
    ORDER BY [docs hors delai-etape1].depassement DESC;
    (je suis passé par 2 requêtes car le critère ">0" sur le champ "dépassement" n'a jamais fonctionné dans la première requête.

    Aujoud'hui j'ai fait des chamgements dans la table recensant les types de doc et notamment les délais associés.
    La première requête fonctionne bien,
    Le calcul de dépassement se fait bien, j'ai des valeurs positives et négatives.

    Mais la seconde requête n'aboutit pas:
    "type de données incompatible dans l'expression du critère"

    Quelqu'un a une idée ?

    Merci d'avance

    Vigg

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    il semble ne pas apprecié de comparer dépassement avec un entier... ta fonction jourOuvres te renvoie bien un integer ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2009
    Messages : 98
    Points : 115
    Points
    115
    Par défaut
    Essaye de faire une conversion explicite du style clng(depassement)
    Si tu as toujours la meme erreur, alors c'est que depassement est du type chaine de caratere avec un espace quelquepart

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Bonjour à tous et merci de votre aide,

    J'ai intégré Clng:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CLng([depassement]) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]
    WHERE (((CLng([depassement]))>0))
    ORDER BY CLng([depassement]) DESC;
    Le résultat est le même: "Type de données incompatible dans l'expression du critére".

    Une idée, mois je sèche ...

    Viggen.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut


    il faut que tu t'assures qu'il n'y a pas d'enregistrement à Null, voir Nz()
    D'autre part, il faut effectivement voir si toutes les valeurs sont bien des numériques ou assimilés numériques.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Ca doit être dans ces eaux là ...

    Si je fais tourner sans le critère ">0", ca fonctionne, sans champ vide (donc pas de null ?).

    La conversion du type de 'depassement' ne m'aide pas ...

    J'ai sauté le commentaire de Taoueret:
    "il semble ne pas apprecié de comparer dépassement avec un entier... ta fonction jourOuvres te renvoie bien un integer ? "

    Le truc est que je ne sais pas le voir,
    quelqu'un sait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Public Function JourOuvres(ByVal date1 As Date, ByVal Date2 As Date) As Long
        Dim DateDeb As Date, DateFin As Date
        If IsNull(date1) Or IsNull(Date2) Then GoTo JourOuvres_Erreur
        If Not IsDate(date1) Or Not IsDate(Date2) Then GoTo JourOuvres_Erreur
        date1 = DateSerial(Year(date1), Month(date1), Day(date1))
        Date2 = DateSerial(Year(Date2), Month(Date2), Day(Date2))
        If date1 = Date2 Then GoTo JourOuvres_Erreur
        DateDeb = date1
        DateFin = Date2
        If date1 > Date2 Then
            DateDeb = Date2
            DateFin = date1
        End If
        JourOuvres = CLng(DateFin) - CLng(DateDeb)
        If JourOuvres = 0 Then Exit Function
        DateDeb = DateDeb + 1
        Do
            If (Weekday(DateDeb, vbMonday) >= 6) Or (JourFérié(DateDeb) = True) Then JourOuvres = JourOuvres - 1
            DateDeb = DateDeb + 1
        Loop While DateDeb <= DateFin
        Exit Function
    JourOuvres_Erreur:
     JourOuvres = 0
    End Function
    Cette fonction renvoie-t-elle un integer ? (un numérique je suppose ...)


    Merci de votre réponse.

    Viggen

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    le type de retour d'une fonction est exprimé dans sa ligne de déclaration, après le As

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Function NomdeMaFonction () As TypedeRetour
    End Function

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    ok merci,

    Donc si j'ai tout saisi, le type de JoursOuvres est "Long Dim".

    Mais Google est un peu avare en infos pour le coup (ou je suis pas doué, ce qui n'est pas complètement faux).

    Une donnée "Long Dim" peut-elle être l'argument d'une soustraction ?

    Puisque depassement est le résultat d'une soustraction dont tous les arguments sauf un sont issus de la fonciton Jours Ouvres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    depassement: JourOuvres([DateEnregistrementMSX];Date())-[type_document]![délai]-JourOuvres((VraiFaux([table_unique]![DDC-delai_1-fin] Est Null;0;[table_unique]![DDC-delai_1-fin]));(VraiFaux([table_unique]![DDC-delai_1-debut] Est Null;0;[table_unique]![DDC-delai_1-debut])))-JourOuvres((VraiFaux([table_unique]![DDC-delai_2-fin] Est Null;0;[table_unique]![DDC-delai_2-fin]));(VraiFaux([table_unique]![DDC-delai_2-debut] Est Null;0;[table_unique]![DDC-delai_2-debut])))-JourOuvres((VraiFaux([table_unique]![DDC-delai_3-fin] Est Null;0;[table_unique]![DDC-delai_3-fin]));(VraiFaux([table_unique]![DDC-delai_3-debut] Est Null;0;[table_unique]![DDC-delai_3-debut])))
    Viggen

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    Long tout court

    essaie avec :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]
    WHERE (((CLng(Nz([depassement],0)))>0))
    ORDER BY CLng([depassement]) DESC;

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Merci !

    mais hélas le résultat est le même: type de données incompatibles ...

    et dès que j'enlève le critère positif sur depassment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai];
    ca marche ...
    sauf que j'en ai trop

    arf

    Viggen

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    Comme il y a utilisation d'une fonction, il est peut-êter possible de passer la partie du filtre en HAVING.

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]
    HAVING CLng(Nz([depassement],0))>0;

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Merci !

    cette fois le message d'erreur est:

    "Clause HAVING (CLng(Nz([depassement],0))>0) sans regroupement"

    ca t'aide ?

  13. #13
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    soyons fous :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]
    GROUP BY [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    HAVING CLng(Nz([depassement],0))>0;

  14. #14
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Ca devient complètement dingue, j'ai le tourni,

    mais elle résiste toujours, cf PJ,

    une autre idée de dingue ?

    Bon ap' en attendant
    Images attachées Images attachées  

  15. #15
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    on va repartir sur la requête de base :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai];

    et cette fois on le passe en sous requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM (SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]) As R1 WHERE r1.depassment>0;

  16. #16
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Donc je remplace la requête de base:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai];
    par la sous requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM (SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]) AS R1 WHERE r1.depassment>0;


    ?

  17. #17
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour, jpcheck ,

    J'ai lu en diagonale mais pourquoi

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT CLng(Nz([depassement],0)) AS depassment
             , [docs hors delai].Ref_W
             , [docs hors delai].TypeDocument
             , [docs hors delai].DateEnregistrementMSX
             , [docs hors delai].[DDC1-debut]
             , [docs hors delai].[DDC1-fin]
             , [docs hors delai].[DDC2-debut]
             , [docs hors delai].[DDC2-fin]
             , [docs hors delai].[DDC3-debut]
             , [docs hors delai].[DDC3-fin]
    FROM [docs hors delai]
    HAVING CLng(Nz([depassement],0))>0;


    Et pas un WHERE sachant qu'il n'y a pas de fonction d'agrégat ?


  18. #18
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    J'ai appliquer les 2 requetes l'une derriere l'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) AS depassement, table_unique.Ref_W, table_unique.TypeDocument, table_unique.DateEnregistrementMSX, IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]) AS [DDC1-debut], IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]) AS [DDC1-fin], IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]) AS [DDC2-debut], IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]) AS [DDC2-fin], IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]) AS [DDC3-debut], IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]) AS [DDC3-fin], type_document.délai
    FROM table_unique INNER JOIN type_document ON table_unique.TypeDocument = type_document.[type_document-raccourci]
    WHERE (((JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))))>0) AND ((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.délai) Is Not Null) AND ((table_unique.DateTraitement) Is Null)) OR (((JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))))>0) AND ((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))=0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))=0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.délai) Is Not Null) AND ((table_unique.DateTraitement) Is Null)) OR (((JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))))>0) AND ((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((type_document.délai) Is Not Null) AND ((table_unique.DateTraitement) Is Null)) OR (((JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))))>0) AND ((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))<>0) AND ((type_document.délai) Is Not Null) AND ((table_unique.DateTraitement) Is Null))
    ORDER BY JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) DESC;

    puis


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM (SELECT CLng(Nz([depassement],0)) AS depassment, [docs hors delai].Ref_W, [docs hors delai].TypeDocument, [docs hors delai].DateEnregistrementMSX, [docs hors delai].[DDC1-debut], [docs hors delai].[DDC1-fin], [docs hors delai].[DDC2-debut], [docs hors delai].[DDC2-fin], [docs hors delai].[DDC3-debut], [docs hors delai].[DDC3-fin] FROM [docs hors delai])  AS R1
    WHERE (((R1.depassment)>0));

    et ni l"une ni l'autre n'aboutit: type de données incompatible

  19. #19
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Décidément je patine.

    Je prend le truc dans un autre sens (mon raisonnement est à commenter):

    La variable "depassement" est le résultat d'un différence à 4 termes.

    Le résultat affiché est un chiffre, toutefois lorsque j'ajoute un critère sur la valeur numérique (>0 en l'occurence), l'erreur de type de données incompatible remonte.
    J'en conclue que la donnée "depassement" n'est pas d'un type permettant de comparer sa valeur numérique.
    L'objectif est donc de la forcer à adopter un statut compatible avec la comparaison de valeur numérique.

    Sur les conseils de jpcheck (que je remercie au passage), j'ai essayé de convertir l'ensemble de la différence en un entier long par la fonction "Clng"; sans succès ("type de données incompatible").
    J'ai même essayé de faire une différence d'entiers longs en appliquant Clng a chaque terme: même résultat ...

    "Depassement" est donc d'un type de donnée dont on ne peut pas retirer de valeur numérique.
    Ce qui est plus bizarre est qu'il peut être l'un des termes d'une addition et donner le bon résultat.
    Mais même sur ce résultat, on ne peut appliquer de critère portant sur sa valeur numérique ...

    Si quelqu'un a une autre piste j'achète ! (de ma reconnaissance éternelle)

    Merci d'avance

    Vigg

  20. #20
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    salut,
    aurais-tu des exemples de valeurs que tu sommes et manipules dans tes tables stp ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/08/2006, 18h10
  2. Types de données incompatibles lors d'une requête sous access
    Par RodEpsi dans le forum Bases de données
    Réponses: 32
    Dernier message: 21/07/2006, 16h51
  3. Réponses: 2
    Dernier message: 13/06/2006, 09h47
  4. Réponses: 3
    Dernier message: 22/05/2006, 20h23
  5. (Access) Type de données incompatible...
    Par kissmytoe dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/02/2006, 21h37

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