顯示具有 Just In CASE 標籤的文章。 顯示所有文章
顯示具有 Just In CASE 標籤的文章。 顯示所有文章

2011年12月18日 星期日

@CASE 13 < 訂單細項交期展示表 > ver-111219

牌製令,選配都會看
目前操作上只有篩選日期,客戶ID範圍
將直接進行資料撈取轉檔

希望能夠限制日期一定要輸入
甚至於只能在某個區間內,
超過將以固定區間計算,或提示

'應該可以改在一個檔案,不同Sheet


1. 3,4碼數字的,可以看出外徑
2. 大致上還是要看PartRule,先切空字串,再切 '*'(有的是用'x',有的是用'*'),
    分別取外徑與孔徑,去做排序,
    將相同外徑與相同孔徑放在同一區塊,
3. 要處理一些特殊產品,像是"9"開頭的產品,外購品,
    很多看不出尺寸,
    確認是不是都不上機台,

    是不是會委託蘇比克做
    會委託的應該是那些東西(9開頭?,未滿13碼的料號一定都是原料?)
    是不是看不出尺寸的都是
    或是說其他東西也會委託

    要怎麼處理要再問問看

4. 這應該是第二步
    納入機台資訊,考量各機台產能,
    將帶入的訂單細項,去依照一定方式分配
    分配之後不會影響各機台運作
    (好像是工業資源規劃,要再查查看)

    大致上想法是為了區別,哪個機台可以生產哪種規格產品

    要怎麼考慮跨機台生產,或通用生產產品的分類
    要再討論看看

=================================================
考慮訂單細項上 XX,HX,EX,XF
1. 是否結案(結案不看)
2. 是不是不需考量產品是否在Stock中停用
    (停用應該不會在訂單上,或是說應該不需要去考慮BOM表,或選配的問題
     只要抓實際要得訂購數量就好)
3. 需不需要考量單據版本異動,訂購數是否有異動
    目前都是抓最新可用訂單來看
4. 應該可以選擇
    不看結案,未作廢(未核准,核准),不一定確認(未確認0 or null,確認)
5. 加入選擇細項是否結案(0,1),
    訂單是否核准(0,2,不看作廢9),


====================================================
1. 照交貨日期排序塞入第一行資料
2. 排序PartRule,
3. 對照日期塞入數量

===================================================
'寫入EXCEL
 訂單日期 tbl
 訂單細項數量 tbl
排序後

1.依照訂單細項排序依次寫入
2.找第一筆細項,
3.找該細項 在 訂單日期tbl 上的位置, 計算出 寫入Excel 訂單號排序位置,
4.兩方交集cell,寫入該筆細項數量

方案一
整個使用上
搜尋後就會建立EXCEL檔案,
GridView讀取該建立檔案去顯示資料

方案二 (目前先走這個)
單純建立一個篩選表單
直接轉檔開啟Excel

不再透過GridView
所以也不能再Form上面對GridView操作


'目前卡在怎麼找出正確的索引位置
看能不能從SQL撈資料的時候,就建立一個流水號欄位
(也就是交易日期排序的索引)

'需要在細項上也做一個索引

'將相同單號,相同出貨日期放在同一欄下帶入數量
所以訂單日期也需要Distinct


適用於
Microsoft Excel 2003
列和欄的最大數目
Microsoft Office Excel 工作表包含 65,536 列和 256 欄。您無法增加超出此列和欄上限的列或欄數目。


'需要切成幾個檔案來轉EXCEL

===================================================
'************************************************
1.5,6,8都是特殊尺寸,會在單獨機台生產
   4是蘇比克生產 (自成一類)
   9是外購品 (自成一類)
2."-"是規格資訊,應該忽略 或是再問問
   "/" 要再問看看
3.超過三個數值,特殊產品,要問看怎麼分,或自成一類
   兩個數值,前為外徑,後為孔徑,或是自成一類
   要再問問
'************************************************


    '*******************
    'PartRule 尺寸排序演算法
    '1.新料號前兩碼,區分產品類別 (22種) (倒數第三層 40,82,90 最下層)
    '2.Split PartRule by " ", 取(1)區分尺寸資訊
    '3.Spilit PartRule by '*' or 'x' ,並計算有幾個乘數 (3, 2, 5, 其他 => 各自自成一類)
    '4.取外徑排序,再取孔徑排序 (不取字符,取數值比大小) (5或其他 則不排)
    '5.尺寸排序後再依照料號排序
    '*******************



[C#.NET][VB.NET] 字串分割 / String.Split



排序
1.除了9開頭料號,發現還有一些其他東西,也不是一般規格寫法
   EX: 4,8,6,9規格寫法都不太一樣 (5也有少部分)
2.大致上先用空白去切,再來區分乘法符號(有的*,有的x)
3.切出來的可能會有  "其他資訊 / 要的數值" 或是 "要的數值 / 其他資訊"
    這部分要再問問看 (會有 '/', 也會有 '-')
   有的還會附帶括號 (資訊)
   或是直接接上其他資訊 ( mm,布,高...等等 )
4.也會有不只外徑*厚度*孔徑的,乘了4,5個數值
5.應該先以新料號三四碼區分外徑大範圍分類,
   再去看外徑區間數值去分類
   在看孔徑

2011年12月12日 星期一

@Tools 製令生產物料 BOM 表 完整性檢查

需要一個工具,可以自動撈取兩個月內製令資料(本月,下個月),
並且比對該料號的BOM表是否完整

@原本有一隻BOM表與舊系統對照
到時候就系統退掉就不再使用

應該以檢查ERP系統為主

================================================
'提供日期範圍搜尋,(以月分為單位)
預設兩個月內範圍

'限制一定要輸入日期範圍(前後都要)
前輸入,後預帶下個月 => 預設搜尋兩個月

'應該加入單查料號

要不要區分新舊料號
(目前先以舊料號搜尋)

目前想法是輸入料號,輸入製令日期檔案兩者互斥
類似TQRY輸入料號去查BOM表

'萬用字元輸入料號查詢
如果不區分所蒐尋的相關料號
會看不出問題料號在哪

'發現舊料號檢查的時候,應該區分舊料號

@可以從 isnotvalid判斷是否停用,寫入原因
@判斷NorErr如果撈不到資料,應該為外購品,只有包裝,無製程
    這部分目前沒抓異常,要再想看看怎麼抓獲需不需要抓

2011年12月11日 星期日

@CASE 12 < 原物料結合庫存量計算 > ver-111212

'反映說展開單據細項會有錯誤訊息提示
測試起來沒問題,要再看看
(加入單據記錄初始化,清空每次篩選的紀錄,不知道會不會有影響)

'可能需要做提示那些數據背後可以拉到單據資料
一些突現方式

@目前變成0以後凸顯方式就會消失
@一些原本沒凸顯的欄位看能不能就無法展開細項

1.另外紀錄 數量變0的點選物料List, (單據別,物料)
2.點選0的單據,判斷是否存在該筆紀錄
3.存在則開啟背後細項

@非0到0的過度何時開始記錄

'使用者通常只會關心特殊項目的原物料狀況
應該怎麼顯示資料,很快就找到特殊物件


'訂單部分應該考慮
 每次版本變動時,採購數是否有異動
 撈取計算原物料,是不是應該以最新版-前一版來計算

是不是改單也會有書面通知
要再想想


'可能需要只計算庫存數
然後也透過點選模式去看哪個倉庫有多少庫存

======================================================

'發現說訂單如果訂購,XF半成品, (應該不會走到選配)
可能會造成無法計算
要再改

'建議請購量,轉檔的時候,判斷是否負值
 則帶入0



'計算庫存數有嚴重邏輯錯誤
 目前應該維持原版,
等一些未結案的舊單據完結,在測試庫存資訊

沒有考慮到說,料號如果沒有任何請購單,採購單有該料號
用Join就會出錯
以現在的方式是去抓請購單或採購單上有該料號資料的東西

應該透過left 或是 right join
再用 if else 去判斷是否空值,給定初始值


'應該列出所有倉庫表單
讓使用者選擇納入計算的倉庫
(m1-sj, m3, mrm, prm% 預設)

再來就是有的料號在 tblstocksub 並沒有庫存數資料
把料號與庫存術 left join 合併


'網子都沒撈到,(m1-sj 大片頭倉)
m1-sj, m3, mrm, prm% =>為主


'看能不能在CR報表上做輸入操作修改數值
或是用GridView而不用CR報表Viewer

'異常資料希望透過抓取的地方來判斷該區段抓取異常資料的原因
並寫入異常資料原因
要改寫NorErr()

1.Stock停用,無XF半成品料號
2.不存在的舊料號 (Stock無資料)
3.XX產品,XP包裝之下,無XF料號
4.BOM表停用,非核准,BOM表不完全


'請購單,採購單可能需要每個單據分開看,
可以判斷或是選擇那些單據內容要列入計算,
要在確定
(請購採購單的收料日期會影響要請購的數量)


'************************
'目前採購單,請購單都是加總合併計算
'1.透過使用者點選某個Cell超連結
'2.帶入該料號,計算所有未結案採購單,請購單
'3.跳出計算後表單,可以選擇勾選那些表單應該列入計算
'   (需要想一夏怎麼紀錄之前勾選過列入計算的部分,不然就要改變作法)
'4.預計分配量應該也需要
'************************




怎麼把料號傳入
每次點選清空原始GridView,
重新鏈結新資料

再來就卡在怎麼記憶點選計算的採購請購單號
1.每次點選紀錄Item (Value),紀錄採購單號,請購單號 (Key)
2.判斷關閉前,是否勾選,不存在記錄變數內的,Add
3.關閉後,重新計算該列資料相關數值
4.判斷開啟前,存在紀錄變數內的,將表單打勾
5.初始化隨著主表單做

'等確定接手人在決定應該怎麼設計格式

'應該可以把第七碼的問題排除了
 讓系統不必走一些不必要的判斷

'判斷是否異常資料的部分應該可以出來用呼叫的

'建議請購量應該可以在介面上直接修改
需要思考遺下編輯模式

目前需要透過滑鼠連點兩下開啟編輯
離開焦點後,將資料寫入table
(或是改成CELL取得焦點就開啟編輯)

加入CellDataError判斷
限制輸入內容數字


'幹~發現說好像應該先從Stock的PartRule找出可能的XX
然後去Comb對照MARK - CustID , PdtCode - XX

可能要再修改 MCST部分....
========================================
'MCST MRP
 BackON部分可能需要做一隻檢查程式
看有沒有什麼料號是BOM表不存在的
( 單純走 BOM 表 )

並且在撈取的時候檢查 MARK+Part
 是不是 客戶規格 所要的商標( BOM製程 )

backon 走Bom表,不走選配,
怎麼判斷MARK+PART要再想想
(可能還是要透過選配去查)

'感覺應該透過製令去找,
而不是整個資料庫找(許多很久沒用以後也不知道用不用的到的應該排除)
只檢查已經排入製令準備上生產線的

目前只做兩個月內的製令檢查

@感覺如果他是要抓空白砂輪,
而找不到BOM表,就應該直接列為異常,
排除該料號的計算

所以目前先拿掉MCST MRP 的 BACKON的部分,
================================

'所有MRP系統

1.撈各個主倉庫存量,
2.計算已採購,尚未驗收的,在途數量
3.計算安全庫存量+需求量
4.提供建議採購數量

@採購單,請購單可能要分開看,列出兩種資訊

part,rule,在途數,庫存數,安全庫存,建議採購數(總庫存-需求>=安全庫存),PC

===========================
select*from tblwh where isrealwh = 1 查閱是否實體倉
  isnotvalid = 0 非停用

tblstocksub 查閱庫存量
1.locoID <> 'NA'  => 有實際儲位的,為主倉
(要稍微注意遺下,W00M,應該不是主倉的,庫存數卻有紀錄他的locoID,舊資料)
2.會有料號相同,倉庫相同,儲位不同的資料
  (目前先加總,不區分儲位,只看倉庫)
3.目前看起來主倉不會有BadQty的問題
4.庫存+在單-預計配用-安全存量=可用量
採購量-已交數 + 請購量 = 在單數量
5.預計分配量,看起來是訂單中,被訂購的原物料


'可能需要提示告知相關公式

在途數量應該要結合採購單,請購單 (批號)
1.有採購單,計算已驗收數,採購數-已交數=在途數量
2.有請購單,列出請購數量
3.需要確定是不是有採購單,請購單就結

status = 2,packqty*qty
tblpodet 採購   partcode, isclosed = 0 , exqty 已交數
tblprdet 請購  partcode, isclosed = 0, prqty 請購數

tblchkacptdet 已交  帶入採購單號計算該單號的細項已交數
(採購細項上的 exQty就是以交數)

tblorderdet  找 exsaleqty <> qty 的原物料, isclosed = 0


tblStock   MainSafeqty  撈安全庫存量

2011年12月1日 星期四

@CASE 12 < 使用者行為紀錄 > ver-111202

需要偵測使用者系統使用行為並做紀錄

目前需要紀錄
1.登入系統
2.首次開啟功能表單
3.複次開啟功能表單 (為登出前,該功能表單關閉再次打開)
4.離開系統

1.使用者帳號
2.使用者名稱
3.行為
4.發生時間點 ( Date~Time )


============================================================

'可能需要改登入介面
改一個測試登入
裡面會設定好測試環境變數
(測試時將不做行為偵測)

目前將Login物件增加屬性
紀錄是否為測試狀態

一些測試環境變數需要改寫

Visual Basic - Login/登入/登錄之物件導向實作


'可能需要修改登入物件化
再看看

'慢慢修改登入透過 DB_Con.dll

================================
user_use_what




    '*****************
    '1.傳送該表單名稱
    '2.依照該表單名稱,動作( 首開,復開 )
    '  帶入應該紀錄的行為模式
    '*****************
    '紀錄行為
    Public Sub AddUserBehavior(ByVal pageName As String)
        If UserBehaviorTimes.Contains(pageName) Then
            RecordUsersDoing(MyLoginForm.login.GetuID, MyLoginForm.login.UserName, "複開 " & pageName)
        Else
            UserBehaviorTimes.Add(pageName)
            RecordUsersDoing(MyLoginForm.login.GetuID, MyLoginForm.login.UserName, "首開 " & pageName)
        End If
    End Sub

    '紀錄不同的使用模式,用來判斷首開或復開
    Public UserBehaviorTimes As New List(Of String)


2011年11月23日 星期三

@CASE 11 < 厚度測量 > ver-111124

'需要加入製令選取方塊,
判斷要轉檔列印那些製令內容

目前不做 Threading.ThreadPool 多執行緒轉檔


'轉檔分頁數去印,應該也是放在一個檔案
把基本格式透過判斷去寫
判斷需不需要再多寫一個A4列印區塊

'轉檔用For,格式分開Cell寫就慢
@XLS格式盡量整個區塊一次設定好,

'平衡度是應該與厚度拆開看還是怎樣

'轉檔列印
1.依照製令分類
2.選取製令號
3.目前傾向先不要列印 key in 或是變化歷程資訊
4.要想一下寬度要塞幾筆資料,一頁要分幾段
5.時間切割 日期,時間
                      改欄位放橫,資料每筆放成直的
                        '******************
                        '1.先知道資料筆數 + 1 為建立的column數 (要考慮A4寬度向下分段印)
                        '2.邊建立rowsHeader,邊寫入內容
                        '3.製令製令  XXX (製令只抓一次,只寫入內容一次)
                        '  工號     A034 (以下看資料筆數)
                        '  機台      1-1
                        '  量測時間  MMM
                        '  一次測量  1.1
                        '  平均厚度  1.1
                        '最大厚度差距 1.1
                        '******************
有點難串
不然就直接table寫入Excel


先按照T2表列印
8:00~22:00
每15分量測
目前 13 * 2 一張上下分段
最多會到14 * 4

@目前12*5 A4紙張可以塞入 5個段落
   1個段落3個小時的量測資料

'可能需要
 1.作業溫度欄位
 2.上下比重
 3.故障:原因,時間
 4.閱覽簽章欄位
==================================
'需要加入查詢厚度量測資料介面

'**************************
'透過製令,機台,日期搜尋所有量測
'可能需要額外查詢相關欄位的歷史資料 (ValChange)
'顯示欄位,Key In 與 Scand 的 Style 不同
'凸顯 異常資料 (超過標準厚度)
'透過功號顯示員工資料
'透過製令顯示量測料號
'目前先以Server資料查詢,Client要再想想需不需要
'**************************

'目前查詢不走DSN,走SQL Client

'分三個view
 1. 大範圍的製令號 view
 2. 某筆製令的所有量測內容
 3. 某欄位的相關歷史資料內容

'要想一下怎麼凸顯異常資料 (選取製令繪製製令細項時)
key in 與 scand 差別,

感覺如果要改 特定cell 的Border樣式
一定要自訂控制項,去改寫 DataGridViewAdvancedBorderStyle 自訂外框


不然好像只能透過 CellBorderStyle 去做通用外框設定

DataGridViewAdvancedBorderStyle 類別



DataGridView自訂繪圖之CellPainting事件


其實我要只是換Cell的背景顏色,繪圖的工作與layout工作全部不變一樣交與DataGridView做就好了。 
在試了多次後,其實只要觸發DataGridView.CellPainting事件就能滿足本人的須求。


'在選取狀態應該維持凸顯風格

動態設定 DataGridView 儲存格背景顏色的問題


==========================================================
'應該加入工號防呆,加入製令防呆
檢查是否存在該工號,製令
(先不做)

'應該修正加入資料的時候,去除多餘的空白

'****************
'目前測試厚度為百位到小數點下兩位
'不足部分補0
'擋掉 + 號
'滑鼠點擊,得到焦點,將全選Box內容
'失去焦點後,判斷是否4個厚度皆有資料,然後計算
'應該以小數點下四位計算(兩種厚度機,2位,4位)
'加入製令下砂輪標準厚度,判斷每次量測的是否在標準內,並醒目提示
'****************

@ '±'  ASCII : 241


==========================================================

'可能製令判斷key in 的部分有點問題
有時候一開始輸入scand 會判讀為 key in



'可能需要透過主程式來開啟Scand程式
先這樣
=========================================================
'加入 Scand介面鎖定功能 (一定要先啟動Scand,再啟動主程式)

'需要寫入上傳Server功能

1.寫入Client
2.判斷server是否可連接
   true: 1.複製 Client Table所有資料到 Server
          2.清空Client Table
          (一筆一筆上傳,commit後才清空)
  false: 不做上傳,清空動作

'目前測試在WriteFromTable之下
如果加入 Transaction 會出錯
先拿掉, Transaction 配上 DataAdapter.Update(DataTable)



'目前專案改以 Frame Work 2.0
所以相關載入組件,也要在 2.0環境下執行編譯

改了以後一堆東西不能用
先看到時候執行環境怎樣在修改好了


'厚度
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.>50, <=50且不含"+" -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.<=50且含"+" ->Scand
            '      b.其他 -> key in
            '********************************

'製令
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.>400, =0 -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.<=400, <>0 -> Scand
            '      b.其他 -> key in
            '********************************




=======================================================

'需要紀錄每次變動
目前設長度100
尚未做長度限定防呆

'每次存檔送出,將 TextBox 自訂屬性初始化
 單純清空將不做初始

'檢查所有欄位非空值,存檔


'鎖住複製貼上動作



vb TextBox 禁止复制http://zhidao.baidu.com/question/63400211.html



'紀錄最後是否Key In


'將 TextBox 加入三個屬性
一個紀錄原始資料
一個紀錄顯示資料
一個紀錄是否KeyIn


每次離開焦點,判斷顯示資料是否改變


       If Not Decimal.TryParse(sender.Text, Nothing) Then
            sender.focus()
            Exit Sub
        End If

        '暫存數值與新輸入不同
        If sender.valuetmp <> sender.text Then
            '記憶數值有變化
            sender.valuechange = True
            '抓住暫存資料數值
            'sender.valuetmp = sender.text
            sender.valuetmp = If(sender.text = "", "", String.Format("{0:#,0.00}", Decimal.Parse(sender.text)))


            '± ASCI 241

            ''抓儲存前原始數值
            ''判斷是否有 "+"
            ''true = 掃描,false = key in

            '判斷輸入完成後時間
            'stopWatch.Stop()
            '標準時間設置 50ms, 判斷以內為掃描
            sender.tick.stop()
            '********************************
            '1.Scand - > 自動跳行  (時間差)
            '修改時:
            '      a.有更改,不含"+" -> key in
            '      b.其他 -> Scand
            '2.Key in - > 手動跳行 (時間差)
            '修改時:
            '      a.有更改,含"+" ->Scand
            '      b.其他 -> key in
            '********************************

            If sender.iskeyin Then
                'key in 手動跳行
                '資料數值有更改
                If sender.tick.ElapsedMilliseconds <= 50 _
                    And sender.Text.Contains("+") Then
                    '以 scand 修改
                    sender.iskeyin = False

                End If
            Else
                'Scand 自動跳行
                '資料數值有更改
                If sender.tick.ElapsedMilliseconds > 50 Then _
                    'And Not sender.Text.Contains("+") Then
                    '以 key in 修改
                    sender.iskeyin = True

                ElseIf sender.tick.ElapsedMilliseconds <= 50 _
                And Not sender.Text.Contains("+") Then
                    '以 key in 修改 (輸入快,但是不包含"+")
                    sender.iskeyin = True
                End If
            End If


            sender.tick.Reset()






'可能需要一些輸入防呆
最好是能做到判斷輸入裝置




 C# >> HID裝置抓值判斷問題
http://webcache.googleusercontent.com/search?q=cache:3pXAGZOL8mMJ:www.blueshop.com.tw/board/FUM20050124192253INM/BRD201012062050227KX.html+VB+%E5%88%A4%E6%96%B7+HID&cd=4&hl=zh-TW&ct=clnk&gl=tw

How to detect USB devices, mouse, keyboard (HID) using C#








/*
GUID_DEVCLASS_FDC軟盤控制器
GUID_DEVCLASS_DISPLAY顯示卡


GUID_DEVCLASS_CDROM光驅


GUID_DEVCLASS_KEYBOARD鍵盤


GUID_DEVCLASS_COMPUTER計算機


GUID_DEVCLASS_SYSTEM系統


GUID_DEVCLASS_DISKDRIVE磁盤驅動器


GUID_DEVCLASS_MEDIA聲音、視頻和遊戲控制器


GUID_DEVCLASS_MODEMMODEM


GUID_DEVCLASS_MOUSE鼠标和其他指針設備


GUID_DEVCLASS_NET網絡設備器


GUID_DEVCLASS_USB通用串行總線控制器


GUID_DEVCLASS_FLOPPYDISK軟盤驅動器


GUID_DEVCLASS_UNKNOWN未知設備


GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器


GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器


GUID_DEVCLASS_PORTS端口(COM 和 LPT)


GUID_DEVCLASS_MONITOR監視器


========================================================
'需要納入每個產品的標準厚度,
tblStock  XF, isnotvalid <> 1
PartSpecD 標準重量
PartSpecE 標準厚度

'製令輸入後
撈出製令生產料號 text4
text15 製成
text4 生產料號
text7 製令

'合理範圍,維持原本style
 超出範圍,改變背景以及文字色調

'生產機台不一定按照製令排的機台走

2011年11月11日 星期五

@CASE 10 < 原補材料報表 > ver-111111

原補材料報表



==========================================================

'透過年月篩選

'轉Excel
目前缺格式
或是這樣就好


'不確定是否需要轉報表



===========================================================



select a.WHCode as 倉庫代號, a.rcvpartno as 領用單號, a.rcvpartdate as 領用日期,
       b.partcode as 料號, c.partrule as 規格, b.needqty as 數量,
       d.actunicost as 單價 from tblrcvpart a
join tblrcvpartdet b on a.rcvpartno = b.rcvpartno, tblstock c, tblStockCost d
where a.whcode like 'F3' and a.rcvpartdate like '201109%'
and c.partcode = b.partcode and b.partcode = d.partcode
order by a.rcvpartno,b.partcode

2011年11月10日 星期四

@CASE 9 < 各表單單據歷史查詢系統 > ver-111111

'可能需要將重繪的Form 加入TextBox繪製
以方便複製

'不知道要不要加入幣別稅率,


稅前totalamt - 稅taxamt = 稅後subtotalamt
目前金額都撈稅前


再看看

'可能需要標示每種單據與最新版不同之處
所以可能要抓下最新版的相關資料

切換版本時每個欄位比對


'主要應該是做出類似單據歷史查詢的功能


'需要將各個表單做一個查詢系統
可以查看表單相關資訊
包含確認人,確認時間
修改人,修改時間


==================================
每次顯示單筆資料
以單號查詢

tblSysStatus 狀態

===============================

@看起來舊資料, 日報單號下面可能有多筆製令資料
    但是新的資料, 似乎一個日報單號, 記錄一個製令資料


生產日報表
從APS下去看
細項 找 製令號, 訂單號

製令資料表 撈相關生產日報表資料

@確認時間 , 只記錄 第一次確認的日期
@反確認時間, 只記錄 最後一次反確認日期
@修改時間, 只記錄 最後一次確認的日期

shift 班別


tblLotImpPdtAns 生產日報入庫明細 ( Var )
tblLotExpPdtAns 生產日報出庫明細( 扣料明細) ( Var )

tblPdtAnsDetPt 製令料帳資料 ( tblPdtAnsDetPtVar )
會有多筆細項資料
需要以DataGridView一次顯示料帳資料
點選以後,在牽動扣料明細資料的顯示 (同ERP)
isPreProc 前製程項目
isDeStockQty 扣良品


生產數,完成數,完成度 透過相關計算 可得
iscalbadqty 回報含不良品 (影響完成數計算)

Tasks 查詢所有製令 實際開始完成時間
text7 製令馬, text5 訂單號, text4 成品, text15 製程
number2 生產數, number5 完成數
@設定要生產的料號,數量, OutLineLevel = 1
    之後會產生相關製程的製程用量 OutLineLevel > 1
    找 PctComplete = 100 完成度100趴


'這邊應該改一下
去撈



生產回報查詢
Product_Answer 抓所有製令生產回報明細 ( Product_AnswerVar )
(回報清單)

tasks 生產數
Product_Answer   sum(GoodQty) 完成數


================================

驗退單
採購退料

從採購單抓 採購數

@驗退狀態描述可能要前端處理掉


領退單
領料退料

累計入庫倉抓到的所有庫存數,所有庫存不良數
tblstocksub 所有庫存數


銷退單
銷貨退料

@銷貨類別描述可能要前端處理掉

================================
驗收入庫單
透過驗收單號,去採購細項抓  採購單號
抓 驗收單位輛,良品,不良品,備品樹, 批號

'可能要再帶入驗退單資料
目前只抓 總驗收良品數, 已入良品數

=================================
費用性採購單
tblExpPOCatego 費用性採購分類



費用性收料單
去費用性採購單抓  採購數,已交數

tblExpChkAcptCatego 費用性收料分類

isunchked 免驗


tblbooking 記帳類別

tblsyslist 一些分類

tbldept 部門


@碰到說讀取資料直 有雙引號
VB toString以後數值變成兩個單引號的問題

用取代改回雙引號
=================================
拆解回報單

tblstocksub 所有庫存數

庫存數,需要計算 出庫倉 的 良品與不良品樹

成本認列 tblSysCostCatego

目的分類 tblStripCatego
=================================
拆解領料單

tblstocksub 所有庫存數

庫存數,需要計算 出庫倉 的 良品與不良品樹

成本認列
================================
領料單 tblRcvPart

subno 批次

tblRcvPartCatego 領用原因

tblLotExpDistPart 出庫明細

==================================
採購單 tblpo

核對驗收單, 計算 收貨數
tblSupplier 廠商表單

===============================
驗收單 tblchkacpt

抓採購單 採購數 qty, 已交數 exqty

交貨數 與 實際驗收數 不一定相等

小記 = 實際驗收數 * 單價

加入品檢單號 acptno

@發現說有新版本的驗收單
    卻沒有舊版本的相關資訊

================================
銷貨單 與 訂貨單 差不多

訂單 銷貨單 加入 待銷數

stockqty from tbllotexpsale

==================================
訂貨單號, 單號 唯一,只記錄最新版本
RptOrderDetA.txt

rptOrderChangeDet.txt 修改 item 內容
(歷史資料 isclose = 0 表示未結案,並且版本為舊版本)

RptOrderListA.txt

RptOrderChangeListA.txt 看新舊修改差別
(包含訂單與細項)


透過 var 歷史清單
看出來修改日期
看出差異反映在第幾版上
==================================



'可能需要重繪 panel 將資料寫在 panel 上,
放大show出, textbox資料



'需要讓 textbox 寬度變動
 以適應TableLayout的變動

設定 cell 裡面控制向的 Anchor 屬性左右對其

就可以 自動縮放寬度



'需要將修改人,修改時間,料號
一併顯示在 GridView,
點選才打開細項資料


2011年11月3日 星期四

@Tools 上傳更新程式 & 版本資訊 介面


'有點紀錄資訊顯示格式問題
  排版問題

'可能要稍微想遺下版本號個代表什麼更新之類的
=============================================
'讀出所有資訊後,
清空寫入新版資訊,
再加入暫存舊資訊


c# FileStream和StreamWriter用法

注:FileMode枚舉成員值在文件存在與不存在時的情況
成員
文件存在時
文件不存在時
Append
打開文件,流指向文件的末尾,只能與枚舉FileAcess.Write聯合使用
創建一個新文件。只能與枚舉FileAcess.Write聯合使用
Create
刪除該文件,然後創建新文件
創建新文件
CreateNew
拋出異常
創建新文件
Open
打開現有文件,流指向文件開頭
拋出異常
OpenOrCreate
打開文件,流指向文件開頭
創建新文件
Truhncate
打開現有文件,清除其內容。流指向文件開頭,保留文件的初始創建日期。
拋出異常


'RichTextBox 內容格式




2011年10月25日 星期二

@Tools 銷貨單檢查 - 批號異常

銷貨單檢查 - 批號異常
檢查銷貨單上,銷貨回報批號日期
於該月份大於銷貨單銷貨日期的批號資料


==================================

'加入 生產日報表
去核對lotno, 料號
撈出實際日期

'讓使用者選取是否只看不同月份的異常資料(同月份不會影響帳務)


====================================
'結合生產日報表,查詢日期異常資料

select a.saledate as 銷貨日期, c.pdtansdate as 回報日期, c.saleno as 銷貨單號,
 c.orderno as 訂貨單號, c.partcode as 訂貨料號, c.batchno as 批號,
c.lotno, c.stockqty as 出貨良品數, c.impdate as 建檔時間
from tblsale a
join
(select  g.pdtansdate, b.saleno, b.orderno, b.partcode, b.batchno,
 b.lotno, b.stockqty, b.impdate
from tbllotexpsale b
join (select d.pdtansno, d.lotno, d.partcode, f.pdtansdate from tblLotImpPdtAns d
join (select e.pdtansno, e.pdtansdate from tblPdtAns e where e.status = 2 ) f
on d.pdtansno = f.pdtansno ) as g
on b.partcode = g.partcode and b.lotno = g.lotno
) as c
on c.saleno = a.saleno
where a.status = 2 and c.saleno = 'SA20080811004' and a.saledate < c.pdtansdate




'生產日報表,核對包裝回報單號,撈出正確回報日期
select d.pdtansno, d.lotno, d.partcode, f.pdtansdate from tblLotImpPdtAns d
join (select e.pdtansno, e.pdtansdate from tblPdtAns e where e.status = 2 ) f
on d.pdtansno = f.pdtansno
where d.lotno = 'PC200800000000002' and partcode = '000216BNOL0XX'
order by partcode




'銷貨日期 < 出貨回報日期 異常資料
'LotNo PD開頭, 長度13
select a.saledate as 銷貨日期, c.lotdate as 批號回報日期, c.saleno as 銷貨單號,
 c.orderno as 訂貨單號, c.partcode as 訂貨料號, c.batchno as 批號,
c.lotno, c.stockqty as 出貨良品數, c.impdate as 建檔時間
from tblsale a
join
(select substring(b.lotno,3,8) as lotdate, b.saleno, b.orderno, b.partcode, b.batchno,
 b.lotno, b.stockqty, b.impdate
from tbllotexpsale b where b.saleno = 'SA20111003001' and len(b.lotno) = 13
and b.lotno like 'PD%' ) as c
on c.saleno = a.saleno
where a.status = 2 and a.saledate < c.lotdate



'出庫明細, 找批號
select b.* from tbllotexpsale b where b.saleno = 'SA20111005001'



'銷貨單號
select * from tblsale where saledate between '20111001' and '20111030' and status = 2

2011年10月16日 星期日

@Tools 透過原物料,探訪找出MCST製令有用到該原物料的舊料號


先這樣

===============================
    Dim tblMCSTGoods As New DataTable
    '\stru\HFGOODS.DBF   1 2 3

@有三個檔案,有重複資料,
合併,去重複

    Dim tblMCSTComp As New DataTable
    '\stru\COMPOUND.DBF    1 a
@COMPOUND比較多,但看起來還是有多少
目前還是以COMPOUND著手

    Dim tblMCSTGoodsm As New DataTable
    '\stru\GOODSM.DBF


========================================================
'或許改成範圍搜尋
某個MCST檔案範圍
不去作全部的比對

@感覺目前抓的產品內容HFGOOD.DBF是做出來的
應該事先走別的部分,透過舊料號抓到某些代號以後才去走 HFGOOD
這要再問看看
目前先走HFGOOD

@透過 taigoods.dbf 去撈出 HFGOOD 要走的產品料號

@再來應該是缺少商標,
該怎麼知道八馬應該帶入哪個商標
透過舊料號的末三碼
去找 customer 資料夾
去找該檔案下的商標編碼 Labes

'都是走製成料號去抓
先比對製成料號下,所抓的調和編碼是不是一樣


@看起來 ERP 調和內容 M 開頭
都已經拿掉地區編碼
所以舊料號應該可以放心拿掉最後一碼(為字母時)

'ERP所有製令料號
select a.pdtcode, b.partrule, a.pdtkey, a.pdtversion from tblbompdt a
join tblstock b on a.pdtcode = b.partcode
where a.pdtcode like '%XF' and not a.aprvdate is null and a.isnotvalid = 0
order by a.pdtcode



======================================================
'有太多不一致了
要再想一想

'見鬼,ERP找的到調和
SQL找不到 (尚未核准)

幹~可能要走第七碼

以MCST檔案為主, 切兩個 View
@調和內容單純對調和內容

只需要走調和內容比對
@Good只需抓使用數比對


檔案在 Server端
直接存取
Server.MapPath("路徑") 去做 CnS

上傳Excel檔案時發生錯誤,訊息為不是一個有效的路徑
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200710091155432EO


OleDbConnection cn = new OleDbConnection ();
//設定連線字串
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../Upload_Excel/") + FileName + ";Extended Properties=" + "Excel 8.0;";

這好像是 .NET才寫的
winForm不能用
還是下載來操作吧


=======================================
抓產品名, 去對MCST所有產品


'舊料號 比對 找新料號 XF
select * from tblstock
where partrule like '15]' and partcode like '%XF'

'找到該產品應該走的 Proc  (PdtKey, PdtVersion)

select * from tblbomPdt
where pdtcode like '000215B----XF'
==============================================
@抓 MCST 所有 產品檔案 去跟BOMProc 調和名稱對
然後一一比對 調和使用數


'該調和使用數 (ProcNum/CardNum)

select * from tblBomProc
where proccode like 'BS033'

@
procNum = Botmgw1 + Botmgw2 + Botmgw3
XD = Glassn1~3, Fibern, Qn1, Qn2

==============================================
MCST調和檔案 (Compound)
不包含該調和使用數 (使用數紀錄在產品檔案中)

@所以抓MCST所有調和 去跟 BOM表 調和名稱對
然後一一比對內容

'該調和製程內容 (PartCode, PartNum / CardNum )
'並且換成舊料號(PartRule)
'找最新PdtVersion


select a.partcode, b.partrule, a.partnum, a.cardnum, max(a.pdtversion)from tblbompart a
join tblStock b on a.partcode = b.partcode
where a.proccode like 'BO007-7'
group by a.partcode, b.partrule, a.partnum, a.cardnum



@
ProcCode = Dispense
Partcode = Mgn1~4, Mfn1~4, Nln, Npn,
@Mgn M開頭原料,最後一碼為字母者,去掉最後一碼  (舊碼 地區編碼)
@M料號 在 Mgn之間應該是不會重複(不同地區編碼,也不會出現)
PartNum = Mgw1~4, MfW1~4, Nlw, Npw,
CardNum = Ttw * 1000
--------------------------------------------------------------------------
反過來,透過ERP調和製程,去比對MCST

'所有調和製程


select distinct(a.proccode), b.partrule from tblbompart a
join tblstock b on a.proccode = b.partcode
where len(proccode) <> 13





=============================================
因為核對舊系統與新系統物料有點麻煩的關係
需要寫一個可以找出某段期間內的製令下
透過篩選的原物料號,
就可以排除其他不相干製令

在核對新舊系統資料上,可以少一些功夫

然後透過製令製造書的假檔案
做出要讓舊系統列印的資料
在跟MCST印出的資料作比對

==============================================

或是說 直接透過舊DBF資料,比對ERP BOM表資料

找出調和內容不一致的料號

\\Win2ksv01\tai-dos\make 之下
HFGOODS 物料 有哪些製成,
COMPOUND 調和內容 有哪些原物料

ao002紅  -> ao002R
ao003新  -> 沒有

可以做~需不需要做~要問看看老大

2011年10月13日 星期四

@CASE 8 < 網子拆解,產出月統計表 > ver-111013

目前先做雛形
只管染色前領料
裁切後回報

@回報領的網子是已經染過的
所以回報跟領料單號對不上

目前會變成說,領料與回報沒有絕對的關係
(如果領的是以切網子,與回報就能做關聯)

先單純紀錄月報表

@分 領取網子原料 表格
以及 領取以切網子 表格  (以裁切,再次裁切)

'忘記 日期 yyyy/MM/dd 怎麼轉excel 顯示了
1.用string.Format("{0:0000/00/00}",val(value)) 將資料抓住 ( 轉數字,用string格式抓字串)
2.設定datagridview顯示格式
3.設定excel顯示格式

@注意一定要用 "/" 做分隔
=========================================
需要透過拆解回報領料單,去統計月分內(回報單日其)

拆解領料單領了多少東西
拆解回報單生產了多少東西

可能需要了解遺下網子與裁切過後的料號之間的關聯
了解某批網子生產了哪些東西,數量

目前看不出來源反與網子之間有什麼關聯
但是拆解領料與回報單可以隊的上
所以可以兩邊核對做出月報表

@回報單上會記錄領料單號

@有拆解領料單,不一定有回報單 (領料單上沒打回報單號)
    回報單一定有拆解領料單
( 領料單的資訊不準確,以回報單為主)

@好像會有領料 領"已經裁切"過的網子,再來裁切成更小的尺寸
 OY4312522  -> OY4302565

@看不出領料,回報之間OA被什麼染色

@看起來是當天領料當天回報
所以領料回報可以做成一筆資料,在同天發生

@因為拆解領料有網子,有樹酯
為了分攤計算成本
每種尺寸用的樹酯趴數,會有所不同
ex. 領 OA250,OA389,用 NL2530--
兩個計算上,用的NL趴數不同
樹酯成本分攤在兩個上面也就不同

要問問看領料的時候,是依據什麼公式來計算要領多少,才能生產要的數字


@分類上,基本上依照第三,第四碼去分,但是可能要再顯示尺寸

@看能不能直接開檔案,然後把回報數值填入該天,讓他自己跑公式
但是怎麼分類就要搞清楚

@"檢"的部分,也是直接鍵入ERP
問看看有沒有什麼方式去挑出來不計算成本


@也要看,染色前的領料產出
ex. OA250 -> OA250-C

@大片頭固定每天生產一定量個網子
染網也是每天固定幾隻
因人力會有所增減
負責生產運送

淡水這邊建ERP資料(拆解,回報 )
所以要問淡水這邊
==============================================

'找拆解領料,領了哪些東西, (O%,N%,W%, not %-c)
select a.striprepno, a.striprepdate, b.striprcvno, b.partcode, b.striprcvqty, b.striprcvbadqty
 from tblstriprep a
join tblstriprcvdet b on a.striprcvno = b.striprcvno
where not a.apvddate is null and a.status = 2 and a.striprepdate like '201110%' and
 (b.partcode like 'O%' or b.partcode like 'N%' or b.partcode like 'W%') and b.partcode not like '%-c'
order by b.striprcvno



'找拆解回報,產出哪些東西, (O%,W%,R%, not %-c)
select c.striprepno, d.striprcvno, d.striprepdate, c.partcode, c.striprepqty, c.striprepbadqty
from tblstriprepdet c join tblstriprep d on c.striprepno = d.striprepno
where not d.apvddate is null and d.status = 2 and d.striprepdate like '201110%' and
 (c.partcode like 'O%' or c.partcode like 'W%' or c.partcode like 'R%') and c.partcode not like '%-c'
order by c.striprepno



'直接抓第三,第四碼,來判斷是屬於哪個OA

==================================================
拆解領料單 tblStripRcv, tblStripRcvDet
拆解回報單 tblStripRep, tblStripRepDet

透過回報單日期,
1.去找拆解領料單,領了多少物料
2.回報單,回報產出多少物料

@網子裁切不走BOM表,所以應該無法透過BOM表去了解OA 產出那些OY
    或是有什麼規則,要再問問看
@也有一些規則, ex OA310  -> 產出 OA310-C
@OA 為網子原料, 尚未裁切,尚未染色,  總共 5 碼
    OY 為已切網子, 已經裁切  總共 9 碼

@OY XX abc de
    Y  應該就是顏色,染色後的顏色:
         未染色 A, 黃 Y, 黑 B, S SKILL
    XX 就是網子原料的粗細(強度)
跟著網子原料,不會改變
=========================
看要裁切成什麼尺寸,去做組合
    abc應該就是尺寸,
    de 就是孔徑

@OA網子原料,規格似乎可以看出該原料可以做成的網子第三第四碼
ex. OA376,   原反 550#    可以做出 OX"55"abcde
      OA389,   原反 400#    OB"40",OY40
      OA310,  31 (310)
    * OA250, 25 (250) , OS25  250 (S size)
     *OA135, OB4017835,OY5511522 (交織 1350)
     OA350, 35 (350)
      OA376, 55 (550)
     OA378, 58 (580), 1378(580)
      OA389, 40 (400)
     *OA138, 18 (1358)
      OA396, 43 (430)
==============================================
處理表 (染色前領料)
OA376,  OY 1376 -> FR2530 -> NL2530-- (黃)
OA389,  OB 1389 -> FR2530 -> NL2530SB(黑)
OA138,         1358
OA310,         310
OA420,         420

@每種網子有不同尺寸,目前ERP上似乎看不出尺寸差別
尺寸影響到 一些公式計算 :
1.使用長度
(不確定是不是受尺寸影響)
2.時數
3.效率

@填充劑(領料,染色)
 N開頭, 8碼
NL2530--   黃色 (FR-2530)  -> OY
NL2300--
NL2530SB 染黑 (FR-2530)  -> OB
NL2530SK SKILL用 (FR-2530)  -> OS
NL2200AK
樹旨液

NP3648-- 樹酯粉
2 F=填充劑  L=樹脂液  P=樹脂粉


@WZ開頭 不織布
不足部分以 X 補足 12 碼

@不織布原料 W 開頭
  共6碼
目前只有 WAS400

@ 不織布以切 R開頭
 共8碼











2011年10月10日 星期一

@Tools 檢查BOM表是否完全

需要一隻程式
去找那些東西BOM表示還沒完全建好 (isnotvalid = 0 , acptdate not null)


看需不需要全線管理
要做到什麼程度
要再想想看

2011年10月2日 星期日

@CASE 7 < 製令製造書 > ver-111003


'缺一個查詢介面,
透過檔案名稱,資料索引,
篩選異動歷史紀錄

看能不能做一個停留某筆資料一定時間,自動跳出一個小型表單選項
作為直接查詢該筆資料所有歷史異動

'選取最後幾筆資料會亂跳焦點
要再檢查一夏

@如果不是透過編輯狀態BegingEdit,
而是透過程式給定Cell數值時,
將會引發DataBindingComplite事件

會變成說畫面重繪,
所以每次在新增資料最後一筆的時候,GridView範圍會重新繪製
填滿原本空缺處,
選取焦點就會跑掉


在CellEndEdit 之下出問題


DataGridView上直接編輯之幾個好用的指令



目前只要一對相依Cell做給值動作就會
照成焦點的改變,畫面的跳動,

看能不能至轉換焦點,驗證相依Cell之後再回到預設下一個Cell焦點開啟編輯

@或是說限制GridView ScrollBar無法拉到產生空白處

'需要對資料做異動紀錄,紀錄時間點,異動人,異動資訊

@目前記錄的資料,如果原始內容消失,將看不出資料的原始狀態
先這樣在說好了

    '*****************
    'A.為目前MCST檔案新增一個Primary欄位做為資料索引
    'B.或是乾脆將所有資料寫入SQL
    '
    '
    '針對資料 新增、刪除、修改 做時間點,修改人,修改哪一筆資料的紀錄
    '需要建立一個紀錄異動訊息的Table
    'USER_TASKMAKE_DATACHANGE
    '1.異動資料檔案名稱 (MCSTNAME)
    '2.資料索引位置 (DATAINDEX)
    '3.新增,刪除,或修改的動作紀錄 (CHANGE)
    '4.修改人 (USERID,USERNAME)
    '5.更動時間 (DATETIME)
    '
    '需要注意跨檔案轉移資料要怎麼紀錄
    '*****************



之後做一個查詢介面,
1.輸入查詢檔案
2.查詢資料索引
去找出該筆資料所有歷史異動資訊

@怎麼在既有舊資料新增欄位後 給定索引值
 可能需要寫一個副程式先跑一次

@何時才應該記錄新增,刪除,修改資料的時機

    '有輸入焦點
    '新增:1.空白               (新增時,目前全部新增都會記錄異動)
    '     2.部分欄位有資料  
    '       或完整資料
    '修改:離開row就判斷是否被修改 (編輯離開時,紀錄修改異動欄位)

    '無輸入焦點
    '刪除:點選確定刪除後,把該選取資料做紀錄 (選取刪除時)
    '資料搬移:判斷是dgv1移出移入還是dgv2移出移入  (DragDrop後)
    '         需要處理移入索引問題 (移入索引需要改寫,從被移入最大索引開始累加)
    '***************************
    '你的datatable裡面的每一個ROW都會有一個RowState的屬性
    '如果該ROW是新增則RowState="Added"
    '如果該ROW是有被修改過的RowState="Modifyed"
    '如果該ROW是被刪除的則RowState="Deleted"
    '如果該ROW都未被異動過的則RowState="UnChange"
    '***************************


@每次一新增,就將索引值往上加,如果欄位全空白(除了索引欄位),
    就篩除該欄位資料,並且移除暫存Table相關索引資料

@每次取得輸入焦點,就會判斷該row modifyer
  可能何時紀錄異動資訊要再想看看,
  目前每次離開Row都會記錄一次,變成重複紀錄row狀態


得知 DataGridView 有所異動



如何判断DataGridView 行状态



@需要想遺下異常結束,需不需要紀錄異動結果
   到底應該何時去紀錄相關異動資訊
 
   如果所有操作,最後又沒存檔,是不是應該就捨棄之前所有暫時性紀錄
   直到確認所有操作送出上傳後,將之前所有暫存的異動資料記錄
   最後全部上傳

@存取檔案要注意另外處理索引欄位



'透過加入不同委派事件
在不同Cell做輸入字元控制

卡在怎麼判斷之前所委派的事件是哪個
必須先移除該委派,才能加入欄位所屬的委派輸入事件
才不會交互影響

目前加入Cell委派事件之前,
先一次刪除所有之前的委派


'反映說有時候存檔後,查詢卻是存檔前狀態
發生再更改訂單日期的時候
(測試登入,實際登入)
目前觀察應該是不會有問題發生
在觀察

'限制輸入日期長度
 限定數字輸入

抓列印日期部分防呆




'忘記拿掉測試路徑出包
目前加入判斷路徑防呆
非管理員無法以測試路徑上傳主機


'可能需要類似複製貼上的功能


切得不好
感覺現在寫法不是和這樣做
看能不能開一個View
然後只接受轉入資料(或也可以轉出)
無法直接編輯(在某一方面也算是可編輯啦)

'限制單一使用者編輯動作
必須透過一個不會使用的檔案,
不然會造成下載複製檔案的意外(檔案被,open,無法透過)

'對資料做標示,改變顏色 (方便回頭修改找資料)

目前排序等任何對GridView做重繪的動作將會消失

@發現說,在跨黨案時,做標記動作,沒反應,
並且左鍵拖拉會啟動

有點寫太亂~
目前測試已修正點右鍵後,左鍵能夠拖拉的問題
跨黨案開啟,將不做標記



'可能需要panel開啟後,關閉其他panel
不然怕有相互影響

'可能需要一段時間內,自動存檔功能


'可能需要考慮到transaction的部分
新刪修可執行以後才commit

'畫面滑動,有時候紀錄變色位置會出錯


'有機會改改托放作業的顯示方式
希望做到panel淡色描繪的玻璃樣式

'存檔太慢,要改

.NET中DragDrop的光标



Control.GiveFeedback 事件



目前可以描繪控制向外框
但是侷限在controls
要找辦法描繪 GridViewRow
然後描繪整個row,而不只是外框



'刪除可能需要提示刪除幾筆資料
以免刪除了預期外的資料

'當檔案清空以後做存檔動作,將會產生一筆空白資料列
應該不會有什麼影響吧

在修


===================================================


'跨黨案轉移資料會出問題
(-1沒有資料列)


'需要新增列印機台篩選


'存檔後,還是有機會發生
索引不正確,GView紅線的問題

@問題可能出在 新增 row的時候
如果有空白 row ,之後有接續 非空白 row
會因為空白row被篩選掉
造成之前紀錄的索引值有所出入

只要一透過篩選動作,索引就會有出入

@新增 row 以後,如果不離開焦點,直接點選儲存
會先走儲存動作,才做 row_leave

@ rows.remove 以後, 也會引發 row leave

目前拿掉 row leave 檢查空白 row動作
透過每次存檔 剔除空白資料
存檔後,將編輯狀態拿掉


'一次選取多筆資料打勾 (做刪除)


'托放重繪可能有索引上的問題,
發生索引超過預期值
並且GirdView 出現 紅線 方框 + 紅線 X, 資料畫面消失

托放,結束托放,新增,儲存

感覺問題是出在一些GridView重新繪製Row的時候,
判斷的索引出了問題

照理說再只開單依檔案的情況下
不應該出現紅色線條在GirdView上

所以對索引做了些初始化修改,
要在測試看看

感覺有時間要把這個GridView的Code整理遺下
要更精準地去寫好每個功能
不然太亂了

感覺跟存檔以後屬性為初始化有關係,
dgv應該做一些屬性初始化動作
再重新鏈結 Table

每次關閉跨黨案的時候,
將兩個dgv 做屬性初始




'可能需要在編輯某個檔案時,將伺服器上的檔案鎖住
讓新的使用者不能編輯
(但是這樣好像沒意義,通常編輯都會在相同檔案之上)

建立一個檔案,檔案持續Open狀態(鎖定)

可否Open,
不能:有其他人在編修
可以:則開啟Open,鎖定檔案,



'需要增加 ORDNO , MAC, PART 篩選

目前透過DataTable.Select
萬用字元搜尋有限制
只接受 *,在字串的前端或末端

機台改抓ERP 生產單位檔
直接透過鏈結選取

[ Resources ]
目前只抓 F- , 1- ,2-

透過ListBox讓使用者選取
或許part,ordno也可以載入DBF清單,做篩選
可以手 key,像是萬用字元搜尋,也可以選取
選完一樣回到textbox自動 "," 分隔

@ListBox 設定好 DataSource 以後,
移除資料需要透過 資料來源
像是GridView 的情況
無法直接透過List.items.remove

'排序透過機台排序,加上次要日期排序

'拿掉TYPE,QQ,LP,做不顯示處理

'反映說,開立新檔案,
全部手Key資料
存檔 (50筆資料)
卻顯示說資料 超過範圍
最後只寫入 11 筆資料

@品茗欄位長度 在 DBF 是 40
所以要限制所有欄位長度輸入

應該將限制寫在要建立檔案時

目前所有欄位每次改DataSource就限制該欄位字串長度
寫入時,在檢查只取適當長度寫入



'權限控管
1.鎖掉編輯

@目前下載會覆蓋編輯過Client檔案
到時候編輯玩直接存回server後
就不會有這方面問題



'每次編輯結束,存檔將直接上傳伺服器


'加入列印報表功能
以製造日期作為製表日期,月份
以機台區分製令書列印

直接選擇列印日期
(應該要可以跨月份,目前先不做,轉ERP再來)
自動抓日期,
按照月份,機台去分列印內容

1.透過原本的篩選範圍來列印
(打開才能印)
2.另外選取輸入列印範圍
(沒開也能印)

變成 table 資料要在選取列印的時候撈取

@思考遺下沒輸入日期(有年月)
列印時要抓最大最小日期作為列印範圍
或是限制要輸入日期範圍

目前先做一定要輸入範圍才能列印

@列印檔案如果是編輯檔案,是不是應該先做存檔,才列印
還是直接列印編輯後狀態,但是沒做存檔動作

目前作法是
如果是正在編輯檔案,
1.先存檔, SaveAllView
2.在列印(走SQL撈資料列印)
如果不是,走SQL撈資料列印



'日期篩選不完全
何時出現篩選按鈕


'以IO方式複製 McstDataSchema 檔案
重新命名以此建立新檔案

McstDataSchema 放在server端
每次建立檔案檢查是否存在
不存在則詢問下載



'需要檢查如果編輯檔案沒開啟
不顯示瀏覽檔案開啟功能


'進度提示


'發現說判斷儲存的地方寫得不好
應該確認DGV是在沒有任何資料鏈結的模式之下
不做存檔動作

一些關黨動作
也應該適時的加入DataSource = nothing
而不是只清空table

'一些權限控制可能應該寫在menuForm之下
或是透過其他表單去設定
其他表單只是判斷是否有到哪個等級的權限
這要在規劃



DataGridView 列自定义排序
http://topic.csdn.net/u/20070525/09/cb563777-ad04-48b0-a2b1-b4b07ebd9039.html

'可能需要複寫自動排序邏輯(MAC欄位)
1. "-" 之前
2. "-" 之後

1.先比長度
2.在比字串


[.NET][Winform] 利用集合排序,重現 DataGridView 資料繫結後的排序





Sort DataGridView cells in programmatic way



@當GridView被鍵結到 DataTable 以後
無法透過 GridView.Sort 去自訂排序


要從 DataTable 著手

Linq: Sorting a DataTable


http://msmvps.com/blogs/deborahk/archive/2009/07/23/linq-sorting-a-datatable.aspx

可以比較,但是目前好像沒辦法做兩次比較
看了一些也只是簡單的升降密排序

目前作法是分 "-",前後兩個字串
是否能轉數字,不能就下沉

前後段數字比較

需要先透過view去排序 Table
最後再把View 轉回 Table 指定給 原始Table

需要透過某種方式去判斷自訂排序的升降密
原本的可以透過 DGV.SortOrder 去取得目前的排序方式
自訂就不行
當您使用自訂排序為控制項排序時,這個屬性的值並沒有什麼意義。
透過自訂一個狀態變數來記憶目前自訂排序的方式

無法轉換數字做比較的,
以原始字串比較方式排序



'發現說mouse down 不會即時反應在點選列上
變成拖拉到其他欄位

因為要寫在mouse down 下,DoDragDrop
如果拿掉就變成托放無法多選
每次一點選就跑掉select

或許可以考慮托放改成  滑鼠右鍵



'看能不能做到多選拖拉轉移檔案功能

DataGridView MultiSelect drag problem




透過 Me.DoDragDrop(Me.SelectedRows 要抓的資料, DragDropEffects.All) 寫在 mouse Down
Drop 時候,透過 


   Dim test As DataGridViewSelectedRowCollection = e.Data.GetData(GetType(DataGridViewSelectedRowCollection))
將該資料取出 Loop寫入放置位置


然後注意遺下該 資料 在 table的原始位置就可以了

所以可能可以拿掉 單一的方式,
也可能不需要記憶太多Index


再來是看一夏多選托放
在空白檔案之下,放入會出問題
好像問題是出在說,搬移以後
GridView 跟 table 好像索引不會重新關聯
這要再查看看

感覺問題出在說,DGV與 Table 之間的鍵結關係上
需要重新鍵結


在每次托放作業結束以後
將dgv1,dgv2重新與 DataSource鏈結一次
來更新 dgv 與 table 之間索引值得關係 ( DataBoundItem )




'需要做離開直接存檔
拿掉存檔功能
寫在離開以及關閉瀏覽檔案下


'使用者自訂排序功能
(機台,日期...等等,或是全開)

會影響拖拉資料

會影響新增資料之後馬上自動排序

看能不能找個辦法不自動排序
直到手動




DataGridView排序狀態移除問題


只有當未設定 DataSource 屬性時,這個方法才有效。當您將 DataGridView 控制項繫結至外部資料來源時,您必須使用該資料來源所提供的排序作業。當您藉由實作虛擬模式來提供您自己的資料來源時,也必須自行處理排序作業。


不要透過DataGridView來取消排序。要用 DataSource 來取消,因為有Binding到DataSet。

不想排序時,把 DataTable.DefaultView.Sort 清空即可,即:
 DataTable.DefaultView.Sort = string.Empty;







'需要加入日期篩選功能
(先侷限在開啟檔案之內
年月固定(檔案名稱), 日可以再次篩選)

所以存取要改寫
單一,範圍,空白(全抓)

1.一樣全抓
2.show篩選範圍 table
3.非篩選範圍 table, 暫存
4.編輯完畢儲存, 結合 暫存 table
5. drop create


重複篩選
1.將show的與暫存 table結合 (可能需要做一次存檔)
2.在一次篩選

篩選畫面下存檔

1.每次存檔先結合 show, tmp
2.透過 主要 table 去做存檔動作



感覺現在寫法效能會有問題
跑看看在看怎麼改


@發現說如果開放排序功能
托放作業將會受到影響
(view的排序與實際 table 排序不同)

DataGridView排序後,如何抓取綁定資料的正確索引值
http://www.baddog.idv.tw/notebook.php?mo=notebook&fn=view&id=5

DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
int index = dataTable.Rows.IndexOf(drv.Row);

所以必須要在mouse down 的時候,抓drv 與 tableRow之間的關係
找到真正的 index



'日期下拉是選單
年分提供前後兩年內的下拉是內容



Form2   form   =   new   Form2();
                        form.FormBorderStyle   =   FormBorderStyle.None;
                        form.TopLevel   =   false;
                        splitContainer1.Panel2.Controls.Add(form);   
                        form.Show();




'型別問題
可能問題出在gridview上面的型別問題

DataSourceChange時,將所有欄位資料直行別設為string



'發現說檔案只有一個資料的時候存檔
會發生 Class Range 的 autoFill 方法失敗 的問題

猜測是因為autofill 無法作用在單一cell的 range上 range("B2:B2")
所以可能要走


       oExcel.Sheets(1).Application.Selection.Copy()
                oExcel.Sheets(1).Range("D2").Select()
                oExcel.Sheets(1).Application.Selection.PasteSpecial(Paste:=-4163, Operation:=-4142, SkipBlanks _
    :=False, Transpose:=False)





'選取計數器,要在適當時候初始化

'開啟分割畫面之前
確定結束編輯模式

'有變色初始化問題
MouseLeave,有時候會超越索引直

'新開瀏覽檔案,
無法匯入資料問題
不會走 Drop

1.新檔案,就瀏覽檔案
2.舊檔案,新瀏覽檔案

目前可以加入
但是有時候drap index 會是 -1 初始化狀態
有點怪

關閉頁籤以後,再重新打開
drag會發生 抓不到 row的問題

發現問題出在 GridView沒有完全釋放
再關閉業籤的時候做datasource = nothing
並且釋放就可以了


'收合panel2時,有機會判定view是在panel2,
造成panel1拖放寫入自己問題


'托放測試
有變色問題

可能需要在滑鼠離開 View 的時候,
把離開的 View 顏色初始化

再來是把托放作業的顯示樣式
在Drop以後初始化



'點選有問提

每次第一次進入 View 點選
會先走 mouse down
再點一次,就走cell click
再點一次 mouse down 循環

可能需要全部寫在 mouse down
拿掉 cell click



'可能需要開啟分割拿掉選取
開分割視窗
1.拿掉選取
2.鎖調其他按鈕
3.開放拖拉動作



'panel2跑出來的時候
panel1可視區域會被覆蓋

重繪 gridview 沒用

猜測應該是要重繪scroll
或是說要重新嵌入之類的

要再查查看

SplitterDistance 分隔線位置
感覺還是要重新繪製
光條分隔線位置不會影響panel內容的scroll bar 位置

好像因為 scroll bar 是在 form 上面的 gridView 之上
變成說感覺form會被蓋過

每次container大小有變動
就重新設定form的大小

再來是手動更改分隔線位置
寫入 splitcontainer.splitter_Moved事件
去改 form的大小
但是會有點慢(放大縮小動作)

應該要再修



'檢查非以開啟編輯檔案

'瀏覽檔案的儲存

'看能不能接受開啟兩個檔案
兩個view ,用選取拖拉的方式轉移檔案

Winform中DataGridView控件实现拖动行,并在拖动状态中目标行上显示一条红线。

'滑鼠按住
mouseDown
'滑鼠移動
mouseMove
'拖動過程
dragOver
'拖動放下
dragDrop

這個是在自己View上面拖拉移動整個Row

[转帖]C#如何实现DataGridView到DataGridView的拖拽
http://www.csframework.com/archive/2/arc-2-20110612-1553.htm

這是兩個 View 拖拉移動 cell

看能不能兩個合併變成兩個 View 拖拉移動 Row
甚至移動多個 Row


DataGridView.HitTestInfo 類別

包含與 DataGridView 控制項中的特定座標組有關的資訊,例如,資料列和資料行的索引

@看能不能先限制只能在兩個view上面拖動資料
好像可以,但是會有問題說,每次點選都判斷是DragDrop
一直新增

@應該需要個別記憶兩個view的 RowIndex
在跨 view 拖拉時候
去決定要放在另一個view的哪個RowIndex

@應該需要分開自訂兩個class

目前卡在mouse up , mouse down
感覺因為我 down 寫了些什麼
以至於 mouse up 會因為寫入的左右建
作用在釋放的按鈕上


如何區分mouse click 及 mousedown的event ?!

MouseDown + MouseUp 的事件時間距離低於控制台設定時,會在 MouseUp 之後同時觸發 MouseClick
所以會先有 MouseDown + MouseUp ,但不一有 MouseClick 。





似乎mouse_down 是與 mouse_up 相互配合使用的

所以會相互影響



可能需要把拖拉寫在 down

把一般點選改寫入 mouse_click (判斷不是拖拉動作)




Windows Form 中的滑鼠事件



目前大致上可以移動
但是有時候怪怪的
跟進入哪個 view 的判斷有關係

拖動期間,不會走 mouse_Move
直到DragDrop 以後,才會走mouse_Move

把原本 mouse_Move的東西丟到 DragDrop
====================================



'可能需要輸入新資料以後,馬上排序
(或是手動排序)


=====================================
'右鍵選單
複製,貼上

'型別問題,透過直接轉移檔案會有問題

'發現說品名,地區 預帶後
再去改料號,客戶ID
如果資料是錯誤的,
並不會改掉預帶出來的品名,地區

'提示使用者輸入的資料
ErrorText = "此客戶名稱不存在"

當正確應該改回來