您的位置:首页 > 其它

用友T6-ERP系统技术解析(二)销售订单(四)

2015-06-03 19:07 441 查看
用友T6-ERP系统技术解析(二)销售订单(四)

查询功能的实现

点击销售订单界面上的查询按钮就会弹出一个查询的界面,在查询界面上单击销售订单DGV时,销售订单明细DGV就会显示出选中订单的明细信息图(2.4-4),双击销售订单查询界面的销售订单DGV时销售订单界面便会跳转到选中的订单信息界面如图(2.4-5),在查询界面可以根据条件查询来查询出你需要的订单如图(2.4-6)。



图(2.4-4)

第一步:数据库存储过程代码

if(@Type='frm_SalesOrderSelect_SelectdgvSalesOrder')--绑定销售订单明细
begin
SELECT     SalesOrderSheet.SalesOrderDetailID AS 销售订单明细ID, SalesOrderSheet.TheInventoryID AS 存货ID, TheInventoryTable.ProductID AS 产品ID, TheProductTable.ProductCode AS 产品编码,
TheProductTable.ProductName AS 产品名称, TheProductTable.ProductSpecificationsID AS 产品规格型号ID, ProductSpecificationTable.ProductSpecificationModelName AS 产品规格型号名称,
TheProductTable.TheMeasuringUnitID AS 产品计量单位ID, ProductUnitsTable.ProductMeasuringUnitName AS 产品计量单位名称, TheProductTable.TheUnitPrice AS 单价,
SalesOrderSheet.TheSalesOrderID AS 销售订单ID, SalesOrderSheet.Amount AS 金额, SalesOrderSheet.Quantity AS 数量, TheProductTable.TaxPrice AS 含税单价
FROM         SalesOrderSheet INNER JOIN
TheInventoryTable ON SalesOrderSheet.TheInventoryID = TheInventoryTable.TheInventoryID INNER JOIN
TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID INNER JOIN
ProductSpecificationTable ON TheProductTable.ProductSpecificationsID = ProductSpecificationTable.ProductSpecificationsID INNER JOIN
ProductUnitsTable ON TheProductTable.TheMeasuringUnitID = ProductUnitsTable.TheMeasuringUnitID
where SalesOrderSheet.TheSalesOrderID=@TheSalesOrderID--根据销售订单明细表的销售订单ID查询
end


第二步:服务端代码

[OperationContract]
public DataSet frm_SalesOrderSelect_SelectdgvSalesOrder(int TheSalesOrderID)//查询销售订单明细
{
SqlParameter[] SQlCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@TheSalesOrderID", SqlDbType.Int),//销售订单ID

};
SQlCMDpas[0].Value = "frm_SalesOrderSelect_SelectdgvSalesOrder";
SQlCMDpas[1].Value = TheSalesOrderID;

DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrderSelect", SQlCMDpas);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}


第三步:界面层代码:

Dgv的单击事件

private void dgvSalesNumber_CellClick(object sender, DataGridViewCellEventArgs e)
{
dgvList.DataSource = myfrm_SalesOrderSelectClient.frm_SalesOrderSelect_SelectdgvSalesOrder(Convert.ToInt32
(dgvSalesNumber.CurrentRow.Cells["销售订单ID"].Value)).Tables[0];//根据选中的销售订单ID来绑定dgv明细
}




图(2.4-5)

第一步:数据库存储过程

if(@Type='frm_SalesOrderSelect_SelectBalanceSalesOrderSheet')--查询销售订单
begin
SELECT     BalanceSalesOrderSheet.TheSalesOrderID AS 销售订单ID, BalanceSalesOrderSheet.BusinessTypeID AS 业务类型ID, BalanceSalesOrderSheet.DocumentID AS 单据ID,
BalanceSalesOrderSheet.Rate AS 税率, BalanceSalesOrderSheet.CustomerID AS 客户ID, BalanceSalesOrderSheet.TermsOfPaymentID AS 付款条件ID,
BalanceSalesOrderSheet.DepartmentID AS 部门ID, BalanceSalesOrderSheet.TheOperatorID_Salesman AS 业务员ID, BalanceSalesOrderSheet.Note AS 备注,
BalanceSalesOrderSheet.CurrencyID AS 币别ID, TheDocumentsTable.DocumentNumber AS 订单号, TheDocumentsTable.DateOfDocuments AS 订单日期,
DepartmentTable.DepartmentName AS 部门名称, TheOperatorTable.TheOperatorTypeName AS 业务员, CurrencyTable.NameOfCurrency AS 币别名称,
TermsOfPaymentTable.TermsOfPaymentName AS 付款条件名称, TheCustomerTable.Customer AS 客户简称, BalanceSalesOrderSheet.SalesTypeID AS 销售类型ID, CurrencyTable.Currency AS 汇率,
BalanceSalesOrderSheet.ReviewWhether AS 审核否, BusinessTypeTable.BusinessTypeNname AS 业务类型名称, SalesTypeTable.SalesTypeName AS 销售类型名称
FROM         BalanceSalesOrderSheet INNER JOIN
BusinessTypeTable ON BalanceSalesOrderSheet.BusinessTypeID = BusinessTypeTable.BusinessTypeID INNER JOIN
SalesTypeTable ON BalanceSalesOrderSheet.SalesTypeID = SalesTypeTable.SalesTypeID LEFT OUTER JOIN
TheDocumentsTable ON BalanceSalesOrderSheet.DocumentID = TheDocumentsTable.DocumentID LEFT OUTER JOIN
TheCustomerTable ON BalanceSalesOrderSheet.CustomerID = TheCustomerTable.CustomerID LEFT OUTER JOIN
DepartmentTable ON BalanceSalesOrderSheet.DepartmentID = DepartmentTable.DepartmentID LEFT OUTER JOIN
CurrencyTable ON BalanceSalesOrderSheet.CurrencyID = CurrencyTable.CurrencyID LEFT OUTER JOIN
TermsOfPaymentTable ON BalanceSalesOrderSheet.TermsOfPaymentID = TermsOfPaymentTable.TermsOfPaymentID LEFT OUTER JOIN
TheOperatorTable ON BalanceSalesOrderSheet.TheOperatorID_Salesman = TheOperatorTable.TheOperatorID
End


第二步:服务端代码

[OperationContract]
public DataSet frm_SalesOrderSelect_SelectBalanceSalesOrderSheet()//查询销售订单
{
SqlParameter[] SQlCMDpas = {
new SqlParameter("@Type", SqlDbType.Char),

};
SQlCMDpas[0].Value = "frm_SalesOrderSelect_SelectBalanceSalesOrderSheet";

DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrderSelect", SQlCMDpas);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}


第三步:界面层代码

frm_SalesOrder F_SalesOrder;
public frm_SalesOrderSelect(frm_SalesOrder f_SalesOrder)
{
F_SalesOrder = f_SalesOrder;//窗口传值
InitializeComponent();
}
DataTable dtBalanceSalesOrderSheet = new DataTable();//实例化一个销售订单表
DataTable dt = new DataTable();//实例化一张表
int intTpage;//页数
窗口的Load事件
private void frm_SalesOrderSelect_Load(object sender, EventArgs e)
{
this.Size = new Size(868, 673);//设置窗体大小
dtBalanceSalesOrderSheet = myfrm_SalesOrderSelectClient.frm_SalesOrderSelect_SelectBalanceSalesOrderSheet().Tables[0];
dgvSalesNumber.DataSource = dtBalanceSalesOrderSheet;//绑定数据源

dt.Columns.Add("销售订单ID");//表添加销售订单ID
dt.Columns.Add("索引");//添加索引
for (int intCount = 0; intCount < dtBalanceSalesOrderSheet.Rows.Count; intCount++)//遍历销售订单表
{
dt.Rows.Add();//表添加行
dt.Rows[dt.Rows.Count - 1]["销售订单ID"] = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[intCount]["销售订单ID"]);//将销售订单表中的销售订单ID赋值到动态表里面
dt.Rows[dt.Rows.Count-1]["索引"]=intCount;//赋值索引
}
}
dgvSalesNumber单击事件
private void dgvSalesNumber_CellClick(object sender, DataGridViewCellEventArgs e)
{
for (int Count = 0; Count < dt.Rows.Count;Count++ )//遍历表
{
if (dt.Rows[Count]["销售订单ID"].ToString().Trim() == dgvSalesNumber.CurrentRow.Cells["销售订单ID"].Value.ToString().Trim())//将选择dgvSalesNumber的销售订单ID赋值给dt表
{
labTpage.Text = string.Format("{0}页", Convert.ToInt32(dt.Rows[Count]["索引"].ToString().Trim()) + 1);//显示当前页数文本
intTpage = Convert.ToInt32(dt.Rows[Count]["索引"].ToString().Trim());//获取索引(用于窗口传值)
}
}
//dgvSalesNumber双击事件
private void dgvSalesNumber_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
F_SalesOrder.RefreshNow(intTpage);//调用销售订单窗口的自定义方法
}
销售订单窗口的自定义方法
public void RefreshNow(int Page)//自定义方法
{
dtBalanceSalesOrderSheet = myfrm_SalesOrderClient.frm_SalesOrder_SelectBalanceSalesOrderSheet().Tables[0];//查询销售订单表
BingDingBalanceSalesOrderSheet(Page);//绑定销售订单(此方法在销售订单(一)已写)
BingDingList(Page);//绑定销售订单明细(此方法在销售订单(一)已写)

BingDingUsingStar(Page);//按钮限制(此方法在销售订单(一)已写)

}




图(2.4-6)

第一步·:界面层代码

按钮的单击事件

private void btnSelect_Click(object sender, EventArgs e)
{
string strSelect = "";//声明局部变量
DataView dv = new DataView(dtBalanceSalesOrderSheet);//实例化DataView并将表dtBalanceSalesOrderSheet绑定进去
if (txtNumber.Text!="")//订单号文本框不为空
{
strSelect += "订单号='" + txtNumber.Text + "'and";//拼接订单号信息
}
if (chkDate.Checked)//选择订单
{
strSelect += " 订单日期 >= '" + dtpStar.Value + "' and";//拼接大于等于订单日期的时间
strSelect += " 订单日期 <= '" + dtpOld.Value + "' and";//拼接小于等于订单日期的时间

}
if (chkApproved.Checked)//选择已审核
{
strSelect += " 审核否 = '" + true + "' and";//拼接已审核的信息
}
if(strSelect!="")//判断是否有选择查询条件
{
strSelect = strSelect.Remove(strSelect.Length - 3);//移除后三位(即and)
}
dv.RowFilter = strSelect;//筛选出已拼接的条件数据
dgvSalesNumber.DataSource = dv.ToTable();//将数据绑定到DGV
}


首张、上张、下张、末张功能实现
点击首张时界面数据会跳到第一页,点击上张时界面数据会跳到上一页,点击下张界面数据会跳到下页,点击末页截面数据会跳到最后一页如图(2.4-7)



图(2.4-7)
第一步:界面层代码

private void tlsbFirst_Click_1(object sender, EventArgs e)//首页按钮
{
intTpage = 0;//页数为0
int intCount = intTpage;//赋值
BingDingBalanceSalesOrderSheet(intCount);//绑定销售订单
BingDingList(intCount);//绑定销售订单明细
BingDingUsingStar(intCount);//按钮限制
}

private void tlsbLast_Click_1(object sender, EventArgs e)//上页按钮
{
intTpage--;//页数减少
int intCount = intTpage;//赋值
BingDingBalanceSalesOrderSheet(intCount);//销售订单
BingDingList(intCount);//销售订单明细
BingDingUsingStar(intCount);//按钮限制
}

private void tlsbNextPage_Click_1(object sender, EventArgs e)//下页按钮
{
intTpage++;//页数增加
int intCount = intTpage;//赋值
BingDingBalanceSalesOrderSheet(intCount);//销售订单
BingDingList(intCount);//销售订单明细
BingDingUsingStar(intCount);//按钮限制
}

private void tlsbFinal_Click_1(object sender, EventArgs e)//末页按钮
{
intTpage = dtBalanceSalesOrderSheet.Rows.Count - 1;//获取末页数据
int intCount = intTpage;//赋值
BingDingBalanceSalesOrderSheet(intCount);//销售订单
BingDingList(intCount);//销售订单明细
BingDingUsingStar(intCount);//按钮限制
}


仅供学习,禁止用于商业用途,违者后果自负!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: