Hello All,
I've been plugging away at testing some VBA SQL that executes when a user clicks a button from a 'custom query' form. The user has lots of options as to what parameters should be included in the query, so there might be a better way to handle the syntax here. My main concern right now is just possible getting a fresh set of eyes on the VBA to see what I'm missing. I'm using the form's textbox field txtKitNum (strKit) to test the query, but no matter which textbox field I try to use, I get the right parenthesis missing error. Also, I'm using option groups to toggle query parameters, so if there is a better way to check the fields for nulls and modify the SQL accordingly, please put words to it.
Attached is a pic of the form if you're like me and are a visual person.
Thanks!
Here's the code:
Any help/insight appreciated.
Thanks in advance,
dbrother
I've been plugging away at testing some VBA SQL that executes when a user clicks a button from a 'custom query' form. The user has lots of options as to what parameters should be included in the query, so there might be a better way to handle the syntax here. My main concern right now is just possible getting a fresh set of eyes on the VBA to see what I'm missing. I'm using the form's textbox field txtKitNum (strKit) to test the query, but no matter which textbox field I try to use, I get the right parenthesis missing error. Also, I'm using option groups to toggle query parameters, so if there is a better way to check the fields for nulls and modify the SQL accordingly, please put words to it.
Attached is a pic of the form if you're like me and are a visual person.
Thanks!
Here's the code:
Code:
strSQL = "SELECT ALL DRPROD.DR_SALES_ORDERS.BASE_ORDER_NUMBER, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDERS.SALES_ORDER_NUMBER, DRPROD.DR_SALES_ORDER_LINES.BASE_PART||'-'||DRPROD.DR_SALES_ORDER_LINES.PAINT_CODE||'-'||DRPROD.DR_SALES_ORDER_LINES.PACK_CODE PART#, "
strSQL = strSQL & "DRPROD.DR_SALABLE_PRODUCTS.PART_DESCRIPTION, "
strSQL = strSQL & "DRPROD.DR_SHIPMENT_PACKAGING.LOT_CODE, DRPROD.DR_SALES_ORDERS.BASE_ORDER_LINE_NUMBER, "
strSQL = strSQL & "DRPROD.DR_SHIPMENT_LINES.SHIPMENT_NUMBER, DRPROD.DR_SHIPMENT_LINES.SHIP_DATE, "
strSQL = strSQL & "DRPROD.DR_SHIPMENTS.CARRIER_NAME, DRPROD.DR_CUSTOMER_GENERAL.CUSTOMER_NAME, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDERS.PURCHASE_ORDER_NUMBER "
strSQL = strSQL & "FROM DRPROD.DR_CUSTOMER_GENERAL, DRPROD.DR_SALES_ORDERS, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDER_LINES, DRPROD.DR_SHIPMENTS, DRPROD.DR_SHIPMENT_LINES, "
strSQL = strSQL & "DRPROD.DR_SHIPMENT_PACKAGING , DRPROD.DR_SALABLE_PRODUCTS "
strSQL = strSQL & "WHERE (DRPROD.DR_SALES_ORDER_LINES.FOB_PLANT_NUMBER='089' "
strSQL = strSQL & "AND DRPROD.DR_SHIPMENTS.FOB_PLANT_NUMBER='089' "
' *** add SQL for each field in Serial Data option group
If optgrpSerial.Value = 1 Then
If IsNull(txtSN.Value) Then
'do nothing
Else
strSN = txtSN.Value
strSQL = strSQL & "AND DRPROD.DR_SHIPMENT_PACKAGING.LOT_CODE LIKE '" & strSN & "' "
End If
If IsNull(txtKitNum.Value) Then
'do nothing
Else
strKit = txtKitNum.Value
strSQL = strSQL & "BASE_PART||'-'||DRPROD.DR_SALES_ORDER_LINES.PAINT_CODE||'-'||DRPROD.DR_SALES_ORDER_LINES.PACK_CODE LIKE '" & strKit & "') "
End If
If IsNull(cboSerialType.Value) Then
'do nothing
Else
strSNType = cboSerialType.Value
strSQL = strSQL & "AND DRPROD.DR_SHIPMENT_PACKAGING.LOT_CODE LIKE '" & strSNType & "' & '%' "
End If
Else
'do nothing
End If
If optgrpSerial.Value = 1 And IsNull(strSN) And IsNull(strKit) And IsNull(strSNType) Then
MsgBox "If you have the 'Serial Data' group enabled, you must enter or choose a value in at least one of the fields.", vbCritical, "NO VALUES ENTERED"
Else
' do nothing
End If
' *** end statments for Serial Data option group
' *** add SQL for each field in Date Rage option group
If optgrpDate.Value = 1 Then
strFromDate = dteFrom.Value
strToDate = dteTo.Value
strSQL = strSQL & "AND DRPROD.DR_SHIPMENTS.SHIP_DATE >= '" & strFromDate & "'"
strSQL = strSQL & "AND DRPROD.DR_SHIPMENTS.SHIP_DATE <= '" & strToDate & "'"
Else
'do nothing
End If
' *** end statements for Date Range option group
' *** add SQL for Order Data option Group
If optgrpOrder.Value = 1 Then
If IsNull(txtCustPO.Value) Then
'do nothing
Else
strCustPO = txtCustPO.Value
strSQL = strSQL & "AND DRPROD.DR_SALES_ORDERS.PURCHASE_ORDER_NUMBER LIKE '" & strCustPO & "' "
End If
If IsNull(txtBaseNum.Value) Then
'do nothing
Else
strBaseNum = txtBaseNum.Value
strSQL = strSQL & "AND DRPROD.DR_SALES_ORDERS.BASE_ORDER_NUMBER LIKE '" & strBaseNum & "' "
End If
Else
'do nothing
End If
If optgrpOrder.Value = 1 And IsNull(strCustPO) And IsNull(strBaseNum) Then
MsgBox "If you have the 'Order Data' group enabled, you must enter or choose a value in at least one of the fields.", vbCritical, "NO VALUES ENTERED"
Else
' do nothing
End If
strSQL = strSQL & "AND ((DRPROD.DR_SALES_ORDERS.SALES_ORDER_NUMBER=DRPROD.DR_SALES_ORDER_LINES.ORDER_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SALES_ORDERS.SOLD_TO_NUMBER=DRPROD.DR_CUSTOMER_GENERAL.CUSTOMER_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SALES_ORDER_LINES.ORDER_NUMBER=DRPROD.DR_SHIPMENT_LINES.ORDER_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SHIPMENT_LINES.SHIPMENT_NUMBER=DRPROD.DR_SHIPMENTS.SHIPMENT_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SHIPMENT_LINES.SHIPMENT_NUMBER=DRPROD.DR_SHIPMENT_PACKAGING.SHIPMENT_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SALES_ORDER_LINES.ORDER_NUMBER=DRPROD.DR_SHIPMENT_PACKAGING.ORDER_NUMBER) "
strSQL = strSQL & "AND (DRPROD.DR_SALES_ORDER_LINES.PART_NUMBER=DRPROD.DR_SALABLE_PRODUCTS.PART_NUMBER)) "
strSQL = strSQL & "GROUP BY DRPROD.DR_SALES_ORDERS.BASE_ORDER_NUMBER, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDERS.SALES_ORDER_NUMBER, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDER_LINES.BASE_PART||'-'||DRPROD.DR_SALES_ORDER_LINES.PAINT_CODE||'-'||DRPROD.DR_SALES_ORDER_LINES.PACK_CODE, "
strSQL = strSQL & "DRPROD.DR_SALABLE_PRODUCTS.PART_DESCRIPTION, "
strSQL = strSQL & "DRPROD.DR_SHIPMENT_PACKAGING.LOT_CODE, DRPROD.DR_SALES_ORDERS.BASE_ORDER_LINE_NUMBER, "
strSQL = strSQL & "DRPROD.DR_SHIPMENT_LINES.SHIPMENT_NUMBER, DRPROD.DR_SHIPMENT_LINES.SHIP_DATE, "
strSQL = strSQL & "DRPROD.DR_SHIPMENTS.CARRIER_NAME, DRPROD.DR_CUSTOMER_GENERAL.CUSTOMER_NAME, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDERS.PURCHASE_ORDER_NUMBER "
strSQL = strSQL & "ORDER BY DRPROD.DR_SALES_ORDERS.BASE_ORDER_NUMBER ASC, "
strSQL = strSQL & "DRPROD.DR_SALES_ORDERS.SALES_ORDER_NUMBER Asc "
Set rst1 = con1.Execute(strSQL)
Thanks in advance,
dbrother
Comment