VBscript dépendant d'un logiciel de migration, voudrais combiner 2 champs

Résolu
sn1b - 24 avril 2013 à 08:09
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 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 ;)

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
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

jean-marc
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
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




jean-marc
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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!

Merci!
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
24 avril 2013 à 17:50
Voir aussi car test impossible pour nous
Function ScriptedField	
   ScriptedField=FormatDate("@@ORG:CREATEON@@","yyyy-MM-dd") & Space(1) &_
         FormatDate("@@ORG:CREATEAT@@","hh:mm:ss")
End Function


bonne continuation,


 jean-marc
0
Rejoignez-nous