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

Développement Windows Discussion :

Champ Date time = Textbox


Sujet :

Développement Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut Champ Date time = Textbox
    Bonjour , j'ai une petit problème , j'ai une requête avec une condition sur un Champ Date time , voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select P.Projet,count(Remise) AS Nbre_Remises from Remise ,[Statsagents].[dbo].[Projet] AS P
    where DateRemise= '04/09/2017'AND P.EtapeTraitement='AWB_CHQ_ALLER' group by P.Projet
    quand j'utiliste la conversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where CONVERT(VARCHAR, DateRemise, 120) like '%" + TextBox13.Text + "%'
    le temps d'execution de la requête est très grand , mais quand j'utilise la requête comme ca dans Sql server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where DateRemise= '04/09/2017'
    ca ne prend pas beaucoup de temps , comment puis-je indiquer au Textbox de prendre la valeur Date time comme je fais sur sql server ? parceque le textbox prend juste des string .


    Merci d'avance

  2. #2
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    c'est bon j'ai résolu le problème en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DateRemise = '" & TextBox13.Text & "'
    Merci , même si personne ne m'a aidé

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par andyajram Voir le message
    Merci , même si personne ne m'a aidé
    Mais de rien

    Plus sérieusement, il faut tout d'abord nous laisser le temps d'intervenir.

    Ensuite, être dans le bon forum, ça aide. Ici, le forum accès aux données me semble plus approprié pour des requêtes SQL.

    Enfin, il faut bien comprendre que les deux codes ne sont pas équivalent. Le premier est lent car il utilise l'opérateur LIKE avec le joker % en début de chaîne. Cela signifie que les index ne sont pas utilisable et qu'il va donc être nécessaire de parcourir toute la table. Avec l'opérateur d'égalité, les index sont utilisables.

    De plus, dans la première requête toujours, tu convertis la colonne en texte pour faire le recherche. Dans la seconde, tu convertis la chaine en date pour faire la recherche. Bref, dans un cas, tu convertis une valeur, dans l'autre, tu convertis x valeur sans possibilité d'utiliser les index (x étant le nombre d'enregistrement de la table).

    Pour terminer, il est très fortement déconseiller de construire à la mano des requêtes via des concaténations de chaînes, encore plus quand les données proviennent de l'utilisateur ! Il vaut mieux utiliser des requêtes paramétrées. C'est beaucoup plus sécurisés, et plus performant aussi.

  4. #4
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    il est lent a cause du like oui mais quand j'ai essayer = dans management studio il n'est plus lent , mais pour indiquer le champ datetime a partir du textbox ca ne marché pas a cause du = parceque il prend la valeur string qui n'est pas égale au Date time donc voila

  5. #5
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    je suis débutant , du coup je ne sais pas ce qui est sécurisé ou pas c'est pour ça je fais tous les essais jusqu’à ce que je trouve ce qui est mieux

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par andyajram Voir le message
    il est lent a cause du like oui mais quand j'ai essayer = dans management studio il n'est plus lent , mais pour indiquer le champ datetime a partir du textbox ca ne marché pas a cause du = parceque il prend la valeur string qui n'est pas égale au Date time donc voila
    Non. Lors de la comparaison string / datetime, SQL Server converti la chaîne de caractères en date (s'il n'y arrive pas, erreur), et effectue ensuite la comparaison sur les dates. Que la date vienne d'un textbox ou non ne change rien. Lors de l'écriture d'une requête SQL, la date prendra la forme d'une chaîne de caractères (que SQL Server convertira).

    L'utilisation de requête paramétrée permet de s'abstraire de ce genre de considération. Tu lui passes un objet DateTime, il s'occupe tout seule de le convertir comme il faut. De plus, c'est sécurisé car prévient les injections SQL. Je t'invite donc à regarder de ce côté. Par exemple, un de nos membres avait écrit un article sur ce sujet

  7. #7
    Membre très actif
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Par défaut
    d'accord je vais voir , merci pour tes conseils , ca me sera utile par la suite

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/09/2013, 20h45
  2. [AC-2007] Utilisation du champ date time picker sous access 2007
    Par mondanikoffi dans le forum IHM
    Réponses: 0
    Dernier message: 13/06/2013, 23h13
  3. vb.net 2010 + access => requête sur champ date/time
    Par jojo1284 dans le forum VB.NET
    Réponses: 18
    Dernier message: 09/05/2012, 17h46
  4. Réponses: 1
    Dernier message: 13/09/2010, 16h11
  5. comparer des champs date time
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/01/2005, 15h02

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