Page 1 sur 1

Différence d'un serveur à un autre

MessagePublié: 20 Jan 2011 à 09:17
par seroa
Bonjour à tous,

J'ai un petit problème avec l'affichage de date.

J'ai une base sur un serveur et un réplica de cette même base sur un autre serveur.

Dans un masque, il existe un champ partagé de type Date qui prend pour valeur une ou plusieurs dates.

Puis un champ calculé qui à partir de ce champ me créer une liste des dates en HTML, et affiche ses dates sous la forme : Thursday, January 20 2011. Tous ça en formule.

Sur la base sur le premier serveur, pas de problème. Mais sur le réplica, il m'affiche 1 jour en moins.

Par exemple au lieu de Thursday, January 20 2011 il va afficher
Wednesday, January 19 2011, et c'est valable pour toutes les dates.


Est-ce que vous avez une idée ?

Merci.

MessagePublié: 20 Jan 2011 à 10:01
par abertisch
Salut,

Je dirais que tu dois avoir un problème de configuration sur le serveur. Il n'est peut-être pas sur le bon fuseau horaire

MessagePublié: 20 Jan 2011 à 10:40
par seroa
Le serveur du réplica est aux états unis donc fuseau horaire - 6 heures

Mais pourquoi cela modifierais la valeur de mais champs calculés ?

Si mon champ vaut 20/01/2011

Pourquoi sur ma base cela affiche Thursday, January 20 2011
et sur le replica Wednesday, January 19 2011

Cela voudrais dire que les formules @Date et @WeekDay se base sur l'heure du serveur.

MessagePublié: 20 Jan 2011 à 10:46
par abertisch
Ben oui si tes champs sont calculés, les fonctions sont évaluées à chaque ouverture du document.

MessagePublié: 20 Jan 2011 à 10:53
par seroa
Je ne comprend pas :

Mon champ period qui vaut 20/01/2011, il n'est pas calculé. Il ne change pas.

Voila la valeur de mon champ calculé en gros : (il y a du html en plus normallement)

Code : Tout sélectionner
@If(@Elements(period) > 0;
@For(n:=1; n <= @Elements(period); n := n + 1;
var_duration := @Text(duration[n]);
@Do (var_date := @Date(period[n]);
      var_weekday := @Select(@Weekday(var_date); "Sunday"; "Monday"; "Tuesday"; "Wednesday"; "Thursday"; "Friday"; "Saturday");
      var_day := @Day(var_date);
      var_day2 := @If(var_day < 10; "0" + @Text(var_day);var_day);
      var_month := @Select(@Month(var_date); "January"; "February"; "March"; "April"; "May"; "June"; "July"; "August"; "September"; "October"; "November"; "December");
      var_m := @If(@Month(var_date) < 10; "0" + @Text(@Month(var_date));@Month(var_date));
      var_year := @Year(var_date);
      var_complete := @Text(var_weekday) + ", " +  @Text(var_month) + " " + @Text(var_day) + " " + @Text(var_year);
);


Je ne comprend pas pourquoi var_complete serait différente d'un serveur à un autre car je ne récupère jamais la date ou l'heure courrante.

MessagePublié: 20 Jan 2011 à 11:37
par Grey Goda
Si ton champ "period" est de type "Date/Time" cela peut s'expliquer...

Domino ne stocke pas une "date" mais une "date / horaire" + un fuseau horaire ainsi si tu as le "20/01/2011 00:00:00" en GMT+1, le @Date te renverra bien 20/01/00 par contre sur un serveur US, le même @Date te renverra 19/01/01...

Ce qui est tout à fait normal... et même "puissant", l'utilisateur a une info qui lui est vraiment contextuelle :)

MessagePublié: 20 Jan 2011 à 14:34
par seroa
Merci de ta réponse, il s'agit bien de cela.

Le @Date retranche des heures en fonction du fuseau horaire.

Est-ce qu'il existe une variante de @Date ou une astuce pour éviter cela ?

MessagePublié: 21 Jan 2011 à 09:11
par seroa
Bonjour à tous,

Donc le problème de date était bien du aux la formule @Date, @Day, @Weekday... qui calcul le décalage horaire automatiquement en fonction du fuseau du serveur.

Donc je recalcule avec @Adjust la date en fonction du résultat de la formule @Zone, pour retrouver la bonne date.



Merci.

MessagePublié: 21 Jan 2011 à 09:44
par Grey Goda
Merci de nous faire partager ton auto-solution :wink: