Vb.net m commainasqlcommand Dim drMain作为SqlDataReader 将dtRow设置为Data.DataRow 作为字符串的Dim strSQL 作为整数的Dim intTeller Dim blnYearToDate为布尔值=F
m commainasqlcommand Dim drMain作为SqlDataReader 将dtRow设置为Data.DataRow 作为字符串的Dim strSQL 作为整数的Dim intTeller Dim blnYearToDate为布尔值=False sCreateTable() 如果pPeriod=“年初至今”,则 perpiod=“” blnYearToDate=True 如果结束 strSQL=“从SR_销售人员中选择代码和名称” conMain.Open() comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 dtRow=tblData.NewRow() dtRow.Item(“代码”)=drMain.Item(“代码”) dtRow.Item(“销售人员”)=drMain.Item(“名称”) dtRow.Item(“OpenOrders”)=0 dtRow.Item(“OpenOrdersCurrentPeriod”)=0 数据行项目(“发货未开票”)=0 dtRow.项目(“销售”)=0 dtRow.项目(“预计”)=0 dtRow.项目(“预算”)=0 dtRow.Item(“上一年度”)=0 tblData.Rows.Add(dtRow) 结束时 dtRow=tblData.NewRow() dtRow.Item(“代码”)=“总计” dtRow.Item(“销售人员”)=“” dtRow.Item(“OpenOrders”)=0 dtRow.Item(“OpenOrdersCurrentPeriod”)=0 数据行项目(“发货未开票”)=0 dtRow.项目(“销售”)=0 dtRow.项目(“预计”)=0 dtRow.项目(“预算”)=0 dtRow.Item(“上一年度”)=0 tblData.Rows.Add(dtRow) 如果结束 drMain.Close() comMain.Dispose() strSQL=“从SR\U SalesOpenOrdersShippedNotInvoinced中选择*” comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“代码”),则 tblData.Rows(intTeller.Item(“ShippedNotInvoinced”)=drMain.Item(“amountest”) 如果结束 下一个 结束时 如果结束 drMain.Close() comMain.Dispose() strSQL=“从SR\U SalesOpenOrdersPersalePerson中选择* comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“代码”),则 tblData.Rows(intTeller.Item(“OpenOrders”)=drMain.Item(“OpenOrders”) 如果结束 下一个 结束时 如果结束 drMain.Close() comMain.Dispose() strSQL=“从SR_salesOpenOrdersPersalePersonPerPerPerPerPerPerPerPerPerPerPeriod中选择*,其中Period=”&pPeriod&“ comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“销售人员代码”),则 tblData.Rows(intTeller.Item(“OpenOrdersCurrentPeriod”)=drMain.Item(“amountest”) 如果结束 下一个 结束时 如果结束 drMain.Close() comMain.Dispose() strSQL=“从SR_budgetpersalespersonperperperperperperperiod中选择*,其中strPeriod=”&pperoid&“ comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“strCode”),则 tblData.Rows(intTeller.Item(“预算”)=drMain.Item(“dblSales”) 如果结束 下一个 结束时 如果结束 drMain.Close() comMain.Dispose() strSQL=“从SR_histsalesspersonperperperperperiod中选择*,其中strPeriod='”&pPreviousYearPeriod&'” comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“strCode”),则 tblData.Rows(intTeller.Item(“上一年”)=drMain.Item(“dblSales”) 如果结束 下一个 结束时 如果结束 drMain.Close() comMain.Dispose() 如果是blnYearToDate那么 strSQL=“选择销售人员,总和(销售)作为销售,总和([销售成本])作为[销售成本],总和(利润)作为利润,总和(利润)/总和(销售)作为销售人员,编码”&_ “来自dbo.SR_销售人员”&_ “WHERE(类似于“&&Now.Year&“%”的期间)&”_ “按销售人员分组,代码” 其他的 strSQL=“从SR_salessersalPerson中选择*,其中Period=”&Period&“ 如果结束 comMain=newsqlcommand(strSQL,conMain) drMain=comMain.ExecuteReader 如果drMain.HasRows,则 边读边读 对于intTeller=0到tblData.Rows.Count-1 如果tblData.Rows(intTeller.Item(“代码”)=drMain.Item(“代码”),则 tblData.Rows(intTeller.Item(“销售”)=drMain.Item(“销售”) 如果结束 下一个 结束时 如果结束 对于intTeller=0到tblData.Rows.Count-1 使用tblData.Rows(intTeller) .Item(“预计”)=.Item(“销售”)+.Item(“发货未开票”)+.Item(“打开订单当前期间”) 以 下一个 Dim intLastRow作为整数=tblData.Rows.Count-1 对于intTeller=0到tblData.Rows.Count-2 使用tblData.Rows(intTeller) tblData.Rows(intLastRow).Item(“销售”)+=fCheckValue(.Item(“销售”)) tblData.Rows(intLastRow).Item(“OpenOrders”)+=fCheckValue(.Item(“OpenOrders”)) tblData.Rows(intLastRow).Item(“OpenOrdersCurrentPeriod”)+=fCheckValue(.Item(“OpenOrdersCurrentPeriod”)) tblData.Rows(intLastRow).Item(“ShippedNotInvoinced”)+=fCheckValue(.Item(“ShippedNotInvoinced”))Vb.net m commainasqlcommand Dim drMain作为SqlDataReader 将dtRow设置为Data.DataRow 作为字符串的Dim strSQL 作为整数的Dim intTeller Dim blnYearToDate为布尔值=F,vb.net,sharepoint,report,Vb.net,Sharepoint,Report,m commainasqlcommand Dim drMain作为SqlDataReader 将dtRow设置为Data.DataRow 作为字符串的Dim strSQL 作为整数的Dim intTeller Dim blnYearToDate为布尔值=False sCreateTable() 如果pPeriod=“年初至今”,则 perpiod=“” blnYearToDate=True 如果结束 strSQL=“从SR_销售人员中选择代码和名称” conMain.Open() comMain
Line 367: For intTeller = 0 To tblData.Rows.Count - 1
Line 368: With tblData.Rows(intTeller)
Line 369: .Item("Projected") = .Item("Sales") + .Item("ShippedNotInvoiced") + .Item("OpenOrdersCurrentPeriod")
Line 370: End With
Line 371: Next
Imports System.Data.SqlClient
Partial Class Sales
Inherits System.Web.UI.Page
Dim tblData As New Data.DataTable
Private Sub DataGridToExcel(ByRef grdExport As GridView, ByRef pResponse As Web.HttpResponse, ByVal pFileName As String)
Try
Dim intTeller As Integer = 0
Dim strTemp As String
pResponse.Clear()
pResponse.AddHeader("content-disposition", "attachment;filename=" & pFileName)
pResponse.Buffer = True
pResponse.ContentType = "application/vnd.ms-excel"
pResponse.Charset = ""
Dim stringWrite As New System.IO.StringWriter
Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite)
grdExport.RenderControl(htmlWrite)
strTemp = stringWrite.ToString
strTemp.Replace(",", "")
strTemp.Replace(".", "")
pResponse.Write(strTemp)
pResponse.End()
Catch ex As Exception
'Me.lblError.Text = ex.Message
End Try
End Sub
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
Private Sub sExportGrid()
DataGridToExcel(Me.grdSalesLines, Response, "Sales " & Format(Now, "yyyyMM") & ".xls")
End Sub
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
sCreateTable()
sFillPeriods()
sRefreshData(Format(Now, "yyyyMM"), Format(DateAdd(DateInterval.Year, -1, Now), "yyyyMM"))
End If
End Sub
Private Sub sFillPeriods()
Dim conMain As New SqlConnection(sGetConnectionString)
Dim comMain As SqlCommand
Dim drMain As SqlDataReader
Dim strSQL As String = "SELECT DISTINCT Period FROM [SR_SalesOverviewCompany] Order by Period DESC"
conMain.Open()
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
Me.cmbPeriods.Items.Clear()
Me.cmbPeriods.Items.Add("Current Period")
Me.cmbPeriods.Items.Add("Year To Date")
If drMain.HasRows Then
While drMain.Read
If Not IsDBNull(drMain.Item("Period")) Then
Me.cmbPeriods.Items.Add(drMain.Item("Period"))
End If
End While
End If
End Sub
Private Function sGetConnectionString() As String
Dim conString = ConfigurationManager.ConnectionStrings("STOKVIS LIVEConnectionString")
Dim strConnString As String = conString.ConnectionString
Return strConnString
End Function
Protected Sub grdSalesLines_DataBound(sender As Object, e As System.EventArgs) Handles grdSalesLines.DataBound
If Me.cmbPeriods.SelectedItem.Text <> "Current Period" Then
grdSalesLines.Columns(3).Visible = False
grdSalesLines.Columns(4).Visible = False
grdSalesLines.Columns(5).Visible = False
grdSalesLines.Columns(7).Visible = False
Else
grdSalesLines.Columns(3).Visible = True
grdSalesLines.Columns(4).Visible = True
grdSalesLines.Columns(5).Visible = True
grdSalesLines.Columns(7).Visible = True
End If
End Sub
Protected Sub grdSalesLines_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdSalesLines.RowCommand
Dim intRow As Integer = CInt(e.CommandArgument)
Response.Redirect("SalesDetails.aspx?p=" & Me.cmbPeriods.SelectedItem.Text & "&s=" & grdSalesLines.Rows(intRow).Cells(1).Text)
End Sub
Protected Sub grdSalesLines_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdSalesLines.RowDataBound
Dim intCounter As Integer
If e.Row.Cells(1).Text = "Total" Then
For intCounter = 0 To e.Row.Cells.Count - 1
With e.Row.Cells(intCounter)
.ForeColor = Drawing.Color.White
.BackColor = Drawing.Color.DarkBlue
.Font.Bold = True
End With
Next
End If
End Sub
Private Sub sCreateTable()
tblData.Columns.Clear()
tblData.Columns.Add(New Data.DataColumn("Code", System.Type.GetType("System.String")))
tblData.Columns.Add(New Data.DataColumn("Salesperson", System.Type.GetType("System.String")))
tblData.Columns.Add(New Data.DataColumn("OpenOrders", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("OpenOrdersCurrentPeriod", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("ShippedNotInvoiced", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("Sales", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("Projected", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("Budget", System.Type.GetType("System.Double")))
tblData.Columns.Add(New Data.DataColumn("PreviousYear", System.Type.GetType("System.Double")))
End Sub
Protected Sub btnRefresh_Click(sender As Object, e As System.EventArgs) Handles btnRefresh.Click
If Me.cmbPeriods.SelectedItem.Text = "Current Period" Then
sRefreshData(Format(Now, "yyyyMM"), Format(DateAdd(DateInterval.Year, -1, Now), "yyyyMM"))
Else
sRefreshData(Me.cmbPeriods.SelectedItem.Text, "")
End If
End Sub
Protected Sub btnExcel_Click(sender As Object, e As System.EventArgs) Handles btnExport.Click
sExportGrid()
End Sub
Protected Sub cmbPeriods_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cmbPeriods.SelectedIndexChanged
sCreateTable()
If Me.cmbPeriods.SelectedItem.Text = "Current Period" Then
sRefreshData(Format(Now, "yyyyMM"), Format(DateAdd(DateInterval.Year, -1, Now), "yyyyMM"))
Else
sRefreshData(Me.cmbPeriods.SelectedItem.Text, "")
End If
End Sub
Private Sub sRefreshData(pPeriod As String, pPreviousYearPeriod As String)
Dim conMain As New SqlConnection(sGetConnectionString)
Dim comMain As SqlCommand
Dim drMain As SqlDataReader
Dim dtRow As Data.DataRow
Dim strSQL As String
Dim intTeller As Integer
Dim blnYearToDate As Boolean = False
sCreateTable()
If pPeriod = "Year To Date" Then
pPeriod = ""
blnYearToDate = True
End If
strSQL = "SELECT code, Name from SR_SalesPerson"
conMain.Open()
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
dtRow = tblData.NewRow()
dtRow.Item("Code") = drMain.Item("Code")
dtRow.Item("SalesPerson") = drMain.Item("Name")
dtRow.Item("OpenOrders") = 0
dtRow.Item("OpenOrdersCurrentPeriod") = 0
dtRow.Item("ShippedNotInvoiced") = 0
dtRow.Item("Sales") = 0
dtRow.Item("Projected") = 0
dtRow.Item("Budget") = 0
dtRow.Item("PreviousYear") = 0
tblData.Rows.Add(dtRow)
End While
dtRow = tblData.NewRow()
dtRow.Item("Code") = "Total"
dtRow.Item("SalesPerson") = ""
dtRow.Item("OpenOrders") = 0
dtRow.Item("OpenOrdersCurrentPeriod") = 0
dtRow.Item("ShippedNotInvoiced") = 0
dtRow.Item("Sales") = 0
dtRow.Item("Projected") = 0
dtRow.Item("Budget") = 0
dtRow.Item("PreviousYear") = 0
tblData.Rows.Add(dtRow)
End If
drMain.Close()
comMain.Dispose()
strSQL = "SELECT * FROM SR_SalesOpenOrdersShippedNotInvoiced"
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("Code") Then
tblData.Rows(intTeller).Item("ShippedNotInvoiced") = drMain.Item("AmountRest")
End If
Next
End While
End If
drMain.Close()
comMain.Dispose()
strSQL = "SELECT * FROM SR_SalesOpenOrdersPerSalesperson"
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("Code") Then
tblData.Rows(intTeller).Item("OpenOrders") = drMain.Item("OpenOrders")
End If
Next
End While
End If
drMain.Close()
comMain.Dispose()
strSQL = "SELECT * FROM SR_SalesOpenOrdersPerSalesPersonPerPeriod WHERE Period='" & pPeriod & "'"
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("SalesPerson Code") Then
tblData.Rows(intTeller).Item("OpenOrdersCurrentPeriod") = drMain.Item("AmountRest")
End If
Next
End While
End If
drMain.Close()
comMain.Dispose()
strSQL = "SELECT * FROM SR_BudgetPerSalesPersonPerPeriod WHERE strPeriod='" & pPeriod & "'"
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("strCode") Then
tblData.Rows(intTeller).Item("Budget") = drMain.Item("dblSales")
End If
Next
End While
End If
drMain.Close()
comMain.Dispose()
strSQL = "SELECT * FROM SR_HistSalesPerSalesPersonPerPeriod WHERE strPeriod='" & pPreviousYearPeriod & "'"
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("strCode") Then
tblData.Rows(intTeller).Item("PreviousYear") = drMain.Item("dblSales")
End If
Next
End While
End If
drMain.Close()
comMain.Dispose()
If blnYearToDate Then
strSQL = "SELECT Salesperson, SUM(Sales) AS Sales, SUM([Cost of Sales]) AS [Cost of Sales], SUM(Margin) AS Margin, SUM(Margin) / SUM(Sales) AS SalesPercent, Code " & _
"FROM dbo.SR_SalesPerSalesperson " & _
"WHERE (Period LIKE '" & Now.Year & "%') " & _
"GROUP BY Salesperson, Code"
Else
strSQL = "SELECT * FROM SR_SalesPerSalesperson WHERE Period='" & pPeriod & "'"
End If
comMain = New SqlCommand(strSQL, conMain)
drMain = comMain.ExecuteReader
If drMain.HasRows Then
While drMain.Read
For intTeller = 0 To tblData.Rows.Count - 1
If tblData.Rows(intTeller).Item("Code") = drMain.Item("Code") Then
tblData.Rows(intTeller).Item("Sales") = drMain.Item("Sales")
End If
Next
End While
End If
For intTeller = 0 To tblData.Rows.Count - 1
With tblData.Rows(intTeller)
.Item("Projected") = .Item("Sales") + .Item("ShippedNotInvoiced") + .Item("OpenOrdersCurrentPeriod")
End With
Next
Dim intLastRow As Integer = tblData.Rows.Count - 1
For intTeller = 0 To tblData.Rows.Count - 2
With tblData.Rows(intTeller)
tblData.Rows(intLastRow).Item("Sales") += fCheckValue(.Item("Sales"))
tblData.Rows(intLastRow).Item("OpenOrders") += fCheckValue(.Item("OpenOrders"))
tblData.Rows(intLastRow).Item("OpenOrdersCurrentPeriod") += fCheckValue(.Item("OpenOrdersCurrentPeriod"))
tblData.Rows(intLastRow).Item("ShippedNotInvoiced") += fCheckValue(.Item("ShippedNotInvoiced"))
tblData.Rows(intLastRow).Item("Projected") += fCheckValue(.Item("Projected"))
tblData.Rows(intLastRow).Item("Budget") += fCheckValue(.Item("Budget"))
tblData.Rows(intLastRow).Item("PreviousYear") += fCheckValue(.Item("PreviousYear"))
End With
Next
Me.grdSalesLines.DataSource = tblData
Me.grdSalesLines.DataBind()
Try
drMain.Close()
comMain.Dispose()
conMain.Close()
Catch ex As Exception
End Try
End Sub
Private Function fCheckValue(pField As Object) As Double
Dim dblValue As Double = 0
If IsDBNull(pField) Then
dblValue = 0
Else
dblValue = CDbl(pField)
End If
Return dblValue
End Function
End Class
Private Function GetNullableValue(Of T)(ByVal dataRow As DataRow, ByVal columnName As String, ByVal defaultIfNull As T) As T
If Not IsDBNull(dataRow.Item(columnName)) Then
Return CType(dataRow.Item(columnName), T)
End If
Return CType(defaultIfNull, T)
End Function
For intTeller = 0 To tblData.Rows.Count - 1
Dim row As DataRow = tblData.Rows(intTeller)
With row
.Item("Projected") = GetNullableValue(row, "Sales", 0) + GetNullableValue(row, "ShippedNotInvoiced", 0) + GetNullableValue(row, "OpenOrdersCurrentPeriod", 0)
End With
Next