/// <summary> /// Make sure a duplicate category name is not added /// </summary> /// <param name="name"></param> private void CheckCategory(string name) { if (QueryCategories.Any(x => x.Name == name)) { throw new Exception("A Category for '" + name + "' already exists in query " + QueryName); } }
private void btnCreateQueries_Click(object sender, EventArgs e) { UserQueries oUserQueries = (SAPbobsCOM.UserQueries)AddOnUtilities.oCompany.GetBusinessObject(BoObjectTypes.oUserQueries); QueryCategories oQueryCategories = (SAPbobsCOM.QueryCategories)AddOnUtilities.oCompany.GetBusinessObject(BoObjectTypes.oQueryCategories); int lRetCode = 0, queryCategoryId = 0; string strQuery = "select \"CategoryId\" from \"OQCN\" where \"CatName\" = 'Customization'"; SAPbobsCOM.Recordset oRecordSet = ((SAPbobsCOM.Recordset)(AddOnUtilities.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset))); oRecordSet.DoQuery(strQuery); bool isQueryCategoryExist = Convert.ToBoolean(oRecordSet.Fields.Item(0).Value); if (!isQueryCategoryExist) { oQueryCategories.Name = "Customization"; oQueryCategories.Permissions = "YYYYYYYYYYYYYYY"; lRetCode = oQueryCategories.Add(); if (lRetCode != 0) { string errMsg = AddOnUtilities.oCompany.GetLastErrorDescription(); MessageBox.Show("Failed to create Query Category."); MessageBox.Show(errMsg); } System.Runtime.InteropServices.Marshal.ReleaseComObject(oQueryCategories); } List <string[]> lstQueryList = AddOnUtilities.ReadQueries("C:\\Users\\LynnHtet\\Desktop\\UserQueryList.txt"); queryCategoryId = Convert.ToInt32(oRecordSet.Fields.Item(0).Value); foreach (string[] query in lstQueryList) { oUserQueries.QueryDescription = query[0]; oUserQueries.Query = query[1]; oUserQueries.QueryType = UserQueryTypeEnum.uqtWizard; oUserQueries.QueryCategory = queryCategoryId; lRetCode = oUserQueries.Add(); if (lRetCode != 0) { string errMsg = AddOnUtilities.oCompany.GetLastErrorDescription(); MessageBox.Show("Failed to create Query Category."); MessageBox.Show(errMsg); } } }
public static bool CreateCustomQueries(string qryCategory) { Recordset oRecordSet = oCompany.GetBusinessObject(BoObjectTypes.BoRecordset); UserQueries oUserQueries = (SAPbobsCOM.UserQueries)AddOnUtilities.oCompany.GetBusinessObject(BoObjectTypes.oUserQueries); QueryCategories oQueryCategories = (SAPbobsCOM.QueryCategories)AddOnUtilities.oCompany.GetBusinessObject(BoObjectTypes.oQueryCategories); int lRetCode = 0, queryCategoryId = 0; try { string strQuery = "SELECT \"CategoryId\" FROM \"OQCN\" WHERE \"CatName\" = '" + qryCategory + "'"; oRecordSet = ((SAPbobsCOM.Recordset)(AddOnUtilities.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset))); oRecordSet.DoQuery(strQuery); if (oRecordSet.RecordCount < 1) { string tmp = oRecordSet.Fields.Item(0).Value.ToString(); bool isQueryCategoryExist = Convert.ToBoolean(oRecordSet.Fields.Item(0).Value); if (!isQueryCategoryExist) //Create only if query category is not created yet. { oQueryCategories.Name = qryCategory; oQueryCategories.Permissions = "YYYYYYYYYYYYYYY"; lRetCode = oQueryCategories.Add(); if (lRetCode != 0) { string errMsg = AddOnUtilities.oCompany.GetLastErrorDescription(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(oQueryCategories); } } List <string[]> lstQueryList = AddOnUtilities.ReadQueries(); queryCategoryId = Convert.ToInt32(oRecordSet.Fields.Item(0).Value); foreach (string[] query in lstQueryList) { string queryDescription = query[0]; strQuery = "SELECT \"QName\" FROM OUQR WHERE \"QCategory\" = (SELECT \"CategoryId\" FROM OQCN WHERE \"CatName\" = '" + qryCategory + "') AND \"QName\" = '" + queryDescription + "'"; oRecordSet.DoQuery(strQuery); if (oRecordSet.RecordCount == 0) { oUserQueries.QueryDescription = queryDescription; oUserQueries.Query = query[1]; oUserQueries.QueryType = UserQueryTypeEnum.uqtWizard; oUserQueries.QueryCategory = queryCategoryId; lRetCode = oUserQueries.Add(); if (lRetCode != 0) { string errMsg = AddOnUtilities.oCompany.GetLastErrorDescription(); AddOnUtilities.MsgBoxWrapper(errMsg, MsgBoxType.B1StatusBar, BoMessageTime.bmt_Short, true); } } } } catch (Exception ex) { throw; } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(oQueryCategories); } return(lRetCode == 0); }
internal override string GetFormattedDescription() { return(QueryCategories .With(x => x[0]) .Return(x => x.Name, string.Empty)); }
internal override string GetFormattedKey() { return("[" + QueryCategories .With(x => x[0]) .Return(x => x.Name, string.Empty) + "]"); }