cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 2010
-
8 juin 2008 à 10:59
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 2010
-
26 oct. 2008 à 15:06
Bonjour tout le monde;
je récupère des donnée d'une table (sur un serveur distant) sachant que j'ai des champs de type smalldatetime, et lorsque j'exporte le contenu de mon ADOQuery vers Excel je m'aperçois que j'ai des dates qui sont écrites sous la forme : JJ/MM/AAAA HH:MM:SS (exemple : "17/04/2008 21:59:00")et d'autres dates sont écrites sous la forme : MM/JJ/AAAA HH:MM (comme si en anglais) (exemple : "06/08/2008 04:02") sachant aussi que sur mon DBGRID, toutes les dates sont écrites de la même manière (JJ/MM/AAAA HH:MM:SS) et c'est la forme que je veux avoir dans toutes mes cellules Excel.
L'intérêt est que la date est en phase avec Excel, qui la convertit de lui même en date FR, en utilisant tout simplement les variables régionales de l'OS.
Garanti, ca marche !
Je viens de le tester en DELPHI 2005, avec Excel 2007, sous Vista....
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 20101 8 juin 2008 à 17:58
Bonjour,
en fait, j'ai exécuté en mode pas à pas et lorsque j'ai vérifier le contenu de mon ADODataSet1.FieldByName('date').AsString je l'ai trouvé eous le format : JJ/MM/AAAA HH:MM:SS, mais lorsque je l'envoie cers l'excel (vXLWorkbook4.WorkSheets['Feuil1'].Range['E'+inttostr(v)] :=ADODataSet1.FieldByName('date').asstring;)
ben ça me modifie le format en MM/JJ/AAAA HH:MM
mais le problème c'est que des fois ça me le fais et des fois ça passe normalement!!
Avez vous une idée la dessus?
Merci pour votre aide
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 8 juin 2008 à 19:46
bizarre ce truc..
essaie quand même çà :
DateTimeToStr(ADODataSet1.FieldByName('MonChampDate').AsDateTime);
evite aussi de nommer des champs 'date' car c'est un mot réservé..
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 20101 9 juin 2008 à 12:33
Bonjour,
la même chose Cantador,
j'ai modifié mon code comme suit :
///////
ch := DateTimeToStr(ADODataSet1.FieldByName('Date_H_Debut').AsDateTime);
vXLWorkbook4.WorkSheets['Feuil1'].Range['D'+inttostr(v)]:= ch;
///////
et lorsque j'execute en mode pas à pas je trouve que la variable ch contient la chaine '08/06/2008 15:34:00' et sur la cellule Excel ça m'affiche '06/08/2008 15:34' .... je ne comprend pas pourquoi??
Merci pour votre aide!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 20101 9 juin 2008 à 17:42
je ne comprend plus rien maintenant!
même après avoir imposer le format d'affichage, ben il m'affiche toujours '06/09/2008 15:35:00' au lieu de '09/06/2008 15:35:00' ... vas y comprendre!!
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 10 juin 2008 à 09:10
salut,
j'ai pas tellement d'xp avec excel, mais j'ai quelques questions/idées pour toi:
1)
est-ce que tu modifies le "FormatSettings" quelques part (ailleurs) dans ton code? as-tu des threads?
2)
as-tu essayer de passer par une var local avant de l'envoyer vers excel?
3)
as-tu essayer de toujours envoyer le même string vers excel (cad forcer la valeur avec une const). juste histoire de voir si ça vient de la cellule, si c'est constant, ...
4)
ton windows, c'est un windows anglais? les option regional sont toujours bonne après que ton erreur se soit produite? (tu as peut-être un soft qui te change tes options regional)
bonne chance,
Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 20101 10 juin 2008 à 16:45
héé oui, je ne trouve toujours pas ou est la faille,
pour répondre à tes questions Loda
1) je ne modifie pas le "FormatSettings" dans mon code!
2) je ne passe pas par une variable locale: je fais directement :
vXLWorkbook.WorkSheets['Feuil1'].Range['C4']:=ADODataSet.FieldByName('Date_H_Debut').AsString;
3) je n'ai pas essayer de travailler avec des const!
4)j'ai un windows français et mes options sont corrects!!
c'est pour tout cela que je ne comprend rien la dessus!!
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 20101 11 juin 2008 à 15:34
bonjour,
je suis passé par une variable locale, en exécution pas à pas, la variable contenait '11/06/2008 12:30' et dès que passe vers excel ça m'affiche : '06/11/2008 12:30'............
je déprime!