Long ll_cnt, row String ls_loop_where String ls_table String ls_column String ls_data_type String ls_prompt String ls_operator String ls_value String ls_logical String ls_o_brac String ls_c_brac SETNULL ( ls_loop_where ) DataStore ds_query ds_query = Create DataStore ds_query.DataObject = "ds_cf_query_list" ds_query.SetTransObject(sqlca) ds_query.Reset() row = ds_query.Retrieve(gs_site, al_rowid, 'F') If row > 0 Then For ll_cnt = 1 To row ls_table = ds_query.GetItemString(ll_cnt, "cf_query_list_table") ls_column = ds_query.GetItemString(ll_cnt, "cf_query_list_column") ls_data_type = ds_query.GetItemString(ll_cnt, "cf_query_list_data_type") ls_operator = ds_query.GetItemString(ll_cnt, "cf_query_list_operator") ls_value = ds_query.GetItemString(ll_cnt, "cf_query_list_value") ls_logical = ds_query.GetItemString(ll_cnt, "cf_query_list_logical") ls_o_brac = ds_query.GetItemString(ll_cnt, "cf_query_list_o_bracket") ls_c_brac = ds_query.GetItemString(ll_cnt, "cf_query_list_c_bracket") If IsNull ( ls_o_brac ) Then ls_o_brac = '' If IsNull ( ls_c_brac ) Then ls_c_brac = '' If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_data_type = "varchar" End If Choose Case ls_data_type Case 'char', 'varchar', 'nvarchar' If ll_cnt = 1 Then If ls_operator = 'is' Or ls_operator = 'is not' Then If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = "( " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " " + ls_value + "" + ls_c_brac Else ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac End If ElseIf ls_operator = 'like' Or ls_operator = 'not like' Then If ls_value = "gs_empl_id" And Len(gs_empl_id) > 0 Then ls_value = gs_empl_id If ls_value = "gs_work_group" And Len(gs_work_group) > 0 Then ls_value = gs_work_group If POS(ls_value, "%") > 0 Then If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = "( " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " '" + ls_value + "'" + ls_c_brac Else ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " '" + ls_value + "'" + ls_c_brac End If Else If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = "( " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " '%" + ls_value + "%'" + ls_c_brac Else ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " '%" + ls_value + "%'" + ls_c_brac End If End If Else If ls_value = "gs_empl_id" And Len(gs_empl_id) > 0 Then ls_value = gs_empl_id If ls_value = "gs_work_group" And Len(gs_work_group) > 0 Then ls_value = gs_work_group If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = "( " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + "'" + ls_value + "'" + ls_c_brac Else ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + "'" + ls_value + "'" + ls_c_brac End If End If Else If ls_operator = 'is' Or ls_operator = 'is not' Then If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = ls_loop_where + " " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " " + ls_value + "" + ls_c_brac Else ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac End If ElseIf ls_operator = 'like' Or ls_operator = 'not like' Then If ls_value = "gs_empl_id" And Len(gs_empl_id)> 0 Then ls_value = gs_empl_id If ls_value = "gs_work_group" And Len(gs_work_group) > 0 Then ls_value = gs_work_group If POS(ls_value, "%") > 0 Then If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = ls_loop_where + " " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " '" + ls_value + "'" + ls_c_brac Else ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " '" + ls_value + "'" + ls_c_brac End If Else If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = ls_loop_where + " " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + " '%" + ls_value + "%'" + ls_c_brac Else ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " '%" + ls_value + "%'" + ls_c_brac End If End If Else If ls_value = "gs_empl_id" And Len(gs_empl_id) > 0 Then ls_value = gs_empl_id If ls_value = "gs_work_group" And Len(gs_work_group) > 0 Then ls_value = gs_work_group If ls_column = "mtr_mst_received_status" Or ls_column = "pur_mst_convert_status" Or ls_column = "puo_mst_received_status" Or ls_column = 'pur_mst_approver' Then ls_loop_where = ls_loop_where + " " + ls_o_brac + f_build_query_predefined( ls_column, ls_value ) + " " + ls_operator + "'" + ls_value + "'" + ls_c_brac Else ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + "'" + ls_value + "'" + ls_c_brac End If End If End If Case 'numeric', 'int' If ll_cnt = 1 Then ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + ls_c_brac Else ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + ls_c_brac End If Case 'datetime' If ll_cnt = 1 Then If ls_operator = 'is' Or ls_operator = 'is not' Then ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac Else If POS(UPPER(ls_value), "GETDATE()") > 0 Then ls_loop_where = "( " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac ElseIf POS(UPPER(ls_value), "TODAY()") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "TODAY", "GETDATE") ls_loop_where = ls_o_brac + "( " + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101)) " + ls_operator + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_value + ", 101)) " + ls_c_brac ElseIf POS(UPPER(ls_value), "YEAR") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "YEAR", "DATEPART(YEAR, GETDATE())") ls_loop_where = ls_o_brac + "( " + " YEAR(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac ElseIf POS(UPPER(ls_value), "MONTH") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "MONTH", "DATEPART(MONTH, GETDATE())") ls_loop_where = ls_o_brac + "( " + " MONTH(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac ElseIf POS(UPPER(ls_value), "DAY") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "DAY", "DATEPART(DAY, GETDATE())") ls_loop_where = ls_o_brac + "( " + " DAY(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac Else ls_loop_where = ls_o_brac + "( " + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101)) " + ls_operator + " '" + string(datetime(date(ls_value)), "yyyy-mm-dd") + "'" + ls_c_brac End If End If Else If ls_operator = 'is' Or ls_operator = 'is not' Then ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac Else If POS(UPPER(ls_value), "GETDATE()") > 0 Then ls_loop_where = ls_loop_where + " " + ls_o_brac + ls_table + "." + ls_column + " " + ls_operator + " " + ls_value + "" + ls_c_brac ElseIf POS(UPPER(ls_value), "TODAY()") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "TODAY", "GETDATE") ls_loop_where = ls_loop_where + ls_o_brac + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101)) " + ls_operator + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_value + ", 101)) " + ls_c_brac ElseIf POS(UPPER(ls_value), "YEAR") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "YEAR", "DATEPART(YEAR, GETDATE())") ls_loop_where = ls_loop_where + ls_o_brac + " " + " YEAR(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac ElseIf POS(UPPER(ls_value), "MONTH") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "MONTH", "DATEPART(MONTH, GETDATE())") ls_loop_where = ls_loop_where + ls_o_brac + " " + " MONTH(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac ElseIf POS(UPPER(ls_value), "DAY") > 0 Then ls_value = f_replace_string(UPPER(ls_value), "DAY", "DATEPART(DAY, GETDATE())") ls_loop_where = ls_loop_where + ls_o_brac + " " + " DAY(CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101))) " + ls_operator + " " + ls_value + " " + ls_c_brac Else ls_loop_where = ls_loop_where + ls_o_brac + " CONVERT(DATETIME, CONVERT(VARCHAR, " + ls_table + "." + ls_column + " , 101)) " + ls_operator + " '" + string(datetime(date(ls_value)), "yyyy-mm-dd") + "'" + ls_c_brac End If End If End If End Choose If ll_cnt = row Then ls_loop_where = ls_loop_where + " ) " Else ls_loop_where = ls_loop_where + " " + ls_logical End If Next End If Destroy ds_query Return ls_loop_where