चूंकि आप Oracle का उपयोग करते हैं, इसलिए आपको डायनेमिक SQL के बजाय एक बाइंड वैरिएबल का उपयोग करना चाहिए और फिर कमांड ऑब्जेक्ट के पैरामीटर संग्रह में मान सेट करना चाहिए। यह न केवल SQL इंजेक्शन को रोकेगा, बल्कि यह आपकी क्वेरी को बेहतर ढंग से अनुकूलित करेगा।
साथ ही, ऐसा लगता है कि आपके SQL कथन में खंड के क्रम से पहले कोई स्थान नहीं है। यह आसानी से आपकी त्रुटि का कारण बन सकता है। नीचे देखें - परीक्षण नहीं किया गया, लेकिन आपको विचार देना चाहिए।
SQL = "SELECT A.cust_ky, A.incid_id, A.OPEN_TS, A.CLOSE_TS, A.REC_UPD_TS, B.wrkgp_id, A.CURR_AGNT_KY, A.incid_ttl_dn " _
& "FROM (MAINTBLS.INCID_FAB A INNER JOIN MAINTBLS.DEPTMNT B ON A.curr_wrkgp_ky=B.wrkgp_ky) " _
& "WHERE B.wrkgp_id= :wrkgp And (A.open_fg = 1 OR A.pend_fg = 1) " _
& "ORDER BY A.cust_ky, A.curr_agnt_ky ASC"
With cmd
.ActiveConnection = conn
.CommandText = SQL
.CommandType = adCmdText
.Parameters.Append .CreateParameter(, adVarChar, adParamInput, wrkgp)
End With