Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Bases de données
Bases de données Vos questions concernant les bases de données (BDE, Access, SqlServer...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 10h31   #1
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
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
Citation:
"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
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 11h14   #2
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 593
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 : 593
Points : 684
Points : 684
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
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 11h16   #3
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 252
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

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

Informations forums :
Inscription : juillet 2006
Messages : 9 252
Points : 13 355
Points : 13 355
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é !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 11h29   #4
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 593
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 : 593
Points : 684
Points : 684
Effectivement, merci ShaiLeTroll , TDateTimePicker.date est de type Tdate d'après l'aide de D7 :

Citation:
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.
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 22h57   #5
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : avril 2002
Messages : 1 051
Points : 2 785
Points : 2 785
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 07/01/2013, 13h21   #6
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
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
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 16h07   #7
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 76
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 : 76
Points : 114
Points : 114
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 .
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2013, 19h34   #8
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
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
medreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 21h10   #9
MIWAN
Membre du Club
 
Inscription : mars 2007
Messages : 96
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 96
Points : 64
Points : 64
n'as tu pas par hasard déclaré le champs 'date' comme string ?
si non voir le fichier joint
Fichiers attachés
Type de fichier : rar medreg.rar (11,4 Ko, 16 affichages)
MIWAN est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/01/2013, 20h28   #10
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
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;
medreg est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/03/2013, 15h26   #11
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
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
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2013, 19h17   #12
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 76
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 : 76
Points : 114
Points : 114
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
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2013, 07h58   #13
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
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
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2013, 15h17   #14
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 76
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 : 76
Points : 114
Points : 114
bon jour
Citation:
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
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2013, 15h02   #15
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
Merci Tarek pour ta réponse.

je cherche aussi d'autres types de solutions?

j'attend votre aide .
Merci
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2013, 10h05   #16
tourlourou
Modérateur
 
Avatar de tourlourou
 
Homme Yves Lemaire
Biologiste ; Progr(amateur)
Inscription : mars 2005
Messages : 1 721
Détails du profil
Informations personnelles :
Nom : Homme Yves Lemaire
Âge : 50
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : mars 2005
Messages : 1 721
Points : 3 329
Points : 3 329
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 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits
tourlourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2013, 10h27   #17
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
Merci tourlourou, mais j'ai pas vraiment compris comment faire avec cette boucle.
pouvez vous me donner quelques étapes. .
merci
yayas est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 27/03/2013, 12h42   #18
tourlourou
Modérateur
 
Avatar de tourlourou
 
Homme Yves Lemaire
Biologiste ; Progr(amateur)
Inscription : mars 2005
Messages : 1 721
Détails du profil
Informations personnelles :
Nom : Homme Yves Lemaire
Âge : 50
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : mars 2005
Messages : 1 721
Points : 3 329
Points : 3 329
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 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits
tourlourou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/03/2013, 11h47   #19
yayas
Invité de passage
 
Femme
Inscription : novembre 2012
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Femme

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

Informations forums :
Inscription : novembre 2012
Messages : 8
Points : 1
Points : 1
Merci tourlourou; je vais l'essayer.
merci
yayas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2013, 23h52   #20
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 76
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 : 76
Points : 114
Points : 114
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
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h20.


 
 
 
 
Partenaires

Hébergement Web