Je comprends ce que tu m'as soumis For each, etc. mais cela n'est pas
performant pour moi car j'ai beaucoup de donné à traiter.
Voici mon code...
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim y As Integer
Dim a As Integer
Dim i As Integer
Dim crReportDocument As New ReportDocument
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim Fname As String
Dim paramFieldsDateDebut As New ParameterFields
Dim paramFieldDateDebut As New ParameterField
Dim discreteValDateDebut As New ParameterDiscreteValue
Dim paramFieldsDateFin As New ParameterFields
Dim paramFieldDateFin As New ParameterField
Dim discreteValDateFin As New ParameterDiscreteValue
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT Date_Entree AS
DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT CONVERT(DateTime,
Replace(CONVERT(Varchar(10), DT_Entree, 102) + ' ' + CONVERT(Varchar(20),
CONVERT(Varchar(11), HR_ENTREE, 108)), '.', '/')) AS DtEntree,
CONVERT(DateTime, Replace(CONVERT(Varchar(10), DT_Sortie, 102) + ' ' +
CONVERT(Varchar(20), CONVERT(Varchar(11), HR_SORTIE, 108)), '.', '/')) AS
DtSortie, No_Prod AS Produit, Mss_Brt AS PoidsBrut, (Mss_Brt - Mss_Tare)
PoidsNet, Mss_Tare AS PoidsTare, No_Prvn AS Destination, '0' + No_Bllt AS
NoBillet, No_pesee AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartExacModus INNER JOIN
ON tblProduitAExtraireDepartExacModus.strNoProduitExactModus > TR_Depart_Trnspese_ExactModus.No_Prod WHERE
TR_Depart_Trnspese_ExactModus.Dt_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Trnspese_ExactModus.Dt_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveCOPE5000"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveCOPE5000")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveSFK"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveSFK")
cmpCOPE5000.daCOPE5000.SelectCommand.CommandText = "SELECT
Facturation.CodeFeuillet AS CodeFeuillet, Facturation.DateEntree AS
DateEntree, Facturation.IDUsine AS UsineReception, Usine.Nom AS
UsineReception, Facturation.NoBillet AS NoBillet,
AS PoidsBrut, TransactCopeau.MasseNette AS PoidsNet, Contrat.Code AS
CodeContrat, Contrat.Description AS DescContratDepart FROM ((Facturation
JOIN Usine ON Facturation.IDUsine = Usine.ID) INNER JOIN TransactCopeau ON
Facturation.IDTypeTransact = TransactCopeau.ID) LEFT JOIN Contrat ON
Facturation.IDContrat = Contrat.ID WHERE (((CONVERT(DateTime,
Replace(CONVERT(Varchar(10), Facturation.DateEntree, 102),'/','-')) >= '"
Session("DateDebut") & "')))"
cmpCOPE5000.FillDataSetCOPE5000(dsVPC, "tblTransArriveEtape1")
'''' C'est à partir d'ici que je voudrais faire mon SELECT avec mes
'''' pour ne pas faire de boucle pour être beaucoup plus performant car
'''' présentement cela n'est pas fort.
'''
''' Je dois faire une boucle dans chacun des mes DataTable pour passé
chacune des lignes pour ensuite l'ajouter dans un DataTable final.
'''
'''
'''
'''
For a = 0 To
dsVPC.Tables("tblContratAExtraireArriveCOPE5000").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
For a = 0 To
- 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
If dsVPC.Tables("tblTransArrive").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT
AS DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
For y = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) > Trim(dsVPC.Tables("tblTransArrive").Rows(y).Item("CodeFeuillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
a = 0
y = 0
If dsVPC.Tables("tblTransDepart").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransArrive").Rows(a).Item("CodeFeuillet")) > Trim(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
paramFieldDateDebut.ParameterFieldName = "DateDebut"
discreteValDateDebut.Value = Session("DateDebut")
paramFieldDateDebut.CurrentValues.Add(discreteValDateDebut)
paramFieldsDateDebut.Add(paramFieldDateDebut)
paramFieldDateFin.ParameterFieldName = "DateFin"
discreteValDateFin.Value = Session("DateFin")
paramFieldDateFin.CurrentValues.Add(discreteValDateFin)
paramFieldsDateFin.Add(paramFieldDateFin)
crReportDocument.SetDataSource(dsVPC)
Fname = "C:exports" & Session.SessionID.ToString & ".pdf"
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = Fname
With crReportDocument.ExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
crReportDocument.Export()
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()
System.IO.File.Delete(Fname)
End Sub
Je comprends ce que tu m'as soumis For each, etc. mais cela n'est pas
performant pour moi car j'ai beaucoup de donné à traiter.
Voici mon code...
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim y As Integer
Dim a As Integer
Dim i As Integer
Dim crReportDocument As New ReportDocument
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim Fname As String
Dim paramFieldsDateDebut As New ParameterFields
Dim paramFieldDateDebut As New ParameterField
Dim discreteValDateDebut As New ParameterDiscreteValue
Dim paramFieldsDateFin As New ParameterFields
Dim paramFieldDateFin As New ParameterField
Dim discreteValDateFin As New ParameterDiscreteValue
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT Date_Entree AS
DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT CONVERT(DateTime,
Replace(CONVERT(Varchar(10), DT_Entree, 102) + ' ' + CONVERT(Varchar(20),
CONVERT(Varchar(11), HR_ENTREE, 108)), '.', '/')) AS DtEntree,
CONVERT(DateTime, Replace(CONVERT(Varchar(10), DT_Sortie, 102) + ' ' +
CONVERT(Varchar(20), CONVERT(Varchar(11), HR_SORTIE, 108)), '.', '/')) AS
DtSortie, No_Prod AS Produit, Mss_Brt AS PoidsBrut, (Mss_Brt - Mss_Tare)
PoidsNet, Mss_Tare AS PoidsTare, No_Prvn AS Destination, '0' + No_Bllt AS
NoBillet, No_pesee AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartExacModus INNER JOIN
ON tblProduitAExtraireDepartExacModus.strNoProduitExactModus > TR_Depart_Trnspese_ExactModus.No_Prod WHERE
TR_Depart_Trnspese_ExactModus.Dt_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Trnspese_ExactModus.Dt_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveCOPE5000"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveCOPE5000")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveSFK"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveSFK")
cmpCOPE5000.daCOPE5000.SelectCommand.CommandText = "SELECT
Facturation.CodeFeuillet AS CodeFeuillet, Facturation.DateEntree AS
DateEntree, Facturation.IDUsine AS UsineReception, Usine.Nom AS
UsineReception, Facturation.NoBillet AS NoBillet,
AS PoidsBrut, TransactCopeau.MasseNette AS PoidsNet, Contrat.Code AS
CodeContrat, Contrat.Description AS DescContratDepart FROM ((Facturation
JOIN Usine ON Facturation.IDUsine = Usine.ID) INNER JOIN TransactCopeau ON
Facturation.IDTypeTransact = TransactCopeau.ID) LEFT JOIN Contrat ON
Facturation.IDContrat = Contrat.ID WHERE (((CONVERT(DateTime,
Replace(CONVERT(Varchar(10), Facturation.DateEntree, 102),'/','-')) >= '"
Session("DateDebut") & "')))"
cmpCOPE5000.FillDataSetCOPE5000(dsVPC, "tblTransArriveEtape1")
'''' C'est à partir d'ici que je voudrais faire mon SELECT avec mes
'''' pour ne pas faire de boucle pour être beaucoup plus performant car
'''' présentement cela n'est pas fort.
'''
''' Je dois faire une boucle dans chacun des mes DataTable pour passé
chacune des lignes pour ensuite l'ajouter dans un DataTable final.
'''
'''
'''
'''
For a = 0 To
dsVPC.Tables("tblContratAExtraireArriveCOPE5000").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
For a = 0 To
- 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
If dsVPC.Tables("tblTransArrive").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT
AS DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
For y = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) > Trim(dsVPC.Tables("tblTransArrive").Rows(y).Item("CodeFeuillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
a = 0
y = 0
If dsVPC.Tables("tblTransDepart").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransArrive").Rows(a).Item("CodeFeuillet")) > Trim(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
paramFieldDateDebut.ParameterFieldName = "DateDebut"
discreteValDateDebut.Value = Session("DateDebut")
paramFieldDateDebut.CurrentValues.Add(discreteValDateDebut)
paramFieldsDateDebut.Add(paramFieldDateDebut)
paramFieldDateFin.ParameterFieldName = "DateFin"
discreteValDateFin.Value = Session("DateFin")
paramFieldDateFin.CurrentValues.Add(discreteValDateFin)
paramFieldsDateFin.Add(paramFieldDateFin)
crReportDocument.SetDataSource(dsVPC)
Fname = "C:exports" & Session.SessionID.ToString & ".pdf"
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = Fname
With crReportDocument.ExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
crReportDocument.Export()
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()
System.IO.File.Delete(Fname)
End Sub
Je comprends ce que tu m'as soumis For each, etc. mais cela n'est pas
performant pour moi car j'ai beaucoup de donné à traiter.
Voici mon code...
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim y As Integer
Dim a As Integer
Dim i As Integer
Dim crReportDocument As New ReportDocument
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim Fname As String
Dim paramFieldsDateDebut As New ParameterFields
Dim paramFieldDateDebut As New ParameterField
Dim discreteValDateDebut As New ParameterDiscreteValue
Dim paramFieldsDateFin As New ParameterFields
Dim paramFieldDateFin As New ParameterField
Dim discreteValDateFin As New ParameterDiscreteValue
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT Date_Entree AS
DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT CONVERT(DateTime,
Replace(CONVERT(Varchar(10), DT_Entree, 102) + ' ' + CONVERT(Varchar(20),
CONVERT(Varchar(11), HR_ENTREE, 108)), '.', '/')) AS DtEntree,
CONVERT(DateTime, Replace(CONVERT(Varchar(10), DT_Sortie, 102) + ' ' +
CONVERT(Varchar(20), CONVERT(Varchar(11), HR_SORTIE, 108)), '.', '/')) AS
DtSortie, No_Prod AS Produit, Mss_Brt AS PoidsBrut, (Mss_Brt - Mss_Tare)
PoidsNet, Mss_Tare AS PoidsTare, No_Prvn AS Destination, '0' + No_Bllt AS
NoBillet, No_pesee AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartExacModus INNER JOIN
ON tblProduitAExtraireDepartExacModus.strNoProduitExactModus > TR_Depart_Trnspese_ExactModus.No_Prod WHERE
TR_Depart_Trnspese_ExactModus.Dt_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Trnspese_ExactModus.Dt_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveCOPE5000"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveCOPE5000")
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT * FROM
tblContratAExtraireArriveSFK"
cmpVPC.FillDataSet(dsVPC, "tblContratAExtraireArriveSFK")
cmpCOPE5000.daCOPE5000.SelectCommand.CommandText = "SELECT
Facturation.CodeFeuillet AS CodeFeuillet, Facturation.DateEntree AS
DateEntree, Facturation.IDUsine AS UsineReception, Usine.Nom AS
UsineReception, Facturation.NoBillet AS NoBillet,
AS PoidsBrut, TransactCopeau.MasseNette AS PoidsNet, Contrat.Code AS
CodeContrat, Contrat.Description AS DescContratDepart FROM ((Facturation
JOIN Usine ON Facturation.IDUsine = Usine.ID) INNER JOIN TransactCopeau ON
Facturation.IDTypeTransact = TransactCopeau.ID) LEFT JOIN Contrat ON
Facturation.IDContrat = Contrat.ID WHERE (((CONVERT(DateTime,
Replace(CONVERT(Varchar(10), Facturation.DateEntree, 102),'/','-')) >= '"
Session("DateDebut") & "')))"
cmpCOPE5000.FillDataSetCOPE5000(dsVPC, "tblTransArriveEtape1")
'''' C'est à partir d'ici que je voudrais faire mon SELECT avec mes
'''' pour ne pas faire de boucle pour être beaucoup plus performant car
'''' présentement cela n'est pas fort.
'''
''' Je dois faire une boucle dans chacun des mes DataTable pour passé
chacune des lignes pour ensuite l'ajouter dans un DataTable final.
'''
'''
'''
'''
For a = 0 To
dsVPC.Tables("tblContratAExtraireArriveCOPE5000").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
For a = 0 To
- 1
For y = 0 To dsVPC.Tables("tblTransArriveEtape1").Rows.Count -
If Not
(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")) Is
DBNull.Value Then
If
= Trim(dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat"))
Dim workTable As DataTable > dsVPC.Tables("tblTransArrive")
Dim workRow As DataRow = workTable.NewRow()
workRow("CodeFeuillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeFeuillet")
workRow("DateEntree") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DateEntree")
workRow("UsineReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("UsineReception")
workRow("DescReception") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescReception")
workRow("CodeContrat") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("CodeContrat")
workRow("DescContratDepart") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("DescContratDepart")
workRow("NoBillet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsBrut")
workRow("PoidsNet") > dsVPC.Tables("tblTransArriveEtape1").Rows(y).Item("PoidsNet")
dsVPC.Tables("tblTransArrive").Rows.Add(workRow)
End If
End If
Next
Next
a = 0
y = 0
If dsVPC.Tables("tblTransArrive").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
cmpVPC.daVPC.SelectCommand.CommandText = "SELECT
AS DtEntree, Date_Sortie AS DTSortie, Produit, Poids_Brut AS PoidsBrut,
Poids_Net AS PoidsNet, Poids_Tare AS PoidsTare, Destination, '0' +
AS NoBillet, Numero AS NoPesee, No_Site AS SiteBalance FROM
tblProduitAExtraireDepartBB INNER JOIN TR_Depart_Transact_BB ON
tblProduitAExtraireDepartBB.strNoProduitBB = TR_Depart_Transact_BB.Produit
WHERE TR_Depart_Transact_BB.Date_Entree >= '" & Session("DateDebut") & "'
TR_Depart_Transact_BB.Date_Sortie <= '" & Session("DateFin") & "'"
cmpVPC.FillDataSet(dsVPC, "tblTransDepart")
For y = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")) > Trim(dsVPC.Tables("tblTransArrive").Rows(y).Item("CodeFeuillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransDepart").Rows(a).Item("SiteBalance")
workRow("Dt_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 1, 10)
workRow("Hr_Entree") > Mid(dsVPC.Tables("tblTransDepart").Rows(a).Item("DtEntree"), 12, 8)
workRow("Destination") > dsVPC.Tables("tblTransDepart").Rows(a).Item("Destination")
workRow("NoBillet") > dsVPC.Tables("tblTransDepart").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransDepart").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
a = 0
y = 0
If dsVPC.Tables("tblTransDepart").Rows.Count >= 1 Then
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
For y = 0 To dsVPC.Tables("tblTransDepart").Rows.Count - 1
i = 0
If Not
(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Is DBNull.Value
If
Trim(dsVPC.Tables("tblTransArrive").Rows(a).Item("CodeFeuillet")) > Trim(dsVPC.Tables("tblTransDepart").Rows(y).Item("NoBillet")) Then
i = 1
Exit For
End If
Else
i = 0
Exit For
End If
Next
If i = 0 Then
Dim workTable As DataTable dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
End If
Next
Else
For a = 0 To dsVPC.Tables("tblTransArrive").Rows.Count - 1
Dim workTable As DataTable = dsVPC.Tables("tblTransFinal")
Dim workRow As DataRow = workTable.NewRow()
workRow("SiteBalance") > dsVPC.Tables("tblTransArrive").Rows(a).Item("DescContratDepart")
workRow("Destination") > dsVPC.Tables("tblTransArrive").Rows(a).Item("UsineReception")
workRow("Dt_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 1, 10)
workRow("Hr_Arrivee") > Mid(dsVPC.Tables("tblTransArrive").Rows(a).Item("DateEntree"), 12, 8)
workRow("NoBillet") > dsVPC.Tables("tblTransArrive").Rows(a).Item("NoBillet")
workRow("PoidsBrut") > dsVPC.Tables("tblTransArrive").Rows(a).Item("PoidsBrut")
dsVPC.Tables("tblTransFinal").Rows.Add(workRow)
Next
End If
paramFieldDateDebut.ParameterFieldName = "DateDebut"
discreteValDateDebut.Value = Session("DateDebut")
paramFieldDateDebut.CurrentValues.Add(discreteValDateDebut)
paramFieldsDateDebut.Add(paramFieldDateDebut)
paramFieldDateFin.ParameterFieldName = "DateFin"
discreteValDateFin.Value = Session("DateFin")
paramFieldDateFin.CurrentValues.Add(discreteValDateFin)
paramFieldsDateFin.Add(paramFieldDateFin)
crReportDocument.SetDataSource(dsVPC)
Fname = "C:exports" & Session.SessionID.ToString & ".pdf"
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = Fname
With crReportDocument.ExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
crReportDocument.Export()
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()
System.IO.File.Delete(Fname)
End Sub
Étant donné qu'un dataadapter demande sur qu'elle connection on travail,
je
dois faire le remplissage de mes 2 DataTable en 2 section.
Un DataTable des données de la première base de données.
Un 2e DataTable des données de l'autre base de données.
Ensuite, comme mes données que j'ai besoin sont dans chacun des 2
DataTable,
je veux travailler avec ses 2 DataTables.
Étant donné qu'un dataadapter demande sur qu'elle connection on travail,
je
dois faire le remplissage de mes 2 DataTable en 2 section.
Un DataTable des données de la première base de données.
Un 2e DataTable des données de l'autre base de données.
Ensuite, comme mes données que j'ai besoin sont dans chacun des 2
DataTable,
je veux travailler avec ses 2 DataTables.
Étant donné qu'un dataadapter demande sur qu'elle connection on travail,
je
dois faire le remplissage de mes 2 DataTable en 2 section.
Un DataTable des données de la première base de données.
Un 2e DataTable des données de l'autre base de données.
Ensuite, comme mes données que j'ai besoin sont dans chacun des 2
DataTable,
je veux travailler avec ses 2 DataTables.