Bonjour,
je viens vers vous, car j'ai un problème de temps de traitement pour un fichier volumineux.
je vous explique le contexte.
je reçois tous les jours un fichier TXT contenant des produits. Ce fichier contient 87037 lignes.
je dois importer le ficher dans une base EBP via le SDK.
le traitement du fichier se déroule en 2 étapes :
Etape 1 :
En parcourant le fichier je regarde si le produits ne correspond pas à une famille/sous famille que je ne dois pas traiter.
Si ce traitement est validé je regarde si le produit existe au pas dans la base.
S'il existe je le stock dans un ConcurrentStack
s'il n'existe pas je le stock dans une autre ConcurrentStack.
Cette étape ce déroule en 6 min environ. Ce qui me semble correct.
Voici le code de cette étape.
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 Public Structure Article Public indicateur_action As String Public code_fabricant As String Public code_SKU As String Public libelle As String Public prix_achat As Decimal Public categorie As String Public sous_categorie As String Public poids As String Public code_barre As String Public nom_marque As String Public prix_public As Decimal Public article_remplacement As String End Structure Public les_articles_a_creer As New ConcurrentStack(Of Article) Public les_articles_a_modifier As New ConcurrentStack(Of Article) Public Sub Get_article() Dim dossiertravail As String = System.Configuration.ConfigurationSettings.AppSettings("dossier_travail") les_articles_a_creer.Clear() les_articles_a_modifier.Clear() 'les_code_articles.Clear() If File.Exists(dossiertravail & fichier_article) = False Then Set_Msg_log("Erreur : Fichier Article introuvable") Exit Sub End If Dim lecteurfichier As StreamReader Dim ligne As String lecteurfichier = New StreamReader(dossiertravail & fichier_article) Dim sql_article As String sql_article = " Select i.id , i.caption, i.desComclear, TF.reference, xx_Libelles_modifies " & " from item i " & " left outer join thirdreference Tf on TF.itemID = I.id And TF.thirdID = '" & id_fournisseur & "' where itemtype =0" Dim reslut_sql As DataView Try reslut_sql = SelectBDD_EBP(sql_article) Catch ex As Exception Set_Msg_log("Traitement fichier Article : Erreur SQL " & ex.Message) Exit Sub End Try Try ligne = lecteurfichier.ReadLine Dim ligne1, ligne2, ligne3, ligne4 As String Dim nb As Integer = File.ReadAllLines(dossiertravail & fichier_article).Length Dim i As Integer = 0 Form_principal.ProgressBar1.Value = 0 Form_principal.ProgressBar1.Minimum = 0 Form_principal.ProgressBar1.Maximum = nb While ligne <> Nothing ligne1 = ligne ligne2 = lecteurfichier.ReadLine ligne3 = lecteurfichier.ReadLine ligne4 = lecteurfichier.ReadLine i = i + 4 Form_principal.ProgressBar1.Increment(4) Form_principal.Label11.Text = "ligne " & i & " sur " & nb Form_principal.Label11.Refresh() Console.WriteLine("ligne " & i & " sur " & nb) If ligne2 = Nothing Then Traitement_ligne(ligne1, reslut_sql) ElseIf ligne3 = Nothing Then Parallel.Invoke(Sub() Traitement_ligne(ligne1, reslut_sql), Sub() Traitement_ligne(ligne2, reslut_sql)) ElseIf ligne4 = Nothing Then Parallel.Invoke(Sub() Traitement_ligne(ligne1, reslut_sql), Sub() Traitement_ligne(ligne2, reslut_sql), Sub() Traitement_ligne(ligne3, reslut_sql)) Else Parallel.Invoke(Sub() Traitement_ligne(ligne1, reslut_sql), Sub() Traitement_ligne(ligne2, reslut_sql), Sub() Traitement_ligne(ligne3, reslut_sql), Sub() Traitement_ligne(ligne4, reslut_sql)) End If ligne = lecteurfichier.ReadLine End While lecteurfichier.Close() lecteurfichier.Dispose() Set_Msg_log("Lecture fichier article ok") Catch ex As Exception Set_Msg_log("Erreur lecture Fichier Article : " & ex.Message) End Try End Sub
Etape 2 :
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 Public Sub Traitement_ligne(ByVal ligne As String, ByVal reslut_sql As DataView) Dim un_article As New Article ' Dim un_code_article As New Article_code Dim ligne_interdit As String = LireINI("Categorie", "Interdit") Dim valeur() As String Dim result_sql_categorie As DataView valeur = Split(ligne, seprateur) If ligne_interdit.Contains(valeur(14).Replace("""", "").Substring(0, 2) & "--") = False Or ligne_interdit.Contains(valeur(14).Replace("""", "")) = False Then un_article.indicateur_action = valeur(0).TrimEnd(" ").Replace("""", "") un_article.code_fabricant = Validation_code(valeur(7).TrimEnd(" ").Replace("""", "")) un_article.code_SKU = Validation_code(valeur(3).Replace("""", "")) un_article.libelle = Mise_en_forme_libelle(valeur(4).Replace("""", "").TrimEnd(" ") & " " & valeur(5).Replace("""", "").TrimEnd(" ")) un_article.prix_achat = CDec(valeur(8).Replace(".", ",")) un_article.code_barre = valeur(13).Replace("""", "").TrimEnd(" ") un_article.poids = valeur(16).Replace("""", "").TrimEnd(" ").Replace(".", ",") un_article.nom_marque = Recup_marque(valeur(2).TrimEnd(" ").Replace("""", "")) un_article.prix_public = CDec(valeur(9).Replace(".", ",")) un_article.article_remplacement = Validation_code(valeur(11).TrimEnd(" ").Replace("""", "")) If valeur(14).Replace("""", "").Length = 4 Then un_article.categorie = valeur(14).Replace("""", "").Substring(0, 2) un_article.sous_categorie = valeur(14).Replace("""", "").Substring(2, 2) Else un_article.categorie = valeur(14).Replace("""", "").Substring(0, 2) un_article.sous_categorie = "" End If Dim sql_categorie As String sql_categorie = "select F.id as famille , SF.id as sfamille " & " from itemfamily F " & " Left outer join itemsubfamily SF on SF.itemFamilyid =F.id " & " where F.xx_code_categorie = " & un_article.categorie & " And SF.xx_code_categorie = " & un_article.sous_categorie result_sql_categorie = SelectBDD_EBP(sql_categorie) If result_sql_categorie.Count > 0 Then For Each row As DataRowView In result_sql_categorie un_article.categorie = row("famille") un_article.sous_categorie = row("sfamille") Next SyncLock reslut_sql If reslut_sql.Count > 0 Then reslut_sql.RowFilter = "id = '" & CStr(un_article.code_fabricant) & "'" If reslut_sql.Count <> 0 Then les_articles_a_modifier.Push(un_article) Else les_articles_a_creer.Push(un_article) End If 'code qui sert a lister les code_reference en double If les_codes_reference <> "" Then If les_codes_reference.Contains(";" & Validation_code(un_article.code_fabricant) & ";") = True Then If les_code_reference_interdit <> "" Then les_code_reference_interdit = les_code_reference_interdit & ";" & Validation_code(un_article.code_fabricant) & ";" Else les_code_reference_interdit = ";" & Validation_code(un_article.code_fabricant) & ";" End If Else les_codes_reference = les_codes_reference & ";" & Validation_code(un_article.code_fabricant) & ";" End If Else les_codes_reference = ";" & Validation_code(un_article.code_fabricant) & ";" End If ElseIf reslut_sql.Count = 0 Then les_articles_a_creer.Push(un_article) 'code qui sert a lister les code_reference en double If les_codes_reference <> "" Then If les_codes_reference.Contains(";" & Validation_code(un_article.code_fabricant) & ";") = True Then If les_code_reference_interdit <> "" Then les_code_reference_interdit = les_code_reference_interdit & ";" & Validation_code(un_article.code_fabricant) & ";" Else les_code_reference_interdit = ";" & Validation_code(un_article.code_fabricant) & ";" End If Else les_codes_reference = les_codes_reference & ";" & Validation_code(un_article.code_fabricant) & ";" End If Else les_codes_reference = ";" & Validation_code(un_article.code_fabricant) & ";" End If End If End SyncLock ' un_code_article.code_fabricant = Validation_code(un_article.code_fabricant) ' un_code_article.code_reference = Validation_code(un_article.code_sku) ' les_code_articles.Push(un_code_article) un_article = Nothing 'un_code_article = Nothing End If End If End Sub
Lors de cette étape je parcours les deux ConcurrentStack.
Lors du parcours, je fais plusieurs traitements.
1er traitement : je regarde si le code_reference n'existe pas deux fois dans liste (j'utilise une variable de type string qui contient tous les codes en double que je crée dans l'étape 1). si le code est en double je ne créer/modifie pas les produits avec ce code
2nd : traitement : je regarde si le produit possède une marque ou pas. S'il n'a pas de marque je créer/modifie le produit, mais je le signale dans un fichier de log.
c'est 2 traitements sont faits peut importe la ConcurrentStack.
Pour ce qui est de la ConcurrentStack des produits à créer, je l'ajoute dans un string pour que je puisse créer un fichier en vue de l'importer dans le base.
pour ce qui est de la ConcurrentStack des produits en modifier je regarde en bases de données si le produit en question a un boolean qui me dit si je dois modifier ou non son libellé et sa description.
Si le boolean est vrai alors j'ajoute le fichier dans un string pour que je puisse créer un fichier en vue de l'importer dans le base, sinon j'ajoute le produit dans une autre string toujours dans le but de l'importer.
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 Public Sub Traitement_article() Dim nom_fichier As String Form_principal.Label11.Text = "" Form_principal.ProgressBar1.Value = 0 Form_principal.ProgressBar1.Minimum = 0 Form_principal.ProgressBar1.Maximum = les_articles_a_creer.Count + les_articles_a_modifier.Count If les_articles_a_creer.Count > 0 Then Traitement_article_nouveau() End If If les_articles_a_modifier.Count > 0 Then Traitement_article_update() End If Set_Msg_log("_______________________________________________ Debut import nouveau article _______________________________________________") Try If ligne_article_new <> "" Then nom_fichier = dossiertravail & Date.Now.ToString("yyyyMMddHHmm") & "_import_article_new.txt" Dim ecriture As New StreamWriter(nom_fichier) ecriture.WriteLine("Code article;Libelle;Code Famille Articles;Code sous-famille article;Prix d'achat;Description commerciale en clair;Type d'article;Poids;Etat Article*;Code barre;Statut;Oxatis - Marque;PV HT public conseille;Article de remplacement") ecriture.WriteLine(ligne_article_new) ecriture.Close() ecriture.Dispose() Set_Msg_log("Listage article à créer OK") Else Set_Msg_log("Aucun nouvel article a créer") End If If File.Exists(nom_fichier) Then ' Creer_import_article(nom_fichier, 2) End If Catch ex As Exception Set_Msg_log("Erreur import article nouveau " & ex.ToString) End Try Set_Msg_log("_______________________________________________ Fin import nouveau article _______________________________________________") Set_Msg_log("") ' rajout ligne pour lecture plus facile du fichier de log general Set_Msg_log("") ' rajout ligne pour lecture plus facile du fichier de log general Set_Msg_log("_______________________________________________ Debut import article a modifier _______________________________________________") Set_Msg_log("") ' rajout ligne pour lecture plus facile du fichier de log general Try If ligne_article_modifier_hors_libelle <> "" Then Set_Msg_log(" _______________________________________________ Article modifier sans le libelle _______________________________________________") nom_fichier = dossiertravail & Date.Now.ToString("yyyyMMddHHmm") & "_import_article_modifier_hors_libelle.txt" Dim ecriture As New StreamWriter(nom_fichier) ecriture.WriteLine("Code article;Code Famille Articles;Code sous-famille article;Prix d'achat;Type d'article;Poids;Etat Article*;Code barre;Statut;Oxatis - Marque;PV HT public conseille;Article de remplacement") ecriture.WriteLine(ligne_article_modifier_hors_libelle) ecriture.Close() ecriture.Dispose() ' Creer_import_article(nom_fichier, 0) Else Set_Msg_log("Aucun article modifier sans le libelle") End If Catch ex As Exception Set_Msg_log("Traitement article modification sans libelle : erreur lors de l'import " & ex.Message) End Try Try If ligne_article_modifier_libelle <> "" Then Set_Msg_log(" _______________________________________________ Article modifier avec le libelle _______________________________________________") nom_fichier = dossiertravail & Date.Now.ToString("yyyyMMddHHmm") & "_import_article_modifier_libelle.txt" Dim ecriture As New StreamWriter(nom_fichier) ecriture.WriteLine("Code article;Libelle;Code Famille Articles;Code sous-famille article;Prix d'achat;Description commerciale en clair;Type d'article;Poids;Etat Article*;Code barre;Statut;Oxatis - Marque;PV HT public conseille;Article de remplacement") ecriture.WriteLine(ligne_article_modifier_libelle) ecriture.Close() ecriture.Dispose() ' Creer_import_article(nom_fichier, 1) Else Set_Msg_log("Aucun article modifier avec le libelle") End If Catch ex As Exception Set_Msg_log("Traitement article modification avec libelle : erreur lors de l'import " & ex.Message) End Try Set_Msg_log("_______________________________________________ Fin import article a modifier _______________________________________________") Set_Msg_log("_______________________________________________ debut import article fournisseur _______________________________________________") Try If ligne_article_fournisseur <> "" Then nom_fichier = dossiertravail & Date.Now.ToString("yyyyMMddHHmm") & "_import_article_fournisseur.txt" Dim ecriture As New StreamWriter(nom_fichier) ecriture.WriteLine("Code article;Code fournisseur;Reference;Prix d'achat public H.T.;Prix d'achat net H.T.;Lier le prix d'achat au prix de vente conseille") ecriture.Write(ligne_article_fournisseur) ecriture.Close() ecriture.Dispose() ' Creer_import_article(nom_fichier, 3) Else Set_Msg_log("Aucune information fournisseur pour les articles") End If Catch ex As Exception Set_Msg_log("Traitement article fournisseur : erreur lors de l'import " & ex.Message) End Try Set_Msg_log("_______________________________________________ Fin import article fournisseur _______________________________________________") Try For Each fichier As String In Directory.GetFiles(dossiertravail) If fichier.Contains("import_article") = True Then File.Move(fichier, dossier_archive & Path.GetFileName(fichier)) End If Next Catch ex As Exception Set_Msg_log("erreur Traitement article lors de l'archivage du fichier : " & ex.Message) End Try les_articles_a_creer.Clear() les_articles_a_modifier.Clear() End Sub
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 Public Sub Traitement_article_nouveau() Dim sql_categorie As String Dim reslut_sql As DataView Dim nom_fichier As String = dossiertravail & Date.Now.ToString("yyyyMMddHHmm") & "_import_article_new.txt" Set_Msg_log("_______________________________________________ Debut traitement nouveau article _______________________________________________") For i = 0 To les_articles_a_creer.Count 'For Each item As Article In les_articles_a_creer Form_principal.ProgressBar1.Increment(1) Console.WriteLine(i & " sur " & les_articles_a_creer.Count & " a " & Date.Now.ToString) Try If les_articles_a_creer(i).code_fabricant = Nothing Then 'Set_Msg_log("Erreur : Le code référence est null indice : " & i) Continue For End If If LireINI("Article", "traitement_code_reference") = 1 Then If Verification_code_reference(les_articles_a_creer(i).code_fabricant, les_articles_a_creer(i).code_sku) = False Then Set_Msg_log("Erreur : Le code référence " & les_articles_a_creer(i).code_fabricant & " existe pour plusieurs produits dans le fichier") Continue For End If End If If les_articles_a_creer(i).nom_marque = "" Then Set_Msg_log("Erreur : pas de marque existant pour l'article : " & les_articles_a_creer(i).code_fabricant.TrimEnd(" ")) End If If ligne_article_new = "" Then ligne_article_new = """" & les_articles_a_creer(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_creer(i).libelle & """;""" & les_articles_a_creer(i).categorie & """;""" & les_articles_a_creer(i).sous_categorie & """;""" & les_articles_a_creer(i).prix_achat & """;""" & les_articles_a_creer(i).libelle & """;""B"";""" & les_articles_a_creer(i).poids & """;""" & les_articles_a_creer(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_creer(i).code_fabricant.TrimEnd(" "), les_articles_a_creer(i).code_barre) & """" & ";""" & status_nouveau & """;""" & les_articles_a_creer(i).nom_marque & """;""" & les_articles_a_creer(i).prix_public & """;""" & les_articles_a_creer(i).article_remplacement & """" Else ligne_article_new = ligne_article_new & vbCrLf & """" & les_articles_a_creer(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_creer(i).libelle & """;""" & les_articles_a_creer(i).categorie & """;""" & les_articles_a_creer(i).sous_categorie & """;""" & les_articles_a_creer(i).prix_achat & """;""" & les_articles_a_creer(i).libelle & """;""B"";""" & les_articles_a_creer(i).poids & """;""" & les_articles_a_creer(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_creer(i).code_fabricant.TrimEnd(" "), les_articles_a_creer(i).code_barre) & """" & ";""" & status_nouveau & """;""" & les_articles_a_creer(i).nom_marque & """;""" & les_articles_a_creer(i).prix_public & """;""" & les_articles_a_creer(i).article_remplacement & """" End If If ligne_article_fournisseur = "" Then ligne_article_fournisseur = """" & les_articles_a_creer(i).code_fabricant.TrimEnd(" ") & """;""" & id_fournisseur & """;""" & les_articles_a_creer(i).code_sku & """;""" & les_articles_a_creer(i).prix_achat & """;""" & les_articles_a_creer(i).prix_achat & """" & ";""" & lier_PA_PV & """" Else ligne_article_fournisseur = ligne_article_fournisseur & vbCrLf & """" & les_articles_a_creer(i).code_fabricant.TrimEnd(" ") & """;""" & id_fournisseur & """;""" & les_articles_a_creer(i).code_sku & """;""" & les_articles_a_creer(i).prix_achat & """;""" & les_articles_a_creer(i).prix_achat & """" & ";""" & lier_PA_PV & """" End If Catch ex As Exception Set_Msg_log("Erreur Traitement nouveau article : code article : " & les_articles_a_creer(i).code_fabricant.TrimEnd(" ") & " : " & ex.Message) End Try Next Set_Msg_log("_______________________________________________ Fin traitement nouveau article _______________________________________________") End Sub
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 Public Sub Traitement_article_update() Dim sql_categorie As String Dim reslut_sql As DataView Dim sql_libelle As String = "" Dim statut_article_EBP As String For i = 0 To les_articles_a_modifier.Count ' For Each item As Article In les_articles_a_modifier Form_principal.ProgressBar1.Increment(1) Try If LireINI("Article", "traitement_code_reference") = 1 Then If Verification_code_reference(les_articles_a_modifier(i).code_fabricant, les_articles_a_modifier(i).code_sku) = False Then Set_Msg_log("Erreur : Le code référence " & les_articles_a_modifier(i).code_fabricant & " existe pour plusieurs produits dans le fichier") Continue For End If End If If les_articles_a_modifier(i).nom_marque = "" Then Set_Msg_log("Erreur : pas de marque existant pour l'article : " & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ")) End If sql_libelle = "select I.xx_Libelles_modifies " & " from item I " & " where id = '" & les_articles_a_modifier(i).code_fabricant & "'" reslut_sql = SelectBDD_EBP(sql_libelle) For Each rst As DataRowView In reslut_sql If les_articles_a_modifier(i).indicateur_action = LireINI("Article", "code_suppression") Then statut_article_EBP = ";""" & status_suppresion & """" ElseIf les_articles_a_modifier(i).indicateur_action = LireINI("Article", "code_modification") Then statut_article_EBP = ";""" & status_modification & """" ElseIf les_articles_a_modifier(i).indicateur_action = LireINI("Article", "code_nouveau") Then statut_article_EBP = ";""" & status_nouveau & """" End If If rst("xx_Libelles_modifies") = 0 Then If ligne_article_modifier_libelle = "" Then ligne_article_modifier_libelle = """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_modifier(i).libelle & """;""" & les_articles_a_modifier(i).categorie & """;""" & les_articles_a_modifier(i).sous_categorie & """;""" & les_articles_a_modifier(i).prix_achat & """;""" & les_articles_a_modifier(i).libelle & """;""B"";""" & les_articles_a_modifier(i).poids & """;""" & les_articles_a_modifier(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_modifier(i).code_fabricant.TrimEnd(" "), les_articles_a_modifier(i).code_barre) & """" & statut_article_EBP & ";" & """" & les_articles_a_modifier(i).nom_marque & """;""" & les_articles_a_modifier(i).prix_public & """;""" & les_articles_a_modifier(i).article_remplacement & """" Else ligne_article_modifier_libelle = ligne_article_modifier_libelle & vbCrLf & """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_modifier(i).libelle & """;""" & les_articles_a_modifier(i).categorie & """;""" & les_articles_a_modifier(i).sous_categorie & """;""" & les_articles_a_modifier(i).prix_achat & """;""" & les_articles_a_modifier(i).libelle & """;""B"";""" & les_articles_a_modifier(i).poids & """;""" & les_articles_a_modifier(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_modifier(i).code_fabricant.TrimEnd(" "), les_articles_a_modifier(i).code_barre) & """" & statut_article_EBP & ";" & """" & les_articles_a_modifier(i).nom_marque & """;""" & les_articles_a_modifier(i).prix_public & """;""" & les_articles_a_modifier(i).article_remplacement & """" End If Else If ligne_article_modifier_hors_libelle = "" Then ligne_article_modifier_hors_libelle = """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_modifier(i).categorie & """;""" & les_articles_a_modifier(i).sous_categorie & """;""" & les_articles_a_modifier(i).prix_achat & """;" & """B" & """;""" & les_articles_a_modifier(i).poids & """;""" & les_articles_a_modifier(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_modifier(i).code_fabricant.TrimEnd(" "), les_articles_a_modifier(i).code_barre) & """" & statut_article_EBP & ";" & """" & les_articles_a_modifier(i).nom_marque & """;""" & les_articles_a_modifier(i).prix_public & """;""" & les_articles_a_modifier(i).article_remplacement & """" Else ligne_article_modifier_hors_libelle = ligne_article_modifier_hors_libelle & vbCrLf & """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & les_articles_a_modifier(i).categorie & """;""" & les_articles_a_modifier(i).sous_categorie & """;""" & les_articles_a_modifier(i).prix_achat & """;" & """B" & """;""" & les_articles_a_modifier(i).poids & """;""" & les_articles_a_modifier(i).indicateur_action & """;""" & Verification_code_barre(les_articles_a_modifier(i).code_fabricant.TrimEnd(" "), les_articles_a_modifier(i).code_barre) & """" & statut_article_EBP & ";" & """" & les_articles_a_modifier(i).nom_marque & """;""" & les_articles_a_modifier(i).prix_public & """;""" & les_articles_a_modifier(i).article_remplacement & """" End If End If If ligne_article_fournisseur = "" Then ligne_article_fournisseur = """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & id_fournisseur & """;""" & les_articles_a_modifier(i).code_sku & """;""" & les_articles_a_modifier(i).prix_achat & """;""" & les_articles_a_modifier(i).prix_achat & """" & ";""" & lier_PA_PV & """" Else ligne_article_fournisseur = ligne_article_fournisseur & vbCrLf & """" & les_articles_a_modifier(i).code_fabricant.TrimEnd(" ") & """;""" & id_fournisseur & """;""" & les_articles_a_modifier(i).code_sku & """;""" & les_articles_a_modifier(i).prix_achat & """;""" & les_articles_a_modifier(i).prix_achat & """" & ";""" & lier_PA_PV & """" End If Next Catch ex As Exception Set_Msg_log("Erreur traitement article a modifier : code article : " & les_articles_a_modifier(i).code_fabricant & " : " & ex.Message) End Try Next End Sub
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 Public Function Verification_code_barre(ByVal code_article As String, ByVal code_barre As String) If LireINI("Article", "traitement_code_barre") = 0 Then Return code_barre Exit Function End If Dim sql As String Dim code_bare_a_saisir As String Dim result_sql As DataView Dim traitement As Boolean = True sql = " select id , barcode " & " from item " & " where barcode = '" & code_barre & "'" result_sql = SelectBDD_EBP(sql) For Each row As DataRowView In result_sql If row("id") <> code_article Then Set_Msg_log("Le code barre " & code_barre & " existe déja pour l'article : " & row("code_article")) traitement = False End If Next If les_code_barres <> "" Then If les_code_barres.Contains(";" & code_barre & ";") = True Then traitement = False End If If les_code_barres.Contains(";" & code_barre & ";") = False Then If les_code_barres = "" Then les_code_barres = ";" & code_barre & ";" Else les_code_barres = les_code_barres & ";" & code_barre & ";" End If End If Else If les_code_barres = "" Then les_code_barres = ";" & code_barre & ";" Else les_code_barres = les_code_barres & ";" & code_barre & ";" End If End If If traitement Then code_bare_a_saisir = code_barre Else code_bare_a_saisir = "" End If Return code_bare_a_saisir End Function Public Function Verification_code_reference(ByVal code_reference As String, ByVal sku As String) Dim traitement As Boolean = True 'For i = 0 To les_code_articles.Count - 1 ' If code_reference = les_code_articles.Item(i).code_fabricant And sku <> les_code_articles.Item(i).code_reference Then ' traitement = False ' End If 'Next 'For Each element As Article_code In les_code_articles 'If element.code_fabricant = code_reference And sku <> element.code_reference Then 'traitement = False ' Exit For ' End If ' Next If les_code_reference_interdit <> "" Then If les_code_reference_interdit.Contains(";" & code_reference & ";") = True Then traitement = False End If End If ' If les_code_articles.Exists(Function(x) x.code_fabricant = code_reference And x.code_reference <> sku) = True Then 'traitement = False ' End If Return traitement End Function
La durée de traitement de cette étape est de 8h. Ce que je voudrais savoir si est-ce que vous voyez un moyen d'améliorer le temps de traitement.
Je précise que la durée de 8h ne comprend pas le temps de l'import dans EBP.
merci d'avance pour votre aide.
Partager