用友T6全功能100站點(diǎn)應(yīng)用實(shí)例中庫(kù)存管理的庫(kù)齡分析

庫(kù)存賬齡是在某時(shí)間節(jié)點(diǎn),某種或某類(lèi)存貨的庫(kù)存時(shí)間的加權(quán)平均值,跟庫(kù)存周轉(zhuǎn)率關(guān)系明顯。庫(kù)存周轉(zhuǎn)率越高,庫(kù)存賬齡越低,可是二者又不是反比關(guān)系。不能簡(jiǎn)單把庫(kù)存賬齡看成庫(kù)存周轉(zhuǎn)率的一個(gè)衍生指標(biāo)來(lái)對(duì)待 ,

主界面 (如圖2.4.1圖1)。

目的:一、庫(kù)存成本的控制。二、存貨跌價(jià)準(zhǔn)備計(jì)提。

功能:【所有導(dǎo)出】將當(dāng)前頁(yè)的所有倉(cāng)庫(kù)相應(yīng)的所有產(chǎn)品導(dǎo)出到EXCEL文檔。【選擇導(dǎo)出】將當(dāng)前頁(yè)選擇的的產(chǎn)品導(dǎo)出到Excel文檔?!静樵?xún)】多條件篩選查詢(xún)數(shù)據(jù)(如圖2.4.1 圖2)。【定位】查詢(xún)某產(chǎn)品定位到某行,假設(shè)產(chǎn)品在多個(gè)倉(cāng)庫(kù),能夠選擇下條定位(如圖2.4.2 圖3)。

主界面:

2.4.1(圖1)

篩選查詢(xún)框:

2.4.2(圖2)

定位查詢(xún)框:

從界面上能夠看到00我們這里用到的控件有

控件名稱(chēng)說(shuō)明

日期控件(DateTimePicker)控件能夠在工具箱直接拖動(dòng)至窗口。拖至窗口后右擊屬性能夠改動(dòng)控件的樣式和各種屬性,還能夠編輯事件。

下拉框(ComboBox)

文本(TextBox)

button(Button)

表格(DataGridView)

復(fù)選框(CheckBox)

功能實(shí)現(xiàn):

第一步:數(shù)據(jù)庫(kù)

1、表與關(guān)系

表1:??出入庫(kù)記錄明細(xì)表(InAndOutOfInventoryRecordList)

[td]

列名數(shù)據(jù)類(lèi)型主鍵/外鍵說(shuō)明

InAndOutOfInventoryRecordListIDint - Identity主鍵出入庫(kù)記錄明細(xì)ID

Quantitydecimal (18, 3)數(shù)量

TheUnitPricedecimal (18, 3)單位價(jià)格

InAndOutOfInventoryRecordIDint外鍵存貨ID

TheInventoryIDint外鍵出入庫(kù)存記錄ID

表2:??出入庫(kù)記錄表(InAndOutOfInventoryRecord)

[td]

列名數(shù)據(jù)類(lèi)型主鍵/外鍵說(shuō)明

InAndOutOfInventoryRecordIDint - Identity主鍵出入庫(kù)存記錄ID

WarehouseID_Dispatchint外鍵倉(cāng)庫(kù)ID_出庫(kù)

ForTheTypeIDint外鍵出入庫(kù)類(lèi)型ID

WarehouseInventory_IDint外鍵倉(cāng)庫(kù)ID_入庫(kù)

OoperateDatedatetime操作日期

2、模糊查詢(xún)匹配

第一步:界面層(UIL)代碼,寫(xiě)在查詢(xún)button點(diǎn)擊事件

截圖效果:

首先選擇好模糊匹配定位(比方輸入“雙”字,假設(shè)選擇左模糊。則查出“雙XX”的產(chǎn)品,假設(shè)選擇右模糊,則查出“XX雙”,假設(shè)選擇包括能夠?yàn)樽?、右模糊加上“XX雙XX”,假設(shè)是精確查詢(xún),則為“雙”的產(chǎn)品)

代碼:

private voidbtnFixedPosition_Click(object sender, EventArgs e)? ?? ???{? ?? ?? ?? ?stringstrRowFilter = "";? ?//查詢(xún)條件? ?? ?? ?? ?stringstrProductName = txtProductName1.Text.Trim();??//定位到篩選后的一行? ?? ?? ?? ?if(strProductName == "") { return; }? ?? ?? ?? ?if(radLeft.Checked)? ? //左模糊? ?? ?? ?? ?{? ?? ?? ?? ?? ? strRowFilter = string.Format("產(chǎn)品名稱(chēng) like '%{0}'", strProductName.Trim());? ?? ?? ?? ?}? ?? ?? ?? ?else? ?? ?? ?? ?{? ?? ?? ?? ?? ? if(radRight.Checked)??//右模糊? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ???strRowFilter = string.Format("產(chǎn)品名稱(chēng) like '{0}%'", strProductName.Trim());? ?? ?? ?? ?? ? }? ?? ?? ?? ?? ? else? ?? ?? ?? ?? ? {? ?? ?? ?? ?? ?? ???if(radContain.Checked)??//包括模糊? ?? ?? ?? ?? ?? ???{? ?? ?? ?? ?? ?? ?? ?? ?strRowFilter = string.Format("產(chǎn)品名稱(chēng) like '%{0}%'", strProductName.Trim());? ?? ?? ?? ?? ?? ???}? ?? ?? ?? ?? ?? ???else? ?? ? //精確查詢(xún)? ?? ?? ?? ?? ?? ???{? ?? ?? ?? ?? ?? ?? ?? ?strRowFilter = string.Format("產(chǎn)品名稱(chēng) like '{0}'", strProductName.Trim());? ?? ?? ?? ?? ?? ???}? ?? ?? ?? ?? ? }? ?? ?? ?? ?}? ?? ?? ?? ?dvtest = newDataView(dtExisting) { RowFilter =strRowFilter };? ?? ?? ?? ?dttest = dvtest.ToTable();? ?? ?? ?? ?if(dttest.Rows.Count > 1)??//是否篩選后有一行以上? ?? ?? ?? ?{? ?? ?? ?? ?? ? btnNext.Enabled = true;??//下一個(gè)??button 啟用? ?? ?? ?? ?}? ?? ?? ?? ?else? ?? ?? ?? ?{? ?? ?? ?? ?? ? btnNext.Enabled =?false;??//下一個(gè)??button 不啟用? ?? ?? ?? ?}? ?? ?? ?? ?intTpage = 0;? ?? ?? ?? ?FixedPosition(intTpage);? ?? ???}?

3、庫(kù)齡明細(xì)查詢(xún)分析(依據(jù)產(chǎn)品ID與相應(yīng)的存庫(kù)進(jìn)行分析)

第一步:數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程

if(@Type='btnCountAnalysis_Click_SELECTBeLaidUpQuantity')??--查詢(xún)?nèi)霂?kù)量計(jì)算庫(kù)齡賬齡? ?BEGIN? ?DECLARE @出入庫(kù)流水表 TABLE (產(chǎn)品名稱(chēng) char(30),出入庫(kù)時(shí)間 nchar(10), 出入庫(kù)數(shù)量 decimal,時(shí)間 DATETIME)? ?--創(chuàng)建暫時(shí)表? ?? ? INSERT@出入庫(kù)流水表? ?? ?SELECT LTRIM(RTRIM(TheProductTable.ProductName)) AS 產(chǎn)品名稱(chēng),? ?? ?CONVERT(nchar(10),InAndOutOfInventoryRecord.OoperateDate , 20) AS 出入庫(kù)時(shí)間,? ?? ? LTRIM(RTRIM(CAST(-InAndOutOfInventoryRecordList.Quantity AS DECIMAL))) AS 出入庫(kù)數(shù)量,? ?? ?InAndOutOfInventoryRecord.OoperateDate AS 時(shí)間? ?? ?FROM??InAndOutOfInventoryRecordListINNER JOIN? ?? ?InAndOutOfInventoryRecord ON InAndOutOfInventoryRecordList.InAndOutOfInventoryRecordID= InAndOutOfInventoryRecord.InAndOutOfInventoryRecordIDINNER JOIN? ?? ?TheInventoryTable ON InAndOutOfInventoryRecordList.TheInventoryID = TheInventoryTable.TheInventoryID INNER JOIN? ?? ?TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID? ?? ?WHERE InAndOutOfInventoryRecord.WarehouseID_Dispatch!= 0 AND? ?? ?InAndOutOfInventoryRecordList.TheInventoryID IN? ?? ?(SELECT TheInventoryTable.TheInventoryID AS 存貨ID? ?? ?FROM??TheInventoryTableINNER JOIN? ?? ?TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID? ?? ?WHERE TheProductTable.ProductID = 3 AND TheInventoryTable.WarehouseID = 1)??--產(chǎn)品ID、倉(cāng)庫(kù)ID? ?? ?UNION ALL? ?? ?SELECT LTRIM(RTRIM(TheProductTable.ProductName)) AS 產(chǎn)品名稱(chēng),? ?? ?CONVERT(nchar(10),InAndOutOfInventoryRecord.OoperateDate , 20) AS 出入庫(kù)時(shí)間,? ?? ? LTRIM(RTRIM(CAST(InAndOutOfInventoryRecordList.Quantity AS DECIMAL))) AS 出入庫(kù)數(shù)量,? ?? ?InAndOutOfInventoryRecord.OoperateDate AS 時(shí)間? ?? ?FROM??InAndOutOfInventoryRecordListINNER JOIN? ?? ?InAndOutOfInventoryRecord ON InAndOutOfInventoryRecordList.InAndOutOfInventoryRecordID= InAndOutOfInventoryRecord.InAndOutOfInventoryRecordIDINNER JOIN? ?? ?TheInventoryTable ON InAndOutOfInventoryRecordList.TheInventoryID = TheInventoryTable.TheInventoryID INNER JOIN? ?? ?TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID? ?? ?WHERE InAndOutOfInventoryRecord.WarehouseInventory_ID!= 0 AND? ?? ?InAndOutOfInventoryRecordList.TheInventoryID IN? ?? ?(SELECT TheInventoryTable.TheInventoryID AS 存貨ID? ?? ?FROM??TheInventoryTableINNER JOIN? ?? ?TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID? ?? ?WHERE TheProductTable.ProductID = @ProductID AND TheInventoryTable.WarehouseID = @WarehouseID)??--產(chǎn)品ID、倉(cāng)庫(kù)ID? ?? ?ORDER BYInAndOutOfInventoryRecord.OoperateDate;? ?? ?? ?? ? SELECT 產(chǎn)品名稱(chēng),庫(kù)齡,CASE WHEN 出入庫(kù)數(shù)量 > 數(shù)量 THEN 數(shù)量 ELSE 出入庫(kù)數(shù)量 END AS數(shù)量? ?? ?FROM (? ?? ?? ?? ?SELECT 產(chǎn)品名稱(chēng),? ?? ?? ?? ?DATEDIFF(DAY,出入庫(kù)時(shí)間,GETDATE()) AS 庫(kù)齡,? ?--與今天相比,計(jì)算出相差的天數(shù)? ?? ?? ?? ?出入庫(kù)數(shù)量,? ?? ?? ?? ?(? ?? ?? ?? ?? ? SELECT ISnull(SUM(CAST(出入庫(kù)數(shù)量 AS DECIMAL)),0)? ?? ?? ?? ?? ? FROM @出入庫(kù)流水表? ?? ?? ?? ?? ? WHERE 產(chǎn)品名稱(chēng) =(SELECT ProductName FROM TheProductTable WHERE TheProductTable.ProductID = @ProductID)? ?? ?? ?? ?? ? AND 出入庫(kù)時(shí)間 <= GETDATE() AND? ?? ?? ?? ?? ? (出入庫(kù)時(shí)間 <= 出入庫(kù)流水表.出入庫(kù)時(shí)間 OR(出入庫(kù)時(shí)間 > 出入庫(kù)流水表.出入庫(kù)時(shí)間 AND 出入庫(kù)數(shù)量 < 0))? ?? ?? ?? ?)AS數(shù)量? ?? ?? ?? ?FROM??@出入庫(kù)流水表 AS 出入庫(kù)流水表? ?? ?? ?? ?WHERE 產(chǎn)品名稱(chēng) =(SELECT ProductName FROM TheProductTable WHERE TheProductTable.ProductID = @ProductID) and 出入庫(kù)時(shí)間 <= GETDATE() and 出入庫(kù)數(shù)量 > 0? ?? ?? ?) as計(jì)算表? ?? ?WHERE 數(shù)量 > 0? ?? ?SELECT *FROM @出入庫(kù)流水表? ?END

第二步:邏輯層(BLL)代碼

? ?? ???///<summary>? ?? ???///查詢(xún)?nèi)霂?kù)量計(jì)算庫(kù)齡賬齡? ?? ???///</summary>? ?? ???///<param name="intProductID">產(chǎn)品ID</param>? ?? ???///<param name="intWarehouseID">倉(cāng)庫(kù)ID</param>? ?? ???///<returns></returns>? ?? ???[OperationContract]? ?? ???public DataSetbtnCountAnalysis_Click_SELECTBeLaidUpQuantity(intintProductID, int intWarehouseID)? ?? ???{? ?? ?? ?? ?SqlParameter[] SQlCMDpas = {? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?newSqlParameter("@Type",SqlDbType.Char),? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?new SqlParameter("@ProductID", SqlDbType.Int),//產(chǎn)品ID? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?new SqlParameter("@WarehouseID", SqlDbType.Int),//倉(cāng)庫(kù)ID? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? };? ?? ?? ???SQlCMDpas[0].Value = "btnCountAnalysis_Click_SELECTBeLaidUpQuantity";? ?? ?? ???SQlCMDpas[1].Value = intProductID;? ?? ?? ???SQlCMDpas[2].Value = intWarehouseID;? ?? ?? ?? ?return myDALMethod.QueryDataSet("InventoryManage_frm_StockLookIntoTheDistance",SQlCMDpas);? ?? ???}

第三步:界面層(UIL)代碼。在具體庫(kù)齡窗口的Load事件中綁定的數(shù)據(jù)

截圖效果(在主界面點(diǎn)擊相應(yīng)的產(chǎn)品相應(yīng)的倉(cāng)庫(kù)的具體庫(kù)齡):


截圖效果(具體庫(kù)齡的主界面):

左邊為產(chǎn)品相應(yīng)的庫(kù)齡與及相應(yīng)庫(kù)齡的數(shù)量。右邊為相應(yīng)產(chǎn)品的出入庫(kù)情況(時(shí)間、數(shù)量)

截圖效果(點(diǎn)擊同樣庫(kù)齡合并數(shù)量):

將同樣庫(kù)齡的數(shù)量加起來(lái)(為什么出現(xiàn)同樣庫(kù)齡?由于在某天對(duì)該產(chǎn)品的進(jìn)出次數(shù)多?。?/b>

代碼:

(一)Load事件:

DataSet dsAgeAnalysis =myfrm_StockLookIntoTheDistance.btnCountAnalysis_Click_SELECTBeLaidUpQuantity(intProductID,intWarehouseID);? ?? ?? ???dgvInventoryAgeAnalysis.DataSource = dsAgeAnalysis.Tables[0];??//查詢(xún)庫(kù)齡? ?? ?? ???dgvDiscrepancyAgeAnalysis.DataSource = dsAgeAnalysis.Tables[1];??//具體出入明細(xì)? ?? ?? ???ChangeColour();??//出庫(kù)標(biāo)識(shí) 入庫(kù) 標(biāo)識(shí) 顏色

(二) 合計(jì)數(shù)量

#region 合計(jì)? ?? ???///? ?? ???///合計(jì)? ?? ???///? ?? ???///? ?? ???///? ?? ???private voidbtnTotal_Click(object sender, EventArgs e)? ?? ???{? ?? ?? ???listAgeAnalysis.Clear();??//又一次點(diǎn)擊時(shí)。清空庫(kù)齡集合? ?? ?? ?? ?DataTable dtSumAgeAnalysis = new DataTable();? ?//保存合計(jì)的庫(kù)齡? ?? ?? ???dtSumAgeAnalysis = ((DataTable)(dgvInventoryAgeAnalysis.DataSource)).Clone();? ?? ?? ?? ?for (int intRows = 0;intRows < dgvInventoryAgeAnalysis.Rows.Count; intRows++)? ?? ?? ?? ?{? ?? ?? ?? ?? ?if (!listAgeAnalysis.Exists(i => i ==Convert.ToInt32(dgvInventoryAgeAnalysis.Rows[intRows].Cells["庫(kù)齡"].Value)))? ?? ?? ?? ?? ?{? ?? ?? ?? ?? ?? ? listAgeAnalysis.Add(Convert.ToInt32(dgvInventoryAgeAnalysis.Rows[intRows].Cells["庫(kù)齡"].Value));? ?? ?? ?? ?? ?? ? dtSumAgeAnalysis.Rows.Add();? ?? ?? ?? ?? ?? ? dtSumAgeAnalysis.Rows[dtSumAgeAnalysis.Rows.Count - 1]["產(chǎn)品名稱(chēng)"] =dgvInventoryAgeAnalysis.Rows[intRows].Cells["產(chǎn)品名稱(chēng)"].Value;? ?? ?? ?? ?? ?? ? dtSumAgeAnalysis.Rows[dtSumAgeAnalysis.Rows.Count - 1]["庫(kù)齡"] =dgvInventoryAgeAnalysis.Rows[intRows].Cells["庫(kù)齡"].Value;? ?? ?? ?? ?? ?? ? dtSumAgeAnalysis.Rows[dtSumAgeAnalysis.Rows.Count - 1]["數(shù)量"] = 0;? ?? ?? ?? ?? ?}? ?? ?? ?? ?? ?if (listAgeAnalysis.Exists(i => i == Convert.ToInt32(dgvInventoryAgeAnalysis.Rows[intRows].Cells["庫(kù)齡"].Value)))? ?? ?? ?? ?? ?{? ?? ?? ?? ?? ?? ? dtSumAgeAnalysis.Rows[dtSumAgeAnalysis.Rows.Count - 1]["數(shù)量"] = Convert.ToInt32(dtSumAgeAnalysis.Rows[dtSumAgeAnalysis.Rows.Count- 1]["數(shù)量"])? ?? ?? ?? ?? ?? ?? ?? ?+ Convert.ToInt32(dgvInventoryAgeAnalysis.Rows[intRows].Cells["數(shù)量"].Value);? ?? ?? ?? ?? ?}? ?? ?? ?? ?}? ?? ?? ???dgvInventoryAgeAnalysis.DataSource = dtSumAgeAnalysis;? ?? ???}? ?? ? #endregion?

(三)出庫(kù)標(biāo)識(shí) 入庫(kù) 標(biāo)識(shí) 顏色

///<summary>? ?? ???///出庫(kù)標(biāo)識(shí) 入庫(kù) 標(biāo)識(shí) 顏色? ?? ???///</summary>? ?? ???void ChangeColour()? ?? ???{? ?? ?? ?? ?for (int intRows = 0;intRows < dgvDiscrepancyAgeAnalysis.Rows.Count; intRows++)? ?? ?? ?? ?{? ?? ?? ?? ?? ?if (Convert.ToInt32(dgvDiscrepancyAgeAnalysis.Rows[intRows].Cells["出入庫(kù)數(shù)量"].Value) > 0)? ?? ?? ?? ?? ?{? ?? ?? ?? ?? ?? ???dgvDiscrepancyAgeAnalysis.Rows[intRows].DefaultCellStyle.BackColor= Color.Gold;??//為入庫(kù)? ?? ?? ?? ?? ?}? ?? ?? ?? ?? ?else? ?? ?? ?? ?? ?{? ?? ?? ?? ?? ?? ? dgvDiscrepancyAgeAnalysis.Rows[intRows].DefaultCellStyle.BackColor = Color.OldLace; //為出庫(kù)? ?? ?? ?? ?? ?}? ?? ?? ?? ?}? ?? ???}用友T6全功能100站點(diǎn)應(yīng)用實(shí)例百度網(wǎng)盤(pán)下載:?用友T6全功能100站點(diǎn)應(yīng)用實(shí)例.rar?(456.98 KB, 下載次數(shù): 54)?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,286評(píng)論 2 89
  • 一、SQL速成 結(jié)構(gòu)查詢(xún)語(yǔ)言(SQL)是用于查詢(xún)關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,它包括若干關(guān)鍵字和一致的語(yǔ)法,便于數(shù)據(jù)庫(kù)元件...
    shadow雨軒閱讀 578評(píng)論 0 3
  • 一、數(shù)據(jù)庫(kù)操作: 1.1 創(chuàng)建數(shù)據(jù)庫(kù): create database student; 1.2 刪除數(shù)據(jù)庫(kù): ...
    __71db閱讀 845評(píng)論 0 0
  • 效果: 參考的內(nèi)容是:轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/boyqicheng/articl...
    原味蛋炒飯閱讀 540評(píng)論 0 0
  • 這周朗讀印象最深刻的是朗讀過(guò)程中竟然能發(fā)現(xiàn)文章里的語(yǔ)法錯(cuò)誤,因?yàn)樽x起來(lái)拗口,總拗口,有一次突然頓悟自己存在語(yǔ)法錯(cuò)誤...
    五月果凍閱讀 213評(píng)論 0 2

友情鏈接更多精彩內(nèi)容