sn1b
-
24 avril 2013 à 08:09
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
24 avril 2013 à 17:50
Bonjour, je réalise une migration de base de donnée à l'aide d'un logiciel qui permet de "mapper" le champs d'origine vers le champs de destination. Ce logiciel permet également, lorsqu'une opération est nécessaire de transformer le mapping d'un champs vers un autre en opération.
Cette opération peut être codée en C# ou en vbscript et pour la partie vbscript, ils disposent de leurs propres fonctions que le fabriquant du logiciel ont développées.
Voilà par exemple comment je transforme la date d'origine dans un format qui soit adapté au champ de destination:
Function ScriptedField
ScriptedField=FormatDate("@@ORG:CREATEON@@","yyyy-MM-dd hh:mm:ss")
End Function
"@@ORG:CREATEON@@ est le champs d'origine qui contient la date de création de l'entrée dans la base de donnée.
Mon problème est que je peux ainsi récupéré la date, mais malgré que le champ CREATEON soit formaté pour contenir également l'heure de création, celle si n'est jamais présente et a toujours pour valeur "00:00:00.000".
En y regardant de plus près, en fait, la date de création se trouve dans un autre champs appellé "CREATEAT" et contient par exemple l'heure sous la forme "16:31"
Ce qu'en définitive je voudrais faire, c'est combiné dans mon script les 2 champs pour qu'en sortie, je dispose de la date et de l'heure.
La table de destination, elle, sauvegarde bien la date et l'heure dans le même champs.
Si je laisse mon script en l'état, l'heure de création dans la destination est toujours "12:00", ce doit être par défaut.
Merci de m'orienté, je n'ai jamais codé avant, j'avance pas mal, mais j'ai du mal et je préfère des fois demandé que de tester toute une journée ;)
A voir également:
VBscript dépendant d'un logiciel de migration, voudrais combiner 2 champs
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 24 avril 2013 à 17:09
re,
Et que retourne la fonction
Function ScriptedField
ScriptedField=Left(FormatDate("@@ORG:CREATEON@@","yyyy-MM-dd hh:mm:ss"),10) & Space(1) &_
FormatDate("@@ORG:CREATEAT@@","hh:mm:ss")
End Function
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 24 avril 2013 à 12:42
Bonjour,
J'ai pas compris le soucis, tu peux être plus clair ?
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 24 avril 2013 à 13:39
Bonjour,
En vbs, la fonction FormatDate n'existe pas. Par contre, la fonction FormatDateTime pourrait peut-être vous être utile.
Function ScriptedField
ScriptedField=FormatDateTime("@@ORG:CREATEON@@",vbLongDate) & Space(1) &_
FormatDateTime("@@ORG:CREATEAT@@",vbLongTime)
End Function
En fait, justement, dans mon, "trop long" message, j'explique que le logiciel de mapping que j'utilise a également ces propres fonctions et celle que j'ai donné fonctionne.
En fait, ce code sous cette forme force le champ d'origine CREATEON a utiliser un format de date qui sera reconnu par la base de donnée de destination (sinon, j'ai une erreur, sans ce bout de code, les jours et les mois sont intervertis et, exemple, le mois "22", n'existant pas, logiciel pas content.
Ma question est, dans cette même logique, de savoir, si quelqu'un peut m'aider en ce sens:
- dans mon champ d'origine, je n'ai que la date
- c'est un autre champ qui contient l'heure, le champ "CREATEAT"
En gros, dans la fonction, il faudrait que le champ "CREATEON" (qui contient la date) et le champ "CREATEAT" ne fassent qu'un ou:
"@@ORG:CREATEON@@","yyyy-MM-dd"
"@@ORG:CREATEAT@@","hh:mm:ss"
et les 2 ensemble ne me donnant que un seul résultat, il faut que les 2 ne fassent plus qu'un.
Désolé, je suis novice, j'espère avoir été assez clair, les tests que j'ai fait jusqu'à présent n'ont pas été fructueux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tu as tapé juste! En fait, tu pars de la gauche de moins 10 caractères jusqu'au dernier "d", ensuite, tu indiques un espace et tu ajoutes le contenu suivant pour dans la même opération obtenir l'association des 2 valeurs que je voulais!