Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 21
  1. #1
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut inserer une date (datetimepicker) dans une bd

    bonjour
    je travaille avec Delphi7 / sql server2008 pour développer une application de gestion.
    j'ai utilisé des Datetimepicker pour les champs date. pour insérer dans la base de donnees las dates, j'ai utilisé le code:
    Code :
    1
    2
    ADOTable1.fieldbyname('monchamp1').Value:= datetimepicker1.date;
    ADOTable1.fieldbyname('monchamp2').Value:= datetimepicker2.date;..
    ca marche pas, ca donne l'erreur
    "echec de la conversion de la date et/ ou l'heure a partir d'une chaine de caracteres."
    j'attend votre aide. merci d'avance

  2. #2
    Membre émérite Avatar de Charly910
    Homme Profil pro Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Nom : Homme Charly
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 717
    Points : 817
    Points
    817

    Par défaut

    Bonjour,

    je n'utilise pas Datetimepicker qui est un composant VB (?) mais le message me semble dire qu'il y a soit un problème de formats incompatibles dans les dates, soit que tes champs ne sont du bon type (date ou String ?)

    regarde ce lien :

    DateTimePicker Format

    A+

    Charly

  3. #3
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 025
    Points : 12 830
    Points
    12 830

    Par défaut

    Evite le TADOTable
    Utilise un TADOQuery et Parameters->ParamByName, et force le DataType à ftDate puis affecte le Value
    Tu as plein de sujet sur le forum qui traite cela

    Le TDateTimePicker est un control windows au même titre que le TComboBox, TListView, TTreeView ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  4. #4
    Membre émérite Avatar de Charly910
    Homme Profil pro Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Nom : Homme Charly
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 717
    Points : 817
    Points
    817

    Par défaut

    Effectivement, merci ShaiLeTroll , TDateTimePicker.date est de type Tdate d'après l'aide de D7 :

    TDate représente un type spécial de valeur TDateTime sans partie décimale. Une valeur TDate représente le nombre de jours qui se sont écoulés depuis le 30 décembre 1899.

  5. #5
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 500
    Points
    3 500

    Par défaut

    Bonjour,

    Evitez la propriété Value. Elle est de type variant (valeur dont le type peut changer à l'exécution), va accepter tout ce que vous lui affectez quel qu’en soit le type (integer, string, etc, type structuré et pointeur exclus toutefois), mais dès le renvoi vers la base de données, la conversion de type va très souvent échouer...

    En écrivant ce qui suit, vous éviterez le problème :
    Code :
    1
    2
    ADOTable1.FieldByName('monchamp1').AsDateTime := datetimepicker1.date;
    ADOTable1.FieldByName('monchamp2').AsDateTime := datetimepicker2.date;
    Ensuite, comme l'a dit @ShailLeTroll, évitez les TTable avec une base client/serveur. Si votre base à des millions d'enregistrements, à l'ouverture de la table, vous allez ramener TOUTES les lignes vers le client : saturation de la mémoire, lenteur pour obtenir et afficher les données, surcharge du serveur...
    Philippe.

  6. #6
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    merci. ça a marché pour le datetimepicker .
    mais lors de la navigation avec le dbnavigator, les datestimepicker ne retournent pas la date du champs de la base de données (c évident). je n'arrive pas à résoudre ce pb

  7. #7
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut les datestimepicker ne retournent pas la date du champs de la base de données

    bon jour
    les datestimepicker ne retournent pas la date du champs de la base de données
    c'est normale puisque datestimepicker n'est pas destiner a une table

    comme dis Mr ShaiLeTroll :

    Le TDateTimePicker est un control windows au même titre que le TComboBox, TListView, TTreeView ...

    la meilleur solution est d'utiliser dbedit pour l'affichage
    mai en peu aussi utiliser datetimepicker1 en ajoutent l'evenement AfterScroll a votre adotable comme suite



    Code :
    1
    2
    3
    4
    procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
    begin
       datetimepicker1.date:=ADOTable1.FieldByName('monchamp1').AsDateTime;
    end;
    c'est a dire vous faite un rafrechissement votre datetimepicker a chaque deplacement du pointeur de la table

    bon courage .

  8. #8

    Inscrit en
    juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 82
    Points : -32
    Points
    -32

    Par défaut

    Citation Envoyé par yayas Voir le message
    bonjour
    je travaille avec Delphi7 / sql server2008 pour développer une application de gestion.
    j'ai utilisé des Datetimepicker pour les champs date. pour insérer dans la base de donnees las dates, j'ai utilisé le code:
    Code :
    1
    2
    ADOTable1.fieldbyname('monchamp1').Value:= datetimepicker1.date;
    ADOTable1.fieldbyname('monchamp2').Value:= datetimepicker2.date;..
    ca marche pas, ca donne l'erreur


    j'attend votre aide. merci d'avance
    voir aussi le composant raize componnent (RC5)
    y compris DBdatetimepicker
    bon chance

  9. #9
    Membre du Club
    Inscrit en
    mars 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 96
    Points : 64
    Points
    64

    Par défaut

    n'as tu pas par hasard déclaré le champs 'date' comme string ?
    si non voir le fichier joint
    Fichiers attachés Fichiers attachés

  10. #10

    Inscrit en
    juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 82
    Points : -32
    Points
    -32

    Par défaut

    Citation Envoyé par MIWAN Voir le message
    n'as tu pas par hasard déclaré le champs 'date' comme string ?
    si non voir le fichier joint
    les deux codes sa marche bien
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ADOQuery1.Active:=true;
    ADOTable1.Active:=true;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    DataSource1.DataSet:=ADOQuery1;
    adoquery1.Edit;
    //adoquery1.Append;
    adoquery1.fieldvalues['D_ate']:= datetimepicker1.date;
    adoquery1.fieldvalues['Date2']:= datetimepicker2.date;
    adoquery1.Post;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    DataSource1.DataSet:=ADOTable1;
    ADOTable1.Edit;
    ADOTable1.fieldvalues['D_ate']:= datetimepicker1.date;
    ADOTable1.fieldvalues['Date2']:= datetimepicker2.date;
    ADOTable1.Post;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    ADOQuery1.Active:=False;
    ADOTable1.Active:=False;
    end;

  11. #11
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    salut.
    MERCI à tous pour votre aide. J'ai utilisé le ADOQuery et les DBEdit pour la date. ça marche tres bien. (je m'excuse pour le retard)
    par contre j'ai un pb au niveau de mes statistiques: je n'arrive pas à formuler la requête permettant d'avoir le nombre de personnes (table de personne) global et selon des critères service, sexe , diplome, situation familiale...

    mon code :
    j'utilise une requête pour avoir le nombre d'hommes :
    Code :
    1
    2
    3
    rqt.sql.clear;    
    rqt.sql.add ( 'SELECT COUNT(*) AS montotal from personne WHERE Sexe=''Homme''');    
    rqt.active;= true;
    puis un dbedit qui a le datafield : montotal

    en cliquant sur un button, ça marche.
    ce que je veux c'est avoir toutes les stats en une seule interface et directement (pas trop de buttons).

    merci

  12. #12
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut

    bon jour
    pour une simple réponse
    utiliser a chaque requette son propre adoquery et ecrire directement votre requette dans l'adoquery pas besoin de ça
    Code :
    1
    2
    3
    rqt.sql.clear;    
    rqt.sql.add ( 'SELECT COUNT(*) AS montotal from personne WHERE Sexe=''Homme''');    
    rqt.active;= true;
    vous ecrivez seulement
    ça
    Code :
    'SELECT COUNT(*) AS montotal from personne WHERE Sexe='Homme'
    dans la proprieté SQL de votre adoquery
    et associer a chaque requette une dbedit
    et noublie pas de metre la propriete active de chaque adoquery à true a chaque ouverture de votre fenétre onactivate pour le rafrechisement des donneés

    bon courage

  13. #13
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonjour Tarekk,
    merci pour ta réponse. Est ce il ya la possibilité d'e ne pas utiliser autant d'adoquery que mes critères de sélection , seulement un adoquery et changer le SQL ou ...


    Merci

  14. #14
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut

    bon jour
    Est ce il ya la possibilité d'e ne pas utiliser autant d'adoquery que mes critères de sélection , seulement un adoquery et changer le SQL ou ...
    oui mais utiliser autant de programmation je vous propose d'utilisez des 'edit' au lieux de dbedit et apres chaque requete affecter le resultat dans le caption de edit
    Code :
    etit1.caption := (le resultat sql)
    aprés la conversation de type de donneé bien sure inttostr ....
    je pense que la 1ere solution est plus pratique que celle ci .
    bon courage.. yayas

  15. #15
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Merci Tarek pour ta réponse.

    je cherche aussi d'autres types de solutions?

    j'attend votre aide .
    Merci

  16. #16
    Modérateur
    Avatar de tourlourou
    Homme Profil pro Yves Lemaire
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 139
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves Lemaire
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 139
    Points : 4 118
    Points
    4 118

    Par défaut

    Bonjour,

    Pourquoi pas une boucle ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    for i:=0 to StringListMesRequetes.Count-1 do
    begin
      rqt.sql.clear;    
      rqt.sql.add ( StringListMesRequetes[i] );    // ou  rqt.sql.Text := StringListMesRequetes[i] );
      rqt.active;= true;
      StringListMesRésultats.Add( DBEdit.Value {?? enfin, la chaîne contenant le champ résultat} );
    end;
    et chargement de la liste des requêtes à partir d'un fichier ou de chaînes en ressources ?
    Delphi 5 Pro et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  17. #17
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Merci tourlourou, mais j'ai pas vraiment compris comment faire avec cette boucle.
    pouvez vous me donner quelques étapes. .
    merci

  18. #18
    Modérateur
    Avatar de tourlourou
    Homme Profil pro Yves Lemaire
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 139
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves Lemaire
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 139
    Points : 4 118
    Points
    4 118

    Par défaut

    Si j'ai bien compris, vous souhaitez obtenir plusieurs statistiques à patir de l'appui sur un minimum de boutons, chaque chiffre étant issu d'une requête SQL.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var
      StringListMesRequetes, StringListMesRésultats: TStringList;
     
    begin // FormCreate, par exemple (ne pas oublier de détruire les StringList au FormDestroy)
      StringListMesRésultats := TStringList.Create;
      StringListMesRequetes := TStringList.Create;
      // puis ajout des reqêtes une à une
      StringListMesRequetes.Add( 'SELECT COUNT(*) AS montotal from personne WHERE Sexe=''Homme''' );
      StringListMesRequetes.Add( 'SELECT COUNT(*) AS montotal from personne WHERE Sexe=''Femme''' );
      // etc.
      // ou à partir d'un fichier
      StringListMesRequetes.LoadFromFile('C:\MesRequetes.txt');
    end;
     
    // code OnClick du bouton "statistiques"
      StringListMesRésultats.Clear
      for i:=0 to StringListMesRequetes.Count-1 do
      begin
        rqt.sql.clear;    
        rqt.sql.add ( StringListMesRequetes[i] );    // ou  rqt.sql.Text := StringListMesRequetes[i] );
        rqt.active;= true;
        // ajout du résultat (champ MonTotal lié à un DBEdit) à une liste des statistiques, parallèle à celle des requêtes 
      StringListMesRésultats.Add( DBEdit.Text );
      end;
    ensuite, à vous d'exploiter la liste des statistiques
    Delphi 5 Pro et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  19. #19
    Invité de passage
    Femme Profil pro
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Merci tourlourou; je vais l'essayer.
    merci

  20. #20
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut

    bon jour
    on peux aussi utiliser une seule requet selon des critères d'un champ

    exp: sexe
    Code :
    1
    2
    3
    SELECT sexe COUNT(*) 
    FROM personne
    GROUP BY  sexe
    exp diplome
    Code :
    1
    2
    3
    SELECT diplome, COUNT(*) 
    FROM personne
    GROUP BY  sexe
    ...
    bon courage

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •