一张表多条件查询

   Try
            Me.Cursor = Cursors.WaitCursor

            Dim sql As String = ""

            Dim WhereStr As String = ""

If Me.SaleOrdingNo.Text.Length > 0 Then
                WhereStr += " and fSaleOrdeNo='" & Me.SaleOrdingNo.Text.Trim & "'"
            End If
            If Me.WriteNo.Text.Length > 0 Then
                WhereStr += " and fWriteNo='" & Me.WriteNo.Text.Trim & "'"//(其中一个查询条件值为空的处理方式:即用Trim()方法)
            End If
            If Me.OrdeMode.Text.Trim <> "" Then
                WhereStr += " and fOrdeStatus = '" & Me.OrdeMode.Text & "'"
            End If
            If Me.SaleMan.Text.Trim <> "" Then
                WhereStr += " and fEmployeeID like '%" & Me.SaleMan.Text & "%'"
            End If


            If Me.OrderCustomerType.Text.Trim <> "" Then
                WhereStr += " and fCustomerType = '" & Me.OrderCustomerType.Text & "' "
            End If


            If Me.txtOrdeType.Text.Length > 0 Then


                Dim OrdeType1 As String = Me.txtOrdeType.Text


                If OrdeType1.EndsWith(",") Then
                    OrdeType1 = OrdeType1.Remove(OrdeType1.Length - 1, 1)
                End If


                Dim Str() As String = OrdeType1.Split(",")
                Dim OrdeType As String = ""


                For i As Int64 = 0 To Str.Length - 1
                    OrdeType += "'" & Str(i) & "',"
                Next
                If OrdeType.EndsWith(",") Then
                    OrdeType = OrdeType.Remove(OrdeType.Length - 1, 1)
                End If


                WhereStr += " and fGoodsType in (" & OrdeType & ")"
            End If


            If Me.OrdeShopNo.Text.Trim <> "" Then
                WhereStr += " and ShopNo like '%" & Me.OrdeShopNo.Text & "%'"
            End If


            If Me.DeliverType.Text.Trim <> "" Then
                WhereStr += " and fDeliverMode like '%" & Me.DeliverType.Text & "%'"
            End If


            If Me.StartDate.Value.ToString.Length > 0 And Me.EndDate.Value.ToString.Length <= 0 Then
                'WhereStr += " and fSaleDate"
            ElseIf Me.StartDate.Value.ToString.Length <= 0 And Me.EndDate.Value.ToString.Length >= 0 Then
                'WhereStr += " and fSaleDate"
            ElseIf Me.StartDate.Value.ToString.Length >= 0 And Me.EndDate.Value.ToString.Length >= 0 Then
                WhereStr += " and fSaleDate between '" & Format(Me.StartDate.Value, "yyyy-MM-dd") & "' and '" & Format(Me.EndDate.Value, "yyyy-MM-dd") & "'"    //时间处理,如:and fSaleDate between '2012-06-25' and '2012-06-25'
            End If
            sql = "select fSaleOrdeNo, fWriteNo, fDeliverMode, fStoreCode, fDeliverDate, fGoodsType, ……fOrdeStatus, isnull(FDSIA,0) as FDSIA, isnull(FDSIB,0) as FDSIB, isnull(FBSI,0) as FBSI, isnull(FTAmount,0)  as FTAmount, isnull(FReceipt,0) as FReceipt, isnull(FRefund,0) as FRefund, fPayMode, fRemark  from V_SaleOrde where 1=1" & WhereStr
            mDatasetA = ReturnDataset(sql)


  Me.DGV_Master.DataSource = mDatasetA.Tables(0)
            bFind = mDatasetA.Tables(0).Rows.Count > 0
            If mDatasetA.Tables(0).Rows.Count > 0 Then

               ‘(Private mDatasetA As DataSet)
                MainForm.ToolStripFirst.Enabled = False
                MainForm.ToolStripNext.Enabled = True
                MainForm.ToolStripPrivous.Enabled = False
                MainForm.ToolStripLast.Enabled = True
                Me.DGV_Master.CurrentCell = Me.DGV_Master.Rows(0).Cells(0)
            Else
                MainForm.ToolStripFirst.Enabled = False
                MainForm.ToolStripNext.Enabled = False
                MainForm.ToolStripPrivous.Enabled = False
                MainForm.ToolStripLast.Enabled = False
            End If


           If Me.DGV_Master.Rows.Count > 0 Then
                Me.DGV_MasterSum.Rows(0).Cells("fDSIA").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(fDSIA)", "")), "#0.00")
                Me.DGV_MasterSum.Rows(0).Cells("FDSIB").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(FDSIB)", "")), "#0.00")
                Me.DGV_MasterSum.Rows(0).Cells("fBSI").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(fBSI)", "")), "#0.00")
                Me.DGV_MasterSum.Rows(0).Cells("FTAmount").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(FTAmount)", "")), "#0.00")
                Me.DGV_MasterSum.Rows(0).Cells("FReceipt").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(FReceipt)", "")), "#0.00")
                Me.DGV_MasterSum.Rows(0).Cells("FRefund").Value = Format(Val(mDatasetA.Tables(0).Compute("sum(FRefund)", "")), "#0.00")
            End If

             SetToolEnable() 

             Catch ex As Exception
            ''MsgBox("BtnFind_Click:" + ex.ToString, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, Msg.CompanyName)
        Finally
            Me.Cursor = Cursors.Default
        End Try


       ''' <summary>
    ''' 主窗體上的ToolButton按鈕的Enable屬性
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub SetToolEnable()


        Dim ShopNo As String = ""
        If Not Me.DGV_Master.CurrentRow Is Nothing Then
            ShopNo = Me.DGV_Master.CurrentRow.Cells("ShopNo").Value & ""
        End If
        If Me.DGV_Master.Rows.Count > 0 Then
            If Me.DGV_Master.CurrentRow.Cells("fOrdeStatus").Value = "保存" Then
                If ShopNo = PubCompanyName Then
                    MainForm.ToolStripCheck.Enabled = True And CheckEnable = True
                    MainForm.ToolStripUnCheck.Enabled = False
                    MainForm.ToolStripComplete.Enabled = False
                    MainForm.ToolStripDelete.Enabled = True And DeleteEnable = True
                    MainForm.ToolStripEdit.Enabled = True And EditEnable = True
                Else
                    MainForm.ToolStripCheck.Enabled = False
                    MainForm.ToolStripUnCheck.Enabled = False
                    MainForm.ToolStripComplete.Enabled = False
                    MainForm.ToolStripDelete.Enabled = False
                    MainForm.ToolStripEdit.Enabled = False
                End If
                Me.BtnCancel.Enabled = False
            ElseIf Me.DGV_Master.CurrentRow.Cells("fOrdeStatus").Value = "核准" Then
                MainForm.ToolStripCheck.Enabled = False
                MainForm.ToolStripUnCheck.Enabled = True And UncheckEnable = True
                MainForm.ToolStripComplete.Enabled = True And CompleteEnable = True
                MainForm.ToolStripDelete.Enabled = False
                MainForm.ToolStripEdit.Enabled = False
                Me.BtnCancel.Enabled = True
            ElseIf Me.DGV_Master.CurrentRow.Cells("fOrdeStatus").Value = "反核准" Then
                MainForm.ToolStripCheck.Enabled = True And CheckEnable = True
                MainForm.ToolStripUnCheck.Enabled = False
                MainForm.ToolStripComplete.Enabled = False
                MainForm.ToolStripDelete.Enabled = False
                MainForm.ToolStripEdit.Enabled = True And EditEnable = True
                Me.BtnCancel.Enabled = True
            ElseIf Me.DGV_Master.CurrentRow.Cells("fOrdeStatus").Value = "結案" Then
                MainForm.ToolStripCheck.Enabled = False
                MainForm.ToolStripUnCheck.Enabled = False
                MainForm.ToolStripComplete.Enabled = False
                MainForm.ToolStripDelete.Enabled = False
                MainForm.ToolStripEdit.Enabled = False
                Me.BtnCancel.Enabled = False
            End If
            If Me.DGV_Master.CurrentRow.Index = 0 Then
                MainForm.ToolStripFirst.Enabled = False
                MainForm.ToolStripNext.Enabled = True
                MainForm.ToolStripPrivous.Enabled = False
                MainForm.ToolStripLast.Enabled = True
            ElseIf Me.DGV_Master.CurrentRow.Index = Me.DGV_Master.Rows.Count - 1 Then
                MainForm.ToolStripFirst.Enabled = True
                MainForm.ToolStripNext.Enabled = False
                MainForm.ToolStripPrivous.Enabled = True
                MainForm.ToolStripLast.Enabled = False
            Else
                MainForm.ToolStripFirst.Enabled = True
                MainForm.ToolStripNext.Enabled = True
                MainForm.ToolStripPrivous.Enabled = True
                MainForm.ToolStripLast.Enabled = True
            End If
            MainForm.ToolStripPrint.Enabled = True
        End If


    End Sub




Private Sub GetToolEnable()
        Try
            With MainForm
                .ToolStripAdd.Enabled = AddEnable
                .ToolStripEdit.Enabled = EditEnable And bFind = True
                .ToolStripDelete.Enabled = DeleteEnable And bFind = True
                .ToolStripPrint.Enabled = PrintEnable
                .ToolStripImport.Enabled = ImportEnable
                .ToolStripExport.Enabled = ExportEnable
                .ToolStripFind.Enabled = FindEnable
                .ToolStripCheck.Enabled = CheckEnable
                .ToolStripUnCheck.Enabled = UncheckEnable
                .ToolStripComplete.Enabled = CompleteEnable
                .AddToolStripMenuItem.Enabled = .ToolStripAdd.Enabled
                ……
            End With


        Catch ex As Exception
            MsgBox("GetToolEnable:" + ex.ToString, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, Msg.CompanyName)
        End Try
    End Sub

在Excel中实现多条件求和,可以通过多种公式组合来完成。以下是几种常用的方法: --- 使用 `SUMIFS` 函数进行多条件求和 如果多个工作的结构相同,并且需要根据一个或多个条件对指定列求和,可以结合 `SUMIFS` 函数与 `INDIRECT` 函数。例如,假设需要从名为“Sheet2”和“Sheet3”的工作中,根据某一条件(如类别为“A”)对销售额求和: ```excel =SUMPRODUCT(SUMIFS(INDIRECT("'"&SheetNames&"'!C:C"), INDIRECT("'"&SheetNames&"'!A:A"), "A")) ``` 其中,“SheetNames”是一个包含所有相关工作名称的区域。 --- 使用 `SUMPRODUCT` 和 `SUMIF` 组合处理多条件求和 若希望对多个工作中的特定列根据单一条件求和,可采用以下方法: 1. 假设需要汇总多个工作中满足“产品类型=X”的销售数据。 2. 使用 `SUMPRODUCT` 与 `SUMIF` 的组合: ```excel =SUMPRODUCT(SUMIF(INDIRECT("'"&SheetNames&"'!A:A"), "X", INDIRECT("'"&SheetNames&"'!B:B"))) ``` 此公式会遍历 `SheetNames` 列中的每个工作,查找列 A 中等于“X”的行,并对其对应的列 B 求和。 --- 使用 `VBA` 实现更复杂的多条件求和 对于更复杂的场景,可以通过编写 VBA 宏代码实现灵活的数据汇总。例如,定义一个函数,循环访问多个工作并基于条件累加值: ```vba Function MultiSheetSum(conditionRange As Range, sumRange As Range, condition As Variant) As Double Dim ws As Worksheet Dim total As Double total = 0 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Summary" Then ' 排除汇总 total = total + Application.WorksheetFunction.SumIf(ws.Range(conditionRange.Address), condition, ws.Range(sumRange.Address)) End If Next ws MultiSheetSum = total End Function ``` 在 Excel 单元格中调用该函数: ```excel =MultiSheetSum(A:A, B:B, "X") ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值