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

Bases de données Delphi Discussion :

probleme avec le locate (les dates)


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut probleme avec le locate (les dates)
    Bonjour!
    excuser moi j'ai un nouveau avec ma procedure où j'utilise un Locate sur deux dates.
    Je me souviens la dernière fois , il fonctionnait bien, mais depuis un certain temps , il ne fonctionne plus très bien.
    le but de la procedure , c'est de rechercher dans la table s'il existe deux dates, et s'ils existent , il doit sortir sinon il enregistre les nouvelles dates .
    voici mon code:
    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
    procedure TMvtJourForm.histoClick(Sender: TObject);
    var resultat :variant;
    begin
      //dDate11:=FormatDateTime('dd/mm/yyyy',DateJour1.Date);
      //dDate12:=FormatDateTime('dd/mm/yyyy',DateJour2.Date);
      resultat:=DM.tbHisto_inout.Locate('DATEDEB;DATEFIN',VarArrayOf([DateJour1.Date,DateJour2.Date]),[]);
      if resultat then
      begin
        MessageDlg('        Cette date existe déjà !!!        ',
        mtInformation,[mbOk],0);
        exit;
      end;
      DM.tbHisto_inout.Insert;
      DM.tbHisto_inoutDATEDEB.Value:=DateJour1.Date;
      DM.tbHisto_inoutDATEFIN.Value:=DateJour2.Date;
      DM.tbHisto_inoutTOT_IN.Value:=StrToFloat(EditTEntrees.Text);
      DM.tbHisto_inoutTOT_OUT.Value:=StrToFloat(EditTSorties.Text);
      DM.tbHisto_inoutSOLDE.Value:=StrToFloat(EditSoldeJ.Text);
      DM.tbHisto_inout.Post;
      DM.tbHisto_inout.Refresh;
    end;
    Normalement ça marche sans formater les dates, mais puisqu'il ne marchait plus , j'ai formaté les dates, mais toujours rien, alors j'ai laissé les dates de depart.
    DATEDEB et DATEFIN sont les champs(date) de ma table; et DateJour1 et DateJour2 sont mes deux DateTimePicker .
    Lorsque je l'execute, en faisant l'essai j'enregistre d'abord deux dates , et après lorsque j'enregistre les mêmes dates, il ne m'affiche pas le message(cette date existe deja) , il enregistre la même date , il ne m'affiche même pas de message d'erreur pour le code.
    Alors je ne sais plus que faire.
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 143
    Points : 41 314
    Points
    41 314
    Billets dans le blog
    63
    Par défaut
    je sais que ça peut être idiot mais as-tu vérifier les heures inscrites dans tes
    champs date ?

  3. #3
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Ton Locate va se positionner sur l'enregistrement où DATEDEB est égal à DateJour1.Date et DATEFIN à DateJour2.Date. Il na va pas filtrer ton jeu de données avec les enregistrements qui se situent dans l'intervalle. Si c'est ce que tu veux faire, c'est la propriété Filter qui t'intéresse.

    Mais je suis peut-être tout à fait à côté de la question

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    mon Locate a pour but de verifier et comparer les dates dans la table.
    DATEDEB avec Datejour1 et DATEFIN avec Datejour2 , il doit regarder dans la table si ces dates existent deja , et si elles existent , il doit sortir , sinon il encode les nouvelles dates. Je ne sais pas si le Filter est approprier pour faire cela, normalement le Filter sert à filtrer . Je vais essaye avec filter et voir si ça marche.
    Merci pour votre aide

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut loPartialKey
    as tu essayé avec l'option loPartialKey

    Comme SergioMaster j'aurai tendance à penser que dans la table tu as par exemple 38956,42 et pas 38956

    Essaye de faire un First, Next sur la table pour qu'il te retourne les dates dans un datetime pour pouvoir les lire...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    je suis entrain d'essayer l'option loPartialkey pour resourdre mon probleme de recherche sur deux dates dans ma table , mais je ne m'y connais pas bien.
    voici mon code:
    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
      var
      LocateSuccess: Boolean;
      SearchOptions: TLocateOptions;
    begin
      //rechercher les dates
      if (DM.tbHisto_inoutDATEDEB.Value = DateJour1.Date)and
         (DM.tbHisto_inoutDATEFIN.Value = DateJour2.Date) then
      begin
        with DM.tbHisto_inout do
        begin
          SearchOptions := [TLocateOptions];
          LocateSuccess := Locate('DATEDEB;DATEFIN', VarArrayOf([DateJour1.Date,DateJour2.Date]), SearchOptions);
        end;
        if not LocateSuccess then
           begin
             MessageDlg('        Cette date existe déjà !!!        ',
             mtInformation,[mbOk],0);
             exit;
           end;end;
    il me dit que TLocateOptions et TLocateOptions ne sont pas declarés .
    Merci pour votre aide.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    je pense que la solution se trouve un peu plus bas sur le forum à:
    [Résolu] recherche date du jour
    regardes le dernier post de Malatar!

    à plus!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci banban54 , je suis allé et j'ai decouvert que je devais declarer DB dans USES , et maintenant ça marche.
    j'espère que je n'aurais plus de problemes avec cela.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/03/2007, 21h45
  2. Réponses: 7
    Dernier message: 12/01/2007, 11h09
  3. [onKeydown] Probleme avec pour detecter les majuscules des minuscules
    Par magnus2005 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/09/2006, 22h48
  4. [DTS] Problème avec clause WHERE sur Date
    Par bibou dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 28/06/2006, 12h18
  5. Probleme avec DateDiff pour les années....
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 27/03/2006, 09h19

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