读书人

哪位高手能优化一上上面的代码

发布时间: 2013-03-25 15:43:04 作者: rapoo

谁能优化一下下面的代码


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SysSap.SAP.CONN;
using System.Xml.Linq;
using Model.baseCls.db;

namespace SysSap.SAP.Master
{
public class MasterOITM
{

public static string OITM(string ItemCode)
{
try
{
//查询物料主数据的信息
SAPbobsCOM.Items oItems, iItems;
oItems = (SAPbobsCOM.Items)DIConn.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
iItems = (SAPbobsCOM.Items)DIConn.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
int lRetCode;
DIConn.oCompany.XmlExportType = SAPbobsCOM.BoXmlExportTypes.xet_ExportImportMode;
SqlHelper obj_SqlHelper = new SqlHelper();
string estrSql = "Select ItemCode From SAP_OITM A LEFT JOIN SAP_OITB B ON A.ItmsGrpCod=B.Grpid Where ItemCode ='" + ItemCode + "'";
string eStr = obj_SqlHelper.runCol(estrSql);
if (eStr != "")
{
System.Data.DataTable Items, ItemsuserField, Items_Price, ItemWare, ItemWareuserField, ItemCardCode;//定义数据表
SAPbobsCOM.Recordset oRecordset;
oRecordset = (SAPbobsCOM.Recordset)DIConn.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
string userField = @"Select A.name From Syscolumns A,Sysobjects B
Where B.Name= 'SAP_OITM' And A.id=B.id And LEFT(a.name,2)='U_'";
ItemsuserField = obj_SqlHelper.retDataTable(userField);


userField = "";
for (int m = 0; m < ItemsuserField.Rows.Count; m++)
{
userField = userField + ItemsuserField.Rows[m][0].ToString() + ",";
}
if (userField != "")
{
userField = userField.Substring(0, userField.Length - 1);
}
string strSql = @"Select ItemCode,ItemName,B.DOCENTRY[ItemsGroupCode],-1[CustomsGroupCode],CODEBARS[BarCode],
FRGNNAME[ForeignName],ItemType,ISSUEMTHD[IssueMethod],MANBTCHNUM[ManageBatchNumbers],ManSerNum[ManageSerialNumbers],
ISNULL(MNGMETHOD,'R')[SRIAndBatchManageMethod],VALIDFOR[Valid],FROZENFOR[Frozen],USERTEXT[User_Text],CARDCODE[Mainsupplier],
BUYUNITMSR[PurchaseUnit],SALUNITMSR[SalesUnit],NUMINBUY[PurchaseQtyPerPackUnit],PLANINGSYS[PlanningSystem],
PRCRMNTMTD[ProcurementMethod],ORDRMULTI[OrderMultiple],LeadTime,MINORDRQTY[MinOrderQuantity],INVNTRYUOM[InventoryUOM],
EVALSYSTEM[CostAccountingMethod],PicturName[Picture],DfltWH[DefaultWarehouse],
CASE InvntItem when '0' then 'N' ELSE 'Y' END AS InventoryItem,CASE SellItem when '0' then 'N' ELSE 'Y' END AS SalesItem,
CASE PrchseItem when '0' then 'N' ELSE 'Y' END AS PurchaseItem,CASE AssetItem when '0' then 'N' ELSE 'Y' END AS AssetItem";



if (userField != "")
{
strSql = strSql + "," + userField;
}
strSql += " From SAP_OITM A LEFT JOIN SAP_OITB B ON A.ItmsGrpCod=B.Grpid Where ItemCode ='" + ItemCode + "'";

//讲查询的信息赋予DataTable
Items = obj_SqlHelper.retDataTable(strSql);

//查询物料主数据对应的价格清单
string lineSql = @"SELECT Docid[PriceList],0.000000[Price] From SAP_OPLN Order By Docid ";
Items_Price = obj_SqlHelper.retDataTable(lineSql);
userField = @"Select A.name From Syscolumns A,Sysobjects B
Where B.Name= 'SAP_OITW' And A.id=B.id And LEFT(a.name,2)='U_'";
ItemWareuserField = obj_SqlHelper.retDataTable(userField);
userField = "";
for (int m = 0; m < ItemWareuserField.Rows.Count; m++)
{
userField = userField + ItemWareuserField.Rows[m][0].ToString() + ",";
}



还有你SQL这么长,不能用存储过程么?

读书人网 >C#

热点推荐