Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pb date différente une fois dans la base de donnéee [ Base de données / Access ] (yotamanga)

lundi 16 avril 2007 à 11:33:53 | pb date différente une fois dans la base de donnéee

yotamanga

Bonjour, je viens chercher de l'aide auprès de vous. Je début en delphi.
Voici mon probleme :

j'ai une date que je veux insérer dans un base de données [access]. L'insertion se fait mais il y a un truc qui va pas.
a la place d'avoir la date du jour ( par exemple) j' ai cela : 30/12/1899 00:02:52   oO;
C'est assez bizarre car lorsque j'affiche la date sur delphi cela me donne bien la date du genre : 16/04/2007 .
Mon champ date_injection est en date,abrégée sous [access]


voila la procédure d'insertion

procedure TInjection.Insert(date : TDate);

begin
agenda.adq.SQL.Clear ;
agenda.adq.SQL.Add('Insert into injection (date_injection) Values(' + FormatDateTime('dd/mm/yyyy',date) +')');
agenda.adq.ExecSQL;
agenda.adq.Close ;
end;

En espérant votre aide, cordialement , Yota

lundi 16 avril 2007 à 11:55:25 | Re : pb date différente une fois dans la base de donnéee

Loda

Membre Club
salut,

je suis pas baléze en BD, mais je trouve ton problème curieux.

c'est bizarre, on dirait un problème de format de date ou une confusion entre time/now ou DateToStr/TimeToStr (vu que "0.0" en date Delphi c'est le 30/12/1899) mais c'est pas le cas (vu que tu utilise FormatDateTime et que le type access commence à l'année 100).

pourrais-tu ajouter:

outputdebugstring(pchar(floattostr(date)));
outputdebugstring(pchar(FormatDateTime('dd/mm/yyyy',date)));
ou
mem1.lines.add(floattostr(date));
mem1.lines.add(FormatDateTime('dd/mm/yyyy',date));

avant ta requet (SQL.Clear) et nous donner la sortie?

sinon, pour faire un test, essayer d'ajouter un champs de type string dans ta BD et de sauver ta date comme string. (juste pour voir de quel côté est le problème)

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

lundi 16 avril 2007 à 12:34:03 | Re : pb date différente une fois dans la base de donnéee

yotamanga



 merci pour la réponse rapide

Pour le memo, cela donne :
mem1
39192,5172388542
20/04/2007

Pour l insertion dans un champ de type string sa donne :

sans changer le code d'insertion:
3,23866467364225E-03
en changeant le  code d'insertion en le mettant en string : (DateToStr(date)) :
3,23866467364225E-03
enfin la meme chose lol


lundi 16 avril 2007 à 12:37:42 | Re : pb date différente une fois dans la base de donnéee

yotamanga

hum logiquement cela devrait donner ='20/04/2007'
>_< je comprend plus rien

lundi 16 avril 2007 à 12:45:12 | Re : pb date différente une fois dans la base de donnéee

jelume

Bonjour

je vais me répéter encore une fois :-) mais il est tellement plus simple d'utiliser les parameters.
Sinon, le format de date pour access n'est sans doute pas celui que tu utilises.
Regardes dans ta table, le format du champ date.
Ou éventuellement, testes directement dans ton code delphi le formatage de la date en YYYY/mm/dd

J-L

lundi 16 avril 2007 à 13:02:18 | Re : pb date différente une fois dans la base de donnéee

yotamanga



merci pour la réponse !
quand je change mon code delphi avec :YYYY/mm/dd
cela donne dans la base de donée :
17/01/1900 14:00:00 >_<

mon champ dans ma base est en "Date, abrégé" ce qui donne, cela access , jj/mm/aaaa
pourtant j obtiens une date et une heure ce qui correspondrait au format "Date, complet ">_< mais pourtant  le champ est bien en date abrégé >_<

j vais me renseigner sur les parameter ( euh je connais pas comment cela s'utilise)

lundi 16 avril 2007 à 13:15:13 | Re : pb date différente une fois dans la base de donnéee

Loda

Membre Club
re,
"logiquement cela devrait donner ='20/04/2007'" : oui.
donc, tu t'es planté lors de ton test. Vérifie sur quel champs (et de quel type) tu sauve ton string de test. Stp, donne nous le bout de code utilisé.

Aussi, dans ton insert, essaye juste de remplace formatDateTime par DateToStr.(au cas ou c'est un problème de format régional)

sinon, jelume a raison. les paramètres (adq.parameters) peuvent résoudre (et simplier) bien des problèmes. (j'ai résolu un problème de " / : grâce à ce même conseille venant également de lui.)

A part ça, dans bcp d'exemple du net, les date sont "quoted" avec #  genre   #20/121/1900#.
(j'en sais pas plus)

"Mon champ date_injection est en date,abrégée sous [access]" C'est quoi ça? je n'ai pas de format "date abrégée" sur mon access. C'est un format d'affichage? ou de stockage?

Loda

PS: on est le 16 aujourd'hui, pas le 20. ;-)

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

lundi 16 avril 2007 à 13:19:49 | Re : pb date différente une fois dans la base de donnéee

jelume

un truc dans ce genre là :

agenda.adq.SQL.Clear ;
agenda.adq.SQL.Add('Insert into injection (date_injection) Values(:P)' ;
agenda.adq.Parameters.CreateParameter('P', ftDate, pdInputOutput, SizeOf(TDatetime), nil)
agenda.adq.Parameters[0] := LaDate
agenda.adq.ExecSQL;
agenda.adq.Close ;


lundi 16 avril 2007 à 14:07:06 | Re : pb date différente une fois dans la base de donnéee

yotamanga


"Aussi, dans ton insert, essaye juste de remplace formatDateTime par DateToStr.(au cas ou c'est un problème de format régional)" , cela ne mache pas nan plus.

Pour mon champ date_injection :
types de données  : date/heure
format :date, abrégeée -19/04/1994
apres je pense que c 'est pour le stockage enfin je ne m y connais pas en access j suis plus php/mysql ^^

Pour le test d'affichage :
agenda.date.DateTime := now;
agenda.infooj.Caption := jour[DayOfWeek(agenda.date.DateTime)]+'  '+DateToStr(agenda.date.DateTime);


j'essaie  de me debrouiller avec parameter mais je suis pas doué >_<
mais un grand merci pour vos réponses.



lundi 16 avril 2007 à 15:18:48 | Re : pb date différente une fois dans la base de donnéee

Loda

Membre Club
re,

ton code de test d'affichage m'as l'air correct...

je vois pas. dsl. essai de chager tes format de date sous access.

sinon les parametres, en deux mots:
-c'est  une list de variant nommées
- tu les accede par nom (le plus facile je pense)
- tu dois les ajouter à la list avant de faire la requete. (createParam)
- Ils restent dans la lit de param jusqu'a que tu les effaces. (inutile de les crée à chque requete)
- cela permet (souvent) de conserver la requete sql ("insert ....") (vu que les partie changeante sont justement les parametres)

a+,

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.


1 2

Cette discussion est classé dans : base, date, agenda, injection, adq


Répondre à ce message

Sujets en rapport avec ce message

MonthCalendar [ par yannba ] Savez-vous coment à partir d'une base de donnée access, je peux cocher dans mon composant la "cellule". Je m'explique : Dans ma base de donnée, j'ai p comparaison de deux date dans une base de donnée [ par HAFTARIFOUAD ] Bonjour tt le monde ;-) <font face DATE SYSTEM [ par spacemiomio ] salut a tous petite question a 2 balle :est t'il possible de recuperer l'heure systeme d 'un pc sur un reseaux en connaisant son adresse genre : //mon actualisation automatique du code dans une base de donnée [ par silla ] salut à tous j'ai un problème pour actualiser un code dans une table achat(code; date; heure; code-section;piece)en effet le code à la forme suivantec Probleme de selection [ par reysoft ] bonjourje veux selectionné les factures de chaque societe et chaque mois (entre 2 dates)    Query1.SQL.Clear;    Query1.SQL.Add('Select * from table1' Partager une base de donnée [ par chance2000 ] bonjour, voila je suis débutant dans la programmation delphi, j'ai crée une petite application sous delphi avec un SGBD paradox je veux savoir comment tri par base ou radix [ par zwyx ] Bonjour à tous,Je souhaite développer un algorithme de tri par base, ou tri radix. En effet, d'après ce que j'ai lu, il semble assez performant. Mais extraire le moi ou annee d'une date longe [ par dhsofa ] bonjour, j'ai un code qui donne le moi et l'annee d'une date longue exemple (10/11/2008)ce code est ecrit en clipper, est vous pouvez m'aidez de trans Etre a 2 - base sql - hostarea [ par cyber37 ] Salut a tous,J'ai fait un logitiel de pointage recement, qui permet de pointter les membres qui sonts venue a un entrainnement (sur bf) et il fonction


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.