2011年9月8日 星期四

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

'目前將日期輸入部分
限制數字輸入
限制輸入長度6

當長度夠,會加入"."做分隔,長度變8
報表判斷長度是否為8
不是,則印出原始數值
是,才做split顯示日期格式

可能修改時候,Cell取得焦點
應該將格式改回全數字
要再修
==========================================================
'需要檢查年月長度
不允許太多太少
月份應該限制在01~12之間

輸入前就擋下來


'提示使用者輸入料號是否存在
目前只做提示

 Me.Rows(e.RowIndex).Cells("Mark").ErrorText = "此客戶名稱不存在"

希望能夠做到載入dbf以後
就能馬上得知那些資料是應該出現 ErrorText的
目前都要先透過 cellEndEdit才能出來

'地區,
tblsysarea
tblcust.area

mark = tblcust.custid
Area = tblcust.area - > tblsysarea.areacode

DBF上面有一些是公司名稱
目前做法先帶地區
讓使用著自行輸入地區去改成客戶公司名
======================================
'希望限制 numeric 型別欄位
只能輸入數字

[C#]DataGridView欄位驗證只能是數字且不能為空白



'可能需要把所有輸入字母轉大寫
目前寫在 myDataGridView_EditingControlShowing 事件之中
將會發生在編輯儲存格的時候

檢查所有textbox cell,將輸入 ToUpper

透過委派事件+editingControlShowing,將 限制輸入寫入
並且作調轉大小寫

'發現說有些欄位如果空值(有些允許,有些不允許)
可以寫入DBF
但是讀取
將會在  evensQuery.Any 之下
產生
物件必須屬於 String 型別。

一些char 型別的欄位
用LINQ讀取以後
如果是null
好像會判斷成null
不太清楚判斷上怎麼判斷

[LINQ] 沒有適當的方法'Contains'存在於型別'String'中
有點像我的問題


但一但這樣更改,就會出現「沒有適當的方法'Contains'存在於型別'String'中」的Error。
2010-10-04_025051

查了許久的資料,終於發現問題是出在,ControlParameter的其中一個屬性
ConvertEmptyStringToNull 預設是true,所以在未輸入參數的情況下,
@query被轉成Null值了,當然就不會有Contains的方法。

解決的方式只要設定ConvertEmptyStringToNull=false 即可,非常簡單,不過,有種想砸電腦的fu~ 



應該是那個欄位沒有值也就是NUll

所以在傳換之前要先撿查是否為DBNull

ex:

if Not IsDbNull(ds.Tables(0).Rows(61).Item(1)) Then

    str1 = ds.Tables(0).Rows(61).Item(1)

Else

   str1=""

End if

透過一開始將新增的row
如果欄位型別為 string 的
寫入預設 string ""
這樣寫入就不會是DBNull


'發現說如果新增資料列
都沒有輸入資料
儲存檔案
將會再檢查row 的時候發生索引錯誤

感覺是因為我的檢查函式是寫在CellEnter之下
所以如果新增row 沒離開該row 去檢查
直接儲存
會發生錯誤

看能不能再儲存的時候也去做檢查

shit 動一個地方一堆錯誤跑出來

目前將 檢查 row 寫在 cellLeave
cellenter 只有寫入 beginEdit

變成新增資料row
在寫入 DGV.currentCell 時 發生
作業失敗,因為程式無法認可或結束儲存格值的變更。

@改回 CellEnter 寫入檢查
但是儲存檔案會再做一次檢查 row

======================================
'寫入上傳功能

'年月查詢
做mask格式限制

'應該修改檔案存檔,新增
在 該查詢檔案存在時
可以作用

'每次查詢,若檔案存在server,client
詢問是否覆蓋

若server沒有 ,將不做事(或是紀錄是否server存在,或是基本上先不做)


'建置新檔案,
方案一
是否要放在查詢按鈕之下,
當檔案不存在,詢問是否建置新檔案
然後開放新增 Row

目前透過查詢後詢問
建立以後立即連線該DBF

方案二
透過另外一個 Button來建立新檔案

'地區有一些設定上ERP上面沒有
區域不全
沒有班別

'物料,地區 可能要改從ERP上面撈
目前作法是
一開始讀取所有 XF 的資料,
輸入舊料號的時候再做 dataTable的 Filter

@物料

找半成品XF,撈出新料號,品名
select partcode, partrule as hpartcode from tblstock where partrule like '%@[0121@]' escape '@'
and partcode like '%XF'
group by partrule, partcode



=========================================================
'連續按新增,會跳過檢查(所以會一直新增空白行)
可能要讓他新增,同時也去檢查上次新增的位置是否空白

所以可能要記錄到兩次的 LastIndex

或著說就不管,
反正到時候送出資料,要在檢查一次所有資料
(效能問題,希望做到說送出時候可以不用再檢查資料)

'目前關掉 allowaddrow
透過新增tbl row
來新增空白資料行

所以需要寫入檢查 function


'看有沒有什麼辦法可以讓新增row,將編輯區域限制在 新增的資料
(只可以左右)
離開檢查該筆資料是否所有欄位為空值
空值視同刪除

在檢查 txt 抓資料數值的時候,去檢查
是不是該 row 所有的欄位資料都是空值
空如果是,則刪除該筆資料的串接字串

'必要項目
Part, Desc, Trndate, Delidate
也就是可能只需要檢查
這些欄位
其他可以接受空值

發現說當我關閉新增模式以後
它會自動檢驗所有欄位是不是沒有輸入數值
如果沒有會自動清掉該 row

變成可能只要自己寫判斷有沒有 空白字串 產生

===============================================================
'需要一個可以遮擋底下控制項的區塊
像是 form.showDialog

目前是將其他背景控制項 enabled 關掉

'開始寫
自動帶入其他相關資料 功能
(將在新增~編輯模式 之下 )

目前寫在KeyDown,但是好像不能
需要再配合 endEdit 每次 end 就跳下一列才對
而不是單純gridview上面的滑動



How catch Enter Key on EndEdit of Datagridview



看起來似乎是說,在edit 模式之下,enter是 將是在 ProcessDialogKey()
之下執行,所以必須複寫 這個function ,寫上自己要的邏輯
要測測看

有點棘手,他是自己寫一個datagridview class 來使用
不熟
先擺著
=============================================================

每次開啟製程表單
就讀取 地區 , 料號 兩隻 DBF
(有沒有什麼方式可以不需要讀取,以快取方式)

檢查資料夾有沒有兩個DBF
不存在就下載
或是詢問是否下載
(一開始多次問,或是一次全部覆蓋)


'需要一個 編輯地區 與 編輯料號 的表單


'可能需要一開始選取整個row
然後可以判斷是否選取,然後改變GridView的選取欄位

變成編輯模式(新增,修改)
改選取模式Cell
在編輯模式選取row, 將不改變 GridView的選取欄位

'希望能夠添加 Row 的編號 計數器



'是否PC跟SERVER資料要分存
操作上,需透過詢問才上船SERVER
也詢問是否需要下載



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

'馬的
本來的DBF資料庫 每個檔案的資料型態 基本上是一樣的
但是numeric 的預設值 0有的有設,有的沒設
變成說如果該欄位是空值
有設預設DecimalIndex 0 的就會報錯

這個看能不能複製資料形態到所有MCST檔案
存起來
要再跟老大討論

目前先把 numeric 型態的資料,遇到空值得帶入 0,做搬移資料寫入動作

沒有留言:

張貼留言