首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-03-25 
谁能优化一下下面的代码using Systemusing System.Collections.Genericusing System.Linqusing System.

谁能优化一下下面的代码


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这么长,不能用存储过程么?

热点排行