2017-01-05 2 views
-1

私のレポートの日付フィルタを作成しようとすると、フォームが生成されます。私はこのフォームでチェックボックスを持つDateTimePickerを持っています。チェックボックスをオンにすると、クエリはWHERE句を追加します。MySQLコードを短くするには?

現在、イムこの方法をやって: -

  If DateTimePicker1.Checked Then 
       query = "SELECT payment_type, sales_payment_dtl.payment_amt, payment_remark, sales_payment_dtl.created_date, sales.inv_no 
        FROM sales_payment_dtl 
        INNER JOIN sales_payment 
        ON sales_payment_dtl.payment_id = sales_payment.payment_id 
        INNER JOIN sales 
        ON sales_payment.sales_id = sales.sales_id 
        WHERE sales_payment_dtl.created_date = '"& DateTimePicker.Text &"'" 
     Else 
       query = "SELECT payment_type, sales_payment_dtl.payment_amt, payment_remark, sales_payment_dtl.created_date, sales.inv_no 
        FROM sales_payment_dtl 
        INNER JOIN sales_payment 
        ON sales_payment_dtl.payment_id = sales_payment.payment_id 
        INNER JOIN sales 
        ON sales_payment.sales_id = sales.sales_id" 
     End If 

それはコードを短くすることは可能ですか?将来私はsomemoreフィルタを追加する必要があるので、コードは非常に長くなるだろう、このような何か?

query = "SELECT payment_type, sales_payment_dtl.payment_amt, payment_remark, sales_payment_dtl.created_date, sales.inv_no 
        FROM sales_payment_dtl 
        INNER JOIN sales_payment 
        ON sales_payment_dtl.payment_id = sales_payment.payment_id 
        INNER JOIN sales 
        ON sales_payment.sales_id = sales.sales_id 

        IF '"& DateTimePicker.Checked = True &"' THEN 
        WHERE sales_payment_dtl.created_date = '"& DateTimePicker.Text &"' 
        ELSE 
        do nothing" 
+0

[**コードレビュー**](http://www.codereview.stackexchange.com)に記載されているため、 – Codexer

答えて

0

シンプルなロジック。

query = "SELECT payment_type, sales_payment_dtl.payment_amt, payment_remark, sales_payment_dtl.created_date, sales.inv_no " & _ 
    "FROM(sales_payment_dtl) " & _ 
    "INNER JOIN sales_payment " & _ 
    "ON sales_payment_dtl.payment_id = sales_payment.payment_id " & _ 
    "INNER JOIN sales " & _ 
    "ON sales_payment.sales_id = sales.sales_id" 

    If DateTimePicker1.Checked Then 
     query &= " WHERE sales_payment_dtl.created_date = '" & DateTimePicker.Text & "'" 
    End If 
関連する問題