Je dois alimenter une Base de donn=E9es =E0 partir d'un fichier texte.
Mon fichier en entr=E9e contient des codes sur les 4 premiers
caract=E8res puis les caract=E8res qui suivent sont fonction de la valeur
du code et bien s=FBr, selon la valeur du code, la structure des
donn=E9es n'est pas la m=EAme.
Exemple :
0000xxxxttttttttrrr
1111yyyyyyypp
0000qqqqaaaaaaaauuu
2222sssseee
Donc si mon code est 0000, j'ai une premi=E8re donn=E9e sur 4 caract=E8res
puis une autre sur 8 et enfin une troisi=E8me sur 3
Si mon code est 1111, j'ai une premi=E8re donn=E9e sur 7 et une seconde
sur 2.
L'objectif de mon programme, c'est de cr=E9er un fichier en sortie qui
contienne une structure homog=E8ne.
0000xxxxtttttttrrr
1111 yyyyyyypp
0000qqqqaaaaaaaauuu
2222ssss ee
Avec un tel fichier, il est tr=E8s facile d'alimenter une base de
donn=E9e.
Je pensais concevoir un programme qui utilise le principe des Close
Copy du COBOL pour r=E9soudre simplement mon pb mais visible =E7a n'est
pas possible en VB.
Quelqu'un aurait-il une id=E9e autre qu'une succesion de Mid(chaine, x,
y) ?
Il y a une syntaxe qu'on peut trouver plus légère : qa.fl = vbCrLf
Selon l'environnement il peut apparaître préférable d'inverser : qa.fl = Chr$(10) + Chr$(13)
J'insiste : il faut modifier la déclaration de l'enregistrement.
Dans l'exemple :
Private Type KensQuestionsAndAnswers question as string * 100 answer1 as string * 50 answer2 as string * 50 answer3 as string * 50 answer4 as string * 50 answer5 as string * 50 correctnum as Integer fl as string * 2 End Type
Je n'ai pas essayé ça récemment, mais logiquement ça devrait marcher. Bien entendu, c'est à chaque enregistrement qu'il faut mettre vbCrLf dans le dernier champ.
Si tu mets un enregistrement avec un entier comme dans l'exemple, dans le bloc-notes ça risque de donner un résultat étrange. Si je ne m'abuse, si tu affiches ça dans une fenêtre de ligne de commande par la commande TYPE, ça devrait faire bip si Text7 vaut 7.
Mais un enregistrement avec que des chaînes de caractères devrait correspondre à ce que tu veux faire il me semble. J'aurais bien essayé, mais là je ne te promets rien. _____________________________________ Tschuß a écrit, le 26/10/2005 21:00 :
Bon, sans être une bille en coding, j'avoue que les accès direct dans un fichier texte, ça ne me dit rien. Les seuls foiqs que j'ai entendu parler d'accès direct dans un fichier c'était du temps ou je bossais sur des fichiers VSAM en COBOL. Bref, si on peut m'en dire plus, je suis preneur. Par contre, je n'ai pas compris comment terminer ma ligne par Chr$(13) + Chr$(10) ? Il suffit de mettre des 2 valeurs systématiquement en fin de record et ça suffit ?
Bref, si quelqu'un peut me donner des adresses oueb on je peux m'instruire sur le sujet, je suis preneur.
Salut,
Je n'ai pas eu le temps de travailler là-dessus depuis l'autre jour.
Dans la page que tu cites je note la syntaxe d'écriture d'un
enregistrement :
Il y a une syntaxe qu'on peut trouver plus légère :
qa.fl = vbCrLf
Selon l'environnement il peut apparaître préférable d'inverser :
qa.fl = Chr$(10) + Chr$(13)
J'insiste : il faut modifier la déclaration de l'enregistrement.
Dans l'exemple :
Private Type KensQuestionsAndAnswers
question as string * 100
answer1 as string * 50
answer2 as string * 50
answer3 as string * 50
answer4 as string * 50
answer5 as string * 50
correctnum as Integer
fl as string * 2
End Type
Je n'ai pas essayé ça récemment, mais logiquement ça devrait marcher.
Bien entendu, c'est à chaque enregistrement qu'il faut mettre vbCrLf
dans le dernier champ.
Si tu mets un enregistrement avec un entier comme dans l'exemple, dans
le bloc-notes ça risque de donner un résultat étrange. Si je ne m'abuse,
si tu affiches ça dans une fenêtre de ligne de commande par la commande
TYPE, ça devrait faire bip si Text7 vaut 7.
Mais un enregistrement avec que des chaînes de caractères devrait
correspondre à ce que tu veux faire il me semble. J'aurais bien essayé,
mais là je ne te promets rien.
_____________________________________
Tschuß a écrit, le 26/10/2005 21:00 :
Bon, sans être une bille en coding, j'avoue que les accès direct dans
un fichier texte, ça ne me dit rien. Les seuls foiqs que j'ai entendu
parler d'accès direct dans un fichier c'était du temps ou je bossais
sur des fichiers VSAM en COBOL.
Bref, si on peut m'en dire plus, je suis preneur.
Par contre, je n'ai pas compris comment terminer ma ligne par Chr$(13)
+ Chr$(10) ? Il suffit de mettre des 2 valeurs systématiquement en fin
de record et ça suffit ?
Bref, si quelqu'un peut me donner des adresses oueb on je peux
m'instruire sur le sujet, je suis preneur.
Il y a une syntaxe qu'on peut trouver plus légère : qa.fl = vbCrLf
Selon l'environnement il peut apparaître préférable d'inverser : qa.fl = Chr$(10) + Chr$(13)
J'insiste : il faut modifier la déclaration de l'enregistrement.
Dans l'exemple :
Private Type KensQuestionsAndAnswers question as string * 100 answer1 as string * 50 answer2 as string * 50 answer3 as string * 50 answer4 as string * 50 answer5 as string * 50 correctnum as Integer fl as string * 2 End Type
Je n'ai pas essayé ça récemment, mais logiquement ça devrait marcher. Bien entendu, c'est à chaque enregistrement qu'il faut mettre vbCrLf dans le dernier champ.
Si tu mets un enregistrement avec un entier comme dans l'exemple, dans le bloc-notes ça risque de donner un résultat étrange. Si je ne m'abuse, si tu affiches ça dans une fenêtre de ligne de commande par la commande TYPE, ça devrait faire bip si Text7 vaut 7.
Mais un enregistrement avec que des chaînes de caractères devrait correspondre à ce que tu veux faire il me semble. J'aurais bien essayé, mais là je ne te promets rien. _____________________________________ Tschuß a écrit, le 26/10/2005 21:00 :
Bon, sans être une bille en coding, j'avoue que les accès direct dans un fichier texte, ça ne me dit rien. Les seuls foiqs que j'ai entendu parler d'accès direct dans un fichier c'était du temps ou je bossais sur des fichiers VSAM en COBOL. Bref, si on peut m'en dire plus, je suis preneur. Par contre, je n'ai pas compris comment terminer ma ligne par Chr$(13) + Chr$(10) ? Il suffit de mettre des 2 valeurs systématiquement en fin de record et ça suffit ?
Bref, si quelqu'un peut me donner des adresses oueb on je peux m'instruire sur le sujet, je suis preneur.