elisabeth_nov
Messages postés103Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention 4 février 2009
-
22 mars 2006 à 09:44
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
22 mars 2006 à 13:44
bonjour,
mon pb= je possede un fichier dont voici une ligne:
0032-1DM ;SUPPORT MOULEUSE 1DM ;SUPPORT ;
;UN;N; 7509.8900; 4688.8428; 0;00-XXX-0000;
; ;20-FEB-1998;26-FEB-1992;UN; 1.000000;UN; 1.000000;SU;NOME;ME
dans mon code vb6, jai declarer un type personnalise pour pouvoir lire ce fichier et integrer
chaque donnees dans des colonnes dans une table de ma BD
:
Private Type article
codeArticle As String * 15 'correspond au premier champs
pt As String * 1 'permet de contenir le point virgule
designationArticle As String * 35
pt1 As String * 1
designationAnglaise As String * 35
pt2 As String * 1
designation2 As String * 35
pt3 As String * 1
unité_de_mesure As String * 2
pt4 As String * 1
codeSource As String * 1
pt5 As String * 1
prixVente As String * 14
pt6 As String * 1
coutUnitaireStandart As String * 14
pt7 As String * 1
cycleDappro As String * 4
pt8 As String * 1
dateModifEdition As String * 11
pt9 As String * 1
edition As String * 4
pt10 As String * 1
FormatPlan As String * 1
pt11 As String * 1
dateDernMAJ As String * 11
pt12 As String * 1
dateCreation As String * 11
pt13 As String * 1
unitéAchat As String * 2
pt14 As String * 1
coeff As String * 13
pt15 As String * 1
unitedeVente As String * 2
pt16 As String * 1
coeffUV As String * 13
pt17 As String * 1
codeFamilleProduit As String * 2
pt18 As String * 1
codeFamilleArticle As String * 4
pt19 As String * 1
groupeProduction As String * 2
caractere1 As String * 2
End Type
le champs codeFamilleArticle est soit vide donc inexistant, soit il comprend 4 caracteres.
ce que je voudrais faire c remplir toutes les zones entre points virgules correspondant
a ce champs codeFamilleArticle avec 4 caracteres blanc lorsquil ny en a pas.
pourriez vous maider? (jespere que mon explication est assez precise!)
merci davance pour ceux qui essaieront.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 22 mars 2006 à 10:46
re,
Regarde si le code peut t'aider.
Le resultat est un tableau de type Article (attention le dernier element du tableau est vide)
C:\1.txt est mon fichier source alors il te faudras le remplacer par le tien
Private Type article
codeArticle As String * 15 'correspond au premier champs
designationArticle As String * 35
designationAnglaise As String * 35
designation2 As String * 35
unité_de_mesure As String * 2
codeSource As String * 1
prixVente As String * 14
coutUnitaireStandart As String * 14
cycleDappro As String * 4
dateModifEdition As String * 11
edition As String * 4
FormatPlan As String * 1
dateDernMAJ As String * 11
dateCreation As String * 11
unitéAchat As String * 2
coeff As String * 13
unitedeVente As String * 2
coeffUV As String * 13
codeFamilleProduit As String * 2
codeFamilleArticle As String * 4
groupeProduction As String * 2
caractere1 As String * 2
End Type
Private Sub form_Load()
Dim LaLigne As String
Dim LesArticles() As article
ReDim LesArticles(0)
Open "C:\1.txt" For Input As #1
While Not EOF(1)
Line Input #1, LaLigne
LesArticles(UBound(LesArticles)) = FillArticles(LaLigne)
ReDim Preserve LesArticles(UBound(LesArticles) + 1)
Wend
Close #1
End Sub
Private Function FillArticles(LaLigne As String) As article
Dim TesDonnees() As String
Dim TmpArticle As article
elisabeth_nov
Messages postés103Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention 4 février 2009 22 mars 2006 à 13:27
merci a toi Julien car tu ma bcp aider. voici le code final, au cas ou quelquun aurai le meme pb:
Dim record As New adodb.Recordset
'CONNEXION A LA BASE DE DONNÉS
Dim Conn As New adodb.Connection 'Connecteur à la base
Dim Chaine As String 'Chaîne de connexion à ODBC
Private Type article
codeArticle As String * 15 'correspond au premier champs
designationArticle As String * 35
designationAnglaise As String * 35
designation2 As String * 35
unité_de_mesure As String * 2
codeSource As String * 1
prixVente As String * 14
coutUnitaireStandart As String * 14
cycleDappro As String * 4
dateModifEdition As String * 11
edition As String * 4
FormatPlan As String * 1
dateDernMAJ As String * 11
dateCreation As String * 11
unitéAchat As String * 2
coeff As String * 13
unitedeVente As String * 2
coeffUV As String * 13
codeFamilleProduit As String * 2
codeFamilleArticle As String * 4
groupeProduction As String * 2
caractere1 As String * 2
End Type
Private Function FillArticles(LaLigne As String) As article
Dim TesDonnees() As String
Dim TmpArticle As article
'Connexion à MySQL
With Conn
.ConnectionString = Chaine
.Open
End With
Dim LaLigne As String
Dim LesArticles() As article
ReDim LesArticles(0)
Open "C:\Documents and Settings\elisabeth.novello\Bureau\Files ALPHA1\ARTICLE_WEB_OF.TXT" For Input As #1
While Not EOF(1)
Line Input #1, LaLigne
LesArticles(UBound(LesArticles)) = FillArticles(LaLigne)
ReDim Preserve LesArticles(UBound(LesArticles) + 1)
Wend
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 22 mars 2006 à 09:58
Bonjour
Tu peux regarder comment faire après un split.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 22 mars 2006 à 10:08
Tout celà est bien compliqué, pour ma part, j'aurais fait une analyse de la chaîne de la ligne du fichier csv comme suit:
Sub ExtractCSV(sFileCSV As String, rsTableBD As Recordset)
Dim lFile as Long, sLine as String, sField As String, n As Byte, m As Byte
lFile=FreeFile
Open sFileCSV For Input As #lFile
Do
Line Input #lFile, sLine
m=0
rsTableBD.AddNew
For n=1 To Len(sLine)
If Mid(sLine,n,1)<>";" Then 'Lecture des données
sField=sField & Mid(sLine,n,1)
Else 'Enregistrement du champ
If sField<>"" Then rsTableDB.Fields(m)=sField
sField=""
m=m+1
End If
'Je suppose qu'il n'y a pas de ";" en fin de ligne
If n=Len(sLine) Then
If sField<>"" Then rsTableDB.Fields(m)=sField
End If
Next n
rsTableBD.Update
Loop Until EOF(lFile)
Close #lFile
End Sub
Bon courage!...
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 22 mars 2006 à 10:15
Bonjour
Après un split, tu as toutes les données dans un tableau, tu peux donc voir tous les items de la ligne et les traités sans utuiliser de Recordset (d'ailleur je n'en n'ai jamais utiliser).
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 22 mars 2006 à 10:22
salut,
Il est vrai que la fonction Split t'irais parfaitement.
As tu vraiment besoin de garder les ";"
Sinon essaie de voir:
Option Explicit
Private Type article
codeArticle As String * 15 'correspond au premier champs
designationArticle As String * 35
designationAnglaise As String * 35
designation2 As String * 35
unité_de_mesure As String * 2
codeSource As String * 1
prixVente As String * 14
coutUnitaireStandart As String * 14
cycleDappro As String * 4
dateModifEdition As String * 11
edition As String * 4
FormatPlan As String * 1
dateDernMAJ As String * 11
dateCreation As String * 11
unitéAchat As String * 2
coeff As String * 13
unitedeVente As String * 2
coeffUV As String * 13
codeFamilleProduit As String * 2
codeFamilleArticle As String * 4
groupeProduction As String * 2
caractere1 As String * 2
End Type
Private Sub form_Load()
Dim TaLigne As String
Dim TesDonnees() As String
Dim TmpArticle As article
TaLigne = "0032-1DM ;SUPPORT MOULEUSE 1DM ;SUPPORT ;" & _
" ;UN;N; 7509.8900; 4688.8428; 0;00-XXX-0000;" & _
" ; ;20-FEB-1998;26-FEB-1992;UN; 1.000000;UN; 1.000000;SU;NOME;ME"
TesDonnees = Split(TaLigne, ";")
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 22 mars 2006 à 10:27
Bonjour
[auteurdetail.aspx?ID=89254 jrivet] te donne une exemple fonctionnel, à toi de voir si cela te convient.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 22 mars 2006 à 10:32
Bonjour
Tu lis ton fichier ligne par ligne, avec LINE INPUT par exemple.
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
elisabeth_nov
Messages postés103Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention 4 février 2009 22 mars 2006 à 11:35
et ensuite je voudrais y integrer ce code mais je ny parviens pas:
'REMPLISSAGE TABLE ARTICLE
' 'On lit le fichier des articles
' Fichart = FreeFile
'
' Open "C:\Documents and Settings\elisabeth.novello\Bureau\Files ALPHA1\ARTICLE_WEB_OF.TXT" For Random Access Read As #Fichart Len = Len(art)
'
' While Not EOF(Fichart)
' Get #Fichart, , art
'
' With art
' 'On crée la requête
' req2 = "INSERT INTO article VALUES ('" _
' & Replace(Trim(.codeArticle), "'", "\'") & "','" _
' & Replace(Trim(.designationArticle), "'", "\'") & "','" _
' & Replace(Trim(.designationAnglaise), "'", "\'") & "','" _
' & Replace(Trim(.unité_de_mesure), "'", "\'") & "','" _
' & Replace(Trim(.codeSource), "'", "\'") & "','" _
' & Replace(Trim(.edition), "'", "\'") & "','" _
' & Replace(Trim(.FormatPlan), "'", "\'") & "');"
'
' End With
' 'On met à jour la base
' If Asc(art.codeArticle) <> 0 Then
' With record
' .ActiveConnection = Conn
' .Source = req2
' .Open
' End With
' End If
'
' Wend
' Close #Fichart
elisabeth_nov
Messages postés103Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention 4 février 2009 22 mars 2006 à 11:47
c le code que jutilise pour remplir ma table article car le but de la manip est de remplir une table et g voulu adapter ce code mais je ny suis pas parvenue! voila pour lexplication.