2017-01-05 1 views
-1

Ich versuche, einen Datumsfilter für meinen Bericht zu erstellen Formular generieren. Ich habe ein DateTimePicker mit Checkbox in diesem Formular, Wenn Checkbox überprüft, fügt die Abfrage eine WHERE-Klausel hinzu.Wie mache ich MySQL-Code kürzer?

Derzeit Im tun auf diese Weise: -

  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 

Ist es möglich, den Code kürzer zu machen? Da ich in Zukunft noch Filter hinzufügen muss, wird der Code dann sehr lang, vielleicht sowas ähnliches?

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

Ich stimme für das Schließen dieser Frage als Off-Topic, weil es auf [** Code Review **] (http://www.codereview.stackexchange.com) sein sollte – Codexer

Antwort

0

Einfache Logik.

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