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 :

Transformer resultat "Null" d'une requête en "0"


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Activités informatiques diverses
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Activités informatiques diverses
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 188
    Points
    188
    Par défaut Transformer resultat "Null" d'une requête en "0"
    Bonjour a tous.
    Ma requête ajout, basée sur deux tables comportant une relation incluant tous les enregistrement de la table de gauche et seulement ceux de la table de droite pour lesquels les champs joints sont égaux ajoute des enregistrement comportant une valeur nulle dans ma table destination à chaque enregistrement absent de la table de droite.
    J'ai besoin, pour des commodités de traitement obtenir la valeur 0 au lieu de "NULL".
    Pour cela j'ai écrit la fonction de conversion suivante:
    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
    Public Function ConvQte(ByVal Qte As Variant) As Variant
    'Cette fonction convertit les quantités nulles en 0
     
      On Error GoTo TrtErr
     
      If Not IsNull(Qte) Then
        ConvQte = Qte
      Else
        ConvQte = 0
      End If
     
      Exit Function
    TrtErr:
      Error Err 'Retour à la gestion  d'erreur de la procédure appelante
    End Function
    Malheurement, traitant plusieurs dizaines de milliers d'enregistrements et la fonction étant appelée à chaque enregistrement, le temps de traitement devient vite excessif.
    Avez vous une solution pour contourner ce problème?
    Merci, cordialement.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    avez-vous essayé directement dans votre requete sql la fonction NZ() ?
    Dans le QBE (avec le point-virgule) et en SQL mettre une <,> :

    Voir aide d'access pour plus de détails

    Philippe

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir,
    pourquoi ne pas mettre la valeur par défaut du champ dans la table à 0 pour les nouveaux enregistrements et s'il faut rattraper ceux déjà saisis une requête ou un recordset qui met la valeur par défaut à 0 pour ceux existants.

  4. #4
    Membre habitué
    Homme Profil pro
    Activités informatiques diverses
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Activités informatiques diverses
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 188
    Points
    188
    Par défaut
    Bonjour
    LE VIEUX a dit: pourquoi ne pas mettre la valeur par défaut du champ dans la table à 0 pour les nouveaux enregistrements.
    Cela est déjà fait, "NULL" n'est pas un résultat par défaut car la requête Ajout inscrit réellement "NULL".

    Par contre la fonction NZ fonctionne et donne des résultats encourageants en terme de vitesse, mais il faudra que j'en vérifie la rapidité de fonctionnement lorsque la base de données arrivera à son taux de remplissage courant.
    Merci à tous, mais je suis toujours preneur d'autres solutions.

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Et ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function ConvQte(ByRef Qte As Variant) As Integer
    'Cette fonction convertit les quantités nulles en 0
    On Error GoTo TrtErr
    ConvQte = Qte
    TrtErr:
    End Function
    Pas dit que ce soit plus rapide que Nz

  6. #6
    Membre habitué
    Homme Profil pro
    Activités informatiques diverses
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Activités informatiques diverses
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 188
    Points
    188
    Par défaut
    Bonjour.
    J'ai essayé la fonction NZ qui est beaucoup plus rapide que celle que j'avais écrite et j'ai ainsi gagné un temps non négligeable.
    Mon appli réelle comportant beaucoup plus de liaisons comme celle décrite, j'ai finalement opté pour effectuer un récapitulatif de tous les calculs dans une seul table que je met à jour à chaque ajout ou modification, ainsi la fonction NZ est utilisée uniquement lors de ces mises à jour et non plus dans plusieurs dizaines de requêtes.
    Merci à tous. Cordialement.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 31
    Points
    31
    Par défaut
    svp expliquer moi

    Citation Envoyé par PapouDomi Voir le message
    Bonjour a tous.
    Ma requête ajout, basée sur deux tables comportant une relation incluant tous les enregistrement de la table de gauche et seulement ceux de la table de droite pour lesquels les champs joints sont égaux ajoute des enregistrement comportant une valeur nulle dans ma table destination à chaque enregistrement absent de la table de droite.
    J'ai besoin, pour des commodités de traitement obtenir la valeur 0 au lieu de "NULL".
    Pour cela j'ai écrit la fonction de conversion suivante:
    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
    Public Function ConvQte(ByVal Qte As Variant) As Variant
    'Cette fonction convertit les quantités nulles en 0
     
      On Error GoTo TrtErr
     
      If Not IsNull(Qte) Then
        ConvQte = Qte
      Else
        ConvQte = 0
      End If
     
      Exit Function
    TrtErr:
      Error Err 'Retour à la gestion  d'erreur de la procédure appelante
    End Function
    Malheurement, traitant plusieurs dizaines de milliers d'enregistrements et la fonction étant appelée à chaque enregistrement, le temps de traitement devient vite excessif.
    Avez vous une solution pour contourner ce problème?
    Merci, cordialement.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2015, 02h43
  2. Réponses: 2
    Dernier message: 08/10/2009, 13h18
  3. [MySQL] Insérer résultat d'une requête : problème de quote
    Par maxime17s dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/12/2008, 04h42
  4. Resultat incorrect par rapport a une requête!
    Par cedlannoy dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 20/03/2008, 10h59
  5. Afficher le resultat de l'execution d'une requête sous forme d'un formulaire
    Par samirdannoune dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/07/2006, 19h21

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