Bonjour,
j'avais eu le mêle problème et avais résolu la chose avec la fonction qui suit plus bas. Ca vaut ce que ca vaut, et tout cas, mon problème était résolu dans les 2 sens (lecture et/ou écriture sur une base access)
j'espère que ca t'aidera... Christophe
// Syntaxe : //[ <Résultat> = ] cjDateVersChaine (<cjDate>, <cjEntrée>, <cjSortie>) // Syntaxe: cjRes = cjDateversChaine("25.11.2004 11:30:05:555","JJ.MM.AAAA HH:NN:SS:CCC","HH:NN") // résultat = "11:30" // Paramètres : // cjDate : La date de référence // cjEntrée : Le format de date en entrée // cjSortie : Le format de date en sortie // Valeur de retour : // chaîne : // Aucune
PROCEDURE cjDateVersChaine(cjDate,cjEntree,cjSortie) cjChaineSortie est chaîne cjJJ est chaîne cjMM est chaîne cjAAAA est chaîne cjHH est chaîne cjNN est chaîne cjSS est chaîne cjCCC est chaîne
cjJJPos est entier cjMMPos est entier cjAAAAPos est entier cjHHPos est entier cjNNPos est entier cjSSPos est entier cjCCCPos est entier
// décomposition du format d'entrée de la date et chargement des variables //trace(cjdate)
cjJJPos = Position(cjEntree,"JJ") cjMMPos = Position(cjEntree,"MM") cjAAAAPos = Position(cjEntree,"AAAA") cjHHPos = Position(cjEntree,"HH") cjNNPos = Position(cjEntree,"NN") cjSSPos = Position(cjEntree,"SS") cjCCCPos= Position(cjEntree,"CC")
SI cjJJPos<> 0 ALORS cjJJ = Milieu(cjDate,cjJJPos,2) SI cjMMPos<> 0 ALORS cjMM = Milieu(cjDate,cjMMPos,2) SI cjAAAAPos<> 0 ALORS cjAAAA = Milieu(cjDate,cjAAAAPos,4) SI cjHHPos<> 0 ALORS cjHH = Milieu(cjDate,cjHHPos,2) SI cjNNPos<> 0 ALORS cjNN = Milieu(cjDate,cjNNPos,2) SI cjSSPos<> 0 ALORS cjSS = Milieu(cjDate,cjSSPos,2) SI cjCCCPos<> 0 ALORS cjCCC = Milieu(cjDate,cjCCCPos,4)
// Décomposition du format de sortie cjTemp est tableau de 7 par 3 entiers
cjTemp[1,1] = Position(cjSortie,"JJ") cjTemp[2,1] = Position(cjSortie,"MM") cjTemp[3,1] = Position(cjSortie,"AAAA") cjTemp[4,1] = Position(cjSortie,"HH") cjTemp[5,1] = Position(cjSortie,"NN") cjTemp[6,1] = Position(cjSortie,"SS") cjTemp[7,1] = Position(cjSortie,"CC")
cjTemp[1,2] = cjJJ cjTemp[2,2] = cjMM cjTemp[3,2] = cjAAAA cjTemp[4,2] = cjHH cjTemp[5,2] = cjNN cjTemp[6,2] = cjSS cjTemp[7,2] = cjCCC
cjTemp[1,3] = 2 cjTemp[2,3] = 2 cjTemp[3,3] = 4 cjTemp[4,3] = 2 cjTemp[5,3] = 2 cjTemp[6,3] = 2 cjTemp[7,3] = 4
//trouver les caractères intermédiaires cjTab est tableau de 6 chaînes //i est un entier;j est un entier j=1 POUR i = 1 A 6 SI cjTemp[i,1] <> 0 ALORS cjTab[j] = Milieu(cjSortie,cjTemp[i,1]+cjTemp[i,3],1) SI Position(cjTab[j],"J") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"M") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"A") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"H") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"N") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"S") ALORS cjTab[j]="" SINON SI Position(cjTab[j],"C") ALORS cjTab[j]="" SINON j++ FIN FIN FIN
TableauTrie(cjTemp,ttCroissant,1)
//trace(cjtemp[1,1], cjtemp[2,1], cjtemp[3,1],cjtemp[4,1],cjtemp[5,1],cjtemp[6,1],cjtemp[7,1]) //trace(cjtemp[1,2], cjtemp[2,2], cjtemp[3,2],cjtemp[4,2],cjtemp[5,2],cjtemp[6,2],cjtemp[7,2]) //trace(cjtemp[1,3], cjtemp[2,3], cjtemp[3,3],cjtemp[4,3],cjtemp[5,3],cjtemp[6,3],cjtemp[7,3]) //trace(cjtab[1], cjtab[2], cjtab[3], cjtab[4], cjtab[5], cjtab[6])
// former la valeur de retour cjChaineSortie="" j=1 POUR i=1 A 7 SI cjTemp[i,1] <> 0 ALORS cjChaineSortie = cjChaineSortie + NumériqueVersChaîne(cjTemp[i,2],"0"+cjTemp[i,3]+"d") SI j<7 ALORS cjChaineSortie = cjChaineSortie + cjTab[j] j++ FIN FIN
RENVOYER cjChaineSortie |