VBscript dépendant d'un logiciel de migration, voudrais combiner 2 champs [Résolu]

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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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
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.
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!
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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