SearchDialog for UD102A (child) table

I want to trigger button click event with data of UD102A child table. When I tries to use searchwizard, it calls adapter of ud102 but I am getting only header rows. Any way to do that?

Dear Vishal,

You can call the UD102A adapter and search the data by using below mentioned code

private void CallUD101AdapterGetRowsMethod()
UD101Adapter adapterUD101 = new UD101Adapter(this.oTrans);
Epicor.Mfg.UI.Searches.SearchOptions opts = new SearchOptions(SearchMode.AutoSearch);
string whereClause = “Key1 = '” + “NG00000313” + “’”;
bool MorePages = false;
opts.DataSetMode = DataSetMode.ListDataSet;
opts.NamedSearch.WhereClauses.Add(“UD101”, String.Format(whereClause));
System.Data.DataSet dsUD101 = adapterUD101.GetRows(opts, out MorePages);

	} catch (System.Exception ex)

Thanks Hari but I need Searhfrom not just do autosearch

UD102Adapter adapterUD102 = new UD102Adapter(this.oTrans);
Ice.Lib.Searches.SearchOptions opts = new SearchOptions(SearchMode.ShowDialog);
string whereClause = ""; //“Key1 = '” + “NG00000313” + “’”;
bool MorePages = true;
opts.DataSetMode = DataSetMode.RowsDataSet;
opts.NamedSearch.WhereClauses.Add("UD102A", String.Format(whereClause));

with that I can retrieve UD102 data not UD102A. May be we can do this by quick search

Not sure if this sparks an idea. But I’ve done a Runtime Search in the past, never tried to see if a dialog will open.

private string GetVehicleName(string oem_key, string vehicle_key)
	// create Hashtable of tableName
	System.Collections.Hashtable myHash = new System.Collections.Hashtable();
	string wClause = "Key1 = '" + oem_key + "' and ChildKey1 = '" + vehicle_key + "'";

	// add table name (key) and where clause to Hashtable
	myHash.Add("UD100A", wClause);

	// Create SearchOptions object
	SearchOptions opts = Ice.Lib.Searches.SearchOptions.CreateRuntimeSearch(myHash, DataSetMode.RowsDataSet);

	// Call Adapter InvokeSearch()

	if (ud100Adapter.UD100Data.UD100A.Rows.Count > 0)
		return ud100Adapter.UD100Data.UD100A[0]["Character01"].ToString();

	return "";

I always prefer Quick Search

private void btnJob_Click(object sender, System.EventArgs args)
	// Quick Search I do keep a , delimited calculated field so I can get 3 values in my split versus just the 1. But you might just need 1.
	object selected = ProcessCaller.InvokeAdapterMethod(oTrans.EpiBaseForm, "QuickSearchAdapter", "ShowQuickSearchForm", new object[] {
		oTrans.EpiBaseForm, "XYZ-JobsReadyForProcessing", false /* multi-select */, new DataTable()

	// Got Record?
	if (selected != null)
		string jobNum = selected.ToString().Split(',')[0];
		string partNum = selected.ToString().Split(',')[1];
		string partRev = selected.ToString().Split(',')[2];

If you do allow for multi-select then you will handle it w/ something like:

ArrayList selections = selected as ArrayList ?? new ArrayList { selected.ToString() };
selections.Sort(); // ASC

foreach (string row in selections)

1 Like

Hi Haso,

Quick Search works for me. But usually Quick Search returns only one column but in what way you are returning 3 values and do split later to get all 3 values?

I just make a Calculated Column called Calculated_KeyValues in my BAQ that the QS calls and then in there I add 3 Columns and then I set that as my return column on Quick Search.

If you don’t need 3, 4, 5, 6 returned to your data set you don’t have to do as I do. I guess I could have even returned JobNum and then gotten the details using BO,Adapter, but I decided to save on the call.

okay I got it. Thanks Haso for your replies :slight_smile:

Hi @hkeric.wci,

Can I enter filter value in the quick search filter field via code?

No, unless you replicate the entire Quick Search Panel or atleast a big portion of it.