1
我有一个表,如下这些我与“合格”的“失败”的记录中的每一列的数量和填充。然后,我正在尝试计算每个色谱柱的失败率以及3'IR室'设备和3''员工退出'设备的平均故障率。ASP.Net - 数学运算和百分比 - VB
我使用的代码在这个岗位的底部填充的标签,但我有2个问题: -
我得到一个“输入字符串的不正确格式'错误 在线86(昏暗irAverageFailureRate作为字符串)
我不禁想到有一个更好的方式来做到这一点。我是 新的ASP/VB,所以任何关于如何改善这个问题的意见将是 感激地收到。
Sub getYesterdayStats() Dim con As OleDbConnection Dim cmdClockings As OleDbDataAdapter Dim dsClockings As New DataSet Dim yesterday As String = DateTime.Today.AddDays(-1).ToString("yyyy/MM/dd") con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=\\XXX.XX.XXX.XX\XXXX.mdb;Jet OLEDB:Database Password=XXXXX;") cmdClockings = New OleDbDataAdapter("SELECT efrLog.PID, efrLog.LType, efrLog.LDName from efrLog WHERE LDate = '" & yesterday & "'", con) cmdClockings.Fill(dsClockings, "Clockings") ' Get pass and fail count for each device Dim ir1Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'IR Room 1'").Count Dim ir1Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'IR Room 1'").Count Dim ir2Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'IR Room 2'").Count Dim ir2Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'IR Room 2'").Count Dim ir3Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'IR Room 3'").Count Dim ir3Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'IR Room 3'").Count Dim ee1Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'Employee Exit 1'").Count Dim ee1Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'Employee Exit 1'").Count Dim ee2Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'Employee Exit 2'").Count Dim ee2Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'Employee Exit 2'").Count Dim ee3Pass As Integer = dsClockings.Tables("Clockings").Select("LType = 'PASS' AND LDName = 'Employee Exit 3'").Count Dim ee3Fail As Integer = dsClockings.Tables("Clockings").Select("LType = 'DENY' AND LDName = 'Employee Exit 3'").Count ' Calculate totals for each device Dim ir1total As Integer = ir1Pass + ir1Fail Dim ir2total As Integer = ir2Pass + ir2Fail Dim ir3total As Integer = ir3Pass + ir3Fail Dim ee1total As Integer = ee1Pass + ee1Fail Dim ee2total As Integer = ee2Pass + ee2Fail Dim ee3total As Integer = ee3Pass + ee3Fail ' Calcualte failure rate for each device Dim ir1failureRate As String = Format((ir1Fail/ir1Pass) * 100, "0.00") Dim ir2failureRate As String = Format((ir2Fail/ir2Pass) * 100, "0.00") Dim ir3failureRate As String = Format((ir3Fail/ir3Pass) * 100, "0.00") Dim ee1failureRate As String = Format((ee1Fail/ee1Pass) * 100, "0.00") Dim ee2failureRate As String = Format((ee2Fail/ee2Pass) * 100, "0.00") Dim ee3failureRate As String = Format((ee3Fail/ee3Pass) * 100, "0.00") ' Calculate average failure rate for IR and EE devices Dim irAverageFailureRate As String = Format((Format((ir1Fail/ir1Pass) * 100, "0.00") + Format((ir2Fail/ir2Pass) * 100, "0.00") + Format((ir3Fail/ir3Pass) * 100, "0.00"))/3, "0.00") Dim eeAverageFailureRate As String = Format((Format((ee1Fail/ee1Pass) * 100, "0.00") + Format((ee2Fail/ee2Pass) * 100, "0.00") + Format((ee3Fail/ee3Pass) * 100, "0.00"))/3, "0.00") ' Assign values to labels lblIR1pass.Text = ir1Pass lblIR1fail.Text = ir1Fail lblIR2pass.Text = ir2Pass lblIR2fail.Text = ir2Fail lblIR3pass.Text = ir3Pass lblIR3fail.Text = ir3Fail lblEE1pass.Text = ee1Pass lblEE1fail.Text = ee1Fail lblEE2pass.Text = ee2Pass lblEE2fail.Text = ee2Fail lblEE3pass.Text = ee3Pass lblEE3fail.Text = ee3Fail lblIR1tot.Text = ir1total lblIR2tot.Text = ir2total lblIR3tot.Text = ir3total lblEE1tot.Text = ee1total lblEE2tot.Text = ee2total lblEE3tot.Text = ee3total lblIR1fr.Text = ir1failureRate & "%" lblIR2fr.Text = ir2failureRate & "%" lblIR3fr.Text = ir3failureRate & "%" lblEE1fr.Text = ee1failureRate & "%" lblEE2fr.Text = ee2failureRate & "%" lblEE3fr.Text = ee3failureRate & "%" lblIRafr.Text = irAverageFailureRate & "%" lblEEafr.Text = eeAverageFailureRate & "%"
末次
感谢安德鲁,这解决了错误问题,但它返回了不正确的平均计算。我略微修剪它做总数,然后使用下面的代码单独计算平均值,但我不确定如何将其格式化为2位小数。它目前的格式为13.任何想法?谢谢 'Dim irAverageFailureRate As String = String.Format(CDbl(irTotalFailureRate/2),“P”)' – Jimsan
@Jimsan Oops,这是我的一个愚蠢的错误。它应该是的ToString( “P”)结尾,就像这样:'昏暗irAverageFailureRate的String =(CDbl(irTotalFailureRate)/ 2)的ToString( “P”)' –
感谢安德鲁,现在对所有工作点 – Jimsan