2012年12月17日 星期一

[SQL] 多欄位查詢


            Dim str As String = "select * from [A010詢價單資料表-表頭] Where 1=1"

            '選擇哪個查詢條件
            Select Case frm詢價單search.TabControl1.SelectedIndex
                Case 0 '一般
                    'SELECT         外調單號, 預訂交期
                    'FROM             E010外調訂單資料表明細
                    'WHERE         (DATEPART(yy, 預訂交期) = 2008) AND (DATEPART(mm, 預訂交期) = 8)
                    'ORDER BY  預訂交期

                    If frm詢價單search.TextBox1.Text <> "0" Then
                        '日期-年度
                        str = str + " and DATEPART(yy,日期) = " & _
                        frm詢價單search.TextBox1.Text.ToString & ""
                    End If

                    If frm詢價單search.ComboBox1.Text <> "0(全部)" Then
                        '日期-月份
                        str = str + " and DATEPART(mm,日期) = " & _
                        Microsoft.VisualBasic.Left(frm詢價單search.ComboBox1.Text, 2) & ""
                    End If

                    If frm詢價單search.ComboBox2.Text <> "0(全部)" Then
                        '業務員-編號
                        str = str + " and 業務員 = '" & _
                        Microsoft.VisualBasic.Left(frm詢價單search.ComboBox2.Text, InStr(frm詢價單search.ComboBox2.Text, "(") - 1) & "'"
                    End If

                Case 1 '依客戶編號
                    If frm詢價單search.ComboBox3.Text <> "0(全部)" Then
                        'Dim 客戶編號() As String = frm詢價單search.ComboBox3.Text.Split(frm詢價單search.ComboBox3.Text.Split, "(")
                        'str = str + " and 客戶編號 = '" & _
                        ' 客戶編號(0).Trim & "'"

                        str = str + " and 客戶編號 = '" & _
                        Microsoft.VisualBasic.Left(frm詢價單search.ComboBox3.Text, InStr(frm詢價單search.ComboBox3.Text, "(") - 1) & "'"
                    End If

                    '在之前有嚴格判別是否為日期格式 並且不是空白~~
                    If frm詢價單search.TextBox2.Text <> "" And frm詢價單search.TextBox3.Text <> "" Then
                        str = str + " and 日期 between '" & Format(CDate(frm詢價單search.TextBox2.Text), "yyyy/MM/dd") & "' and '" & Format(CDate(frm詢價單search.TextBox3.Text), "yyyy/MM/dd") & "'"
                    End If

                Case 2 '依客戶訂號
                    If Not String.IsNullOrEmpty(frm詢價單search.TextBox4.Text) Then
                        If frm詢價單search.CheckBox1.Checked = True Then
                            str = str + " and 客戶訂號 = '" & _
                            frm詢價單search.TextBox4.Text & "'"
                        Else
                            str = str + " and 客戶訂號 like '%" & _
                            frm詢價單search.TextBox4.Text & "%'"
                        End If
                    End If
                Case 3 '依單號
                    If Not String.IsNullOrEmpty(frm詢價單search.TextBox5.Text) Then
                        str = str + " and 詢價單號 = '" & _
                        frm詢價單search.TextBox5.Text & "'"
                    End If
            End Select

            'sqlQuery
            MsgBox(str)




參考:
[習題]給初學者的範例,多重欄位搜尋引擎 for GridView #1
[MySQL Note.] 資料庫查詢抱怨(刪除線)優化筆記
多欄位的搜尋引擎
改善SQL效能的寫法

沒有留言:

張貼留言