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 :

Réinitializez un MaskEdit


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut Réinitializez un MaskEdit
    Bonjour,

    Voici mon soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Query_miseajour.ParamByName('num_dos_change').AsString := Edit_num_dos.Text;
    Query_miseajour.ParamByName('dossier_traite_change').AsString := Edit_traitement.Text;
    Query_miseajour.ParamByName('date_traitement_change').AsString := MaskEdit_date_traitement.Text;
    Query_miseajour.ExecSQL;
    Query_miseajour.close;
    Si MaskEdit_date_traitement.Text = '' dans l'application j'ai une erreur SQL générale
    Sinon si MaskEdit_date_traitement.Text <> '' et a donc son champ rempli alors la base de donnée access se met à jour correctement.

    MaskEdit a pour Masque !00/00/0000;1;de MaskEdit_date_traitement
    En gros, si je veux enlever une date et donc saisir ' / / ' dans le maskEdit, mon application plante


    num_dos_change, dossier_traite_change et date_traitement_change sont les paramètres de ma requête


    A noté aussi que j'ai mis le paramètredate_traitement_change en Chaîne de caractères car au format date j'ai une erreur SQL générale.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pourquoi tu ne passes pas par un datetimepicker au lieu d'utiliser un maskedit pour une date ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    les données saisies dans le MaskEdit_date_traitement doivent mettre à jour la base de données

    la navigation dans mon application actuatlise l'affichage du MaskEdit_traitement_date (principe de pointeur dans la base de données)


    Donc je ne sais pas si cela est possible avec un DateTimePicker.

    Un DateTimePicker peut il afficher une date de la BDD access?
    Un DateTimePicker peut il avoir sa valeur enregistrer dans la base de données?
    Pour les champs sans date, peut on avoir un DateTimePicker vierge?


    Merci ^^

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Le composant JvDbDateEdit de la JVCL fait ce que tu cherches à faire ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    erf Je n'ai pas trouvé ce composant

    (sinon s'il y avait une solution à mon problème initial je suis prenneur aussi)

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Autoriser les champs NULL dans ton champs ca devrait normalement régler le problème.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    j'ai pourtant bien autorisé les champs NULL (dans la BDD access), je pensais aussi que ça venait de là.

    En tout ca même avec un masque de type 00/00/0000;1; de MaskEdit, cela me renvoit un champ NULL qui ne peut pas remplacer mon champs non null

    snif je suis desespéré

  8. #8
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    l'erreur que j'ai est :

    Le projet project1.exe a provoqué une classe d'exception EDBEditError avec le message 'valeur d'entrée incorrecte. Utilisez Echap pour abandonner les modifications.' Processus stoppé. Utilisé le pas-à-pas etc. etc.

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    LE problème doit venir du fait que ton champs (dans la base) est un champs Date donc qu'il attend MM/DD/YYYY ou NULL)

    Avec un dateTimePiker tu peux faire comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query_miseajour.ParamByName('date_traitement_change').AsDateTime := DateTimePiker.Date;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Merci Malatar, cela marche nikel chrome

    Seulement vis à vis de mon application, cette date sélectionnée correspond à la date où le dossier a été traité / détruit .

    Dans le cas où le dossier n'est pas traité, j'aimerai que le DateTimePicker ne m'affiche rien ou bien une date du style (00/00/0000 que j'ai essayé à entrer dans la propriété date mais qui n'est pas une date valide) afin d'éviter les erreurs de traitement par un affichage "flou" de la date.

    Je cherche ^^

    @ bientôt

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Dans ta base de données entre la date 01/01/1899 par défaut (c'est la date la plus petite) avec une date comme celle ci tu sais que cela n'a pas été traité.
    Sinon il te faut le composant que je t'ai indiqué de la JVCL
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  12. #12
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    JVCL ?

    désolé suis débutant

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Tu la trouveras ici
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  14. #14
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Merci Malatar mais n'ayant aucun droit d'installation sur les postes de travail te l'administrateur réseau n'étant pas là, et bien il faudra que j'attende son retour pour faire avec la méthode du JVCL.

    Un autre problème m'est apparu :

    Lors de la modification des changements des valeurs dans mon DBGrid (les valeurs sont éditées et saisies dans les EDIT à côté du DBGrid), l'actualisation de l'affichage du résultat ne s'exécute que lorsque je relance la requête d'affichage du DBGrid.

    Ce que je voudrai, c'est que les valeurs une fois saisies et enregistrer dans les DBEdit, le DBGrid puisse se mettre à jour au même moment de l'enregistrement.

    Comment faire? j'ai bien essayé la méthode de "réappliquer" la requête d'affichage du DBGrid qui marche mais qui comporte comme inconvénient de me faire "remonter" sur la première ligne de mon DBGrid.

    VOilou je cherche ^^

    Et encore merci Malatar pour tes nombreuses réponses

  15. #15
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Vu que tu utilises une requete pour ta base de données, considère que c'est une vue de cette derniere à un instant T.

    Solution possible :

    1- tu sauvegardes un index ou une valeur significative des données que tu as ajouter/modifier
    2- Tu fais un Requery avec ta requete
    3- tu fais un locate pour te repositionner sur l'enregistrement avec la valeur significative ou l'index de l'enregistrement.

    Il y a peut être d'autres méthodes qui permettent de gérer cela mieux mais je ne les connais pas.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  16. #16
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    donc il faudrait faire de telle sorte que :

    [list]enregistrement de l'information dans la base de données[list]
    • affichage du DBGrid pas actualisé

    • mettre en mémoire la ligne sélectionnée du DBGrid

    • relancer la requête d'affichage

    • DBGrid actualisé

    • pointé sur la ligne en mémoire


    dans mon code du bouton d'enregistrement (événement click) j'en suis à (ne rier pas svp ^^) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Query_miseajour.ExecSQL;
    Query_miseajour.close;
    //mise en mémoire de la ligne courrante du DBGrid
    DBGrid_dos_min.SelectedRows.???????
    Button_afficherDBGrid.Click;
    //pointage à nouveau sur la ligne du DBGrid
    ???.????(???) := ???.???[?]

  17. #17
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      sTmp : String;
    begin
      ...
      // ton code de mise à jours
      ...
     
      sTmp := Query_De_La_Grid.FieldByName('Le_Champ_Référence').AsString;
      Query_De_La_Grid.Requery();
      Query_De_La_Grid.Locate('Le_Champ_Référence',sTmp,[loCaseInsensitive]);
    end;
    En gros, a toi de débuggé en fonction ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  18. #18
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    le requery ne fonctionne pas

    apparemment je n'ai pas ce composant ou cette expression dans la défile list de mes choix

  19. #19
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Requery c'est pour les composants Ado, test avec refresh
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  20. #20
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    avec refresh :


    "Opération impossible sur cette table, car elle n'est pas indéxé de façon unique"

    Snif

    Malatar à ma rescousse ^^


    Faut il que je créé une variable pour chaque champs indexé de la table concernée par l'enregistrement? ou bien des champs indexé qui apparaissent dans la requête d'affichage du DBGrid?

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

Discussions similaires

  1. MaskEdit pour saisir une adresse TCP/IP
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/01/2006, 23h04
  2. maskedit et exception
    Par deubal dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/11/2005, 17h22
  3. MaskEdit en parametre d'une procédure
    Par loci dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/09/2005, 18h25
  4. Comment changer le message d'erreur d'un MaskEdit...
    Par eponette dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/09/2005, 13h40
  5. Problème lors d'encodage dans un Maskedit
    Par panthere6 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/06/2004, 06h35

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