Bonjour,
Je viens vers vous car j'ai un problème de lenteur de traitement et je ne sais pas trop si cela est normal ou pas.
Ce que je fais : je lance une requête sql qui me retourne le résultat dans un dataTable grâce auquel j'alimente une page web en ASP.NET vb.net.
Jusque là, mon code fonctionne sans erreur.
> Lorsque dans mon code source, je fais une requête normale en VB.NET pour obtenir un dataTable, c'est quasiment instantané.
> Maintenant, pour aller un peu plus loin, je souhaite créer un dataTable manuellement afin de créer des colonnes et d'y insérer des valeurs personnalisées. En effet, je souhaite réaliser des traitements et vérifications en amont (avant insertion des données dans le dataTable), cela afin de faciliter le traitement dans mon code qui récupèrera mon dataset perso.
Mon souci dans ce cas est flagrant. Mon code complet est rapide. mais dès que j'utilise le dataTable perso, le code est bien plus lent. la différence est de 3 à 4 secondes.
Je voulais savoir si cela était normal ? Y-a-til un moyen d'optimiser cela ?
Merci à tous par avance.
Je vous donne mon code pour infos :
Code:
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 Private DT_SsFAMILLES As DataTable Private Sub DT_SsFAMILLES_CreateHeadersColumns() Dim workCol As DataColumn = DT_SsFAMILLES.Columns.Add("SousFamilleId", Type.GetType("System.Int32")) workCol.AllowDBNull = False workCol.Unique = True DT_SsFAMILLES.Columns.Add("SousFamilleNom", Type.GetType("System.String")) DT_SsFAMILLES.Columns.Add("IsNotEmpty", Type.GetType("System.Boolean")) End Sub Private Sub DT_SsFAMILLES_InsertRow(ByVal intId As Integer, ByVal strName As String, ByVal BoolNotEmpty As Boolean) Dim workRow As DataRow = DT_SsFAMILLES.NewRow() workRow("SousFamilleId") = intId workRow("SousFamilleNom") = strName workRow("IsNotEmpty") = BoolNotEmpty DT_SsFAMILLES.Rows.Add(workRow) End Sub Public Function Load_SousFamilles(ByVal intIdFam As Integer) As Boolean ErreursTxt = "" Dim boolReturnValue As Boolean = False Try boolReturnValue = GetSsFams(intIdFam) 'effectue une requête sql qui remplie mon dataset DT1 avec des sous familles If ErreursTxt = "" Then If boolReturnValue Then Dim intId As Integer Dim strName As String Dim BoolNotIsEmpty As Boolean DT_SsFAMILLES = New DataTable("ListeSsFams") DT_SsFAMILLES_CreateHeadersColumns() For i As Integer = 0 To intCptmax intId = DT1.Tables(0).Rows(i)("SousFamilleId") strName = DT1.Tables(0).Rows(i)("SousFamilleNom") BoolNotIsEmpty = Verif_Sous_Famille_IsNotEmpty(intId) 'vérifie un critère et retourne True or false DT_SsFAMILLES_InsertRow(intId, strName, BoolNotIsEmpty) Next DT1 = Nothing End If End If Catch ex As Exception ErreursTxt = ex.ToString() End Try Return boolReturnValue End Function