承上一篇文章
剛才遇到一個問題~特此來紀錄一下
因為DB的TABLE不是筆者開的!所以一直沒注意到從DB叫出來的數值
使用 .ToString("0000") 會有問題
在DB內原來開的欄位是numeric(18, 0)
欄位內的數值為911062
使用
MsgBox(Mid(DS_View.Tables(0).Rows(0).Item("LastNo").ToString("0000000"), 1, 4))
各位猜的到叫出來會是什麼答案嗎?
答案是9
酷吧!完成出乎筆者的意料之外
因為筆者想得到的答案很簡單
就是先把911062轉成0911062然後從第一位數取四個
就是0911
可是只有取到一個9
天吶~
解決方法!把該欄位先轉成Integer就好了
MsgBox(Mid(CType(DS_View.Tables(0).Rows(0).Item("LastNo"), Integer).ToString("0000000"), 1, 4))
使用前請注意喔
不然遇到問題再來解決也是很花時間的...
Read more.
分享使用微軟開發工具及工作上會遇到的疑難雜症
2009-11-30
[+/-] : ToString Format 齊頭用法
今早改寫公司的ERP時!看到了為了要數字轉文字而且While迴圈的寫法
初始值是數字1 可是想要産出0001的文字格式
看到了吧!舊式的這樣不錯吧!
其實在我以前也不這樣寫 我會這樣寫
這樣的解法是把數字1轉成文字之後 再加上0000四個零
最後再取最後右邊四位!就會得到格式0001
作法全是對的 但是有新的做法囉
請看
搞定
是不是很爽^_^
非常直覺非常好用!必學喔...
Read more.
初始值是數字1 可是想要産出0001的文字格式
Dim xLastNO As Integer = 1
Dim xLastNO_Str As String
While xLastNO_Str.Length < 4
xLastNO_Str= "0" + xLastNO_Str
End While
看到了吧!舊式的這樣不錯吧!
其實在我以前也不這樣寫 我會這樣寫
Dim xLastNO As Integer = 1
Dim xLastNO_Str As String
xLastNO_Str = Right("0000" + xLastNO.ToString() , 4)
這樣的解法是把數字1轉成文字之後 再加上0000四個零
最後再取最後右邊四位!就會得到格式0001
作法全是對的 但是有新的做法囉
請看
Dim xLastNO As Integer = 1
Dim xLastNO_Str As String = xLastNO.ToString("0000")
搞定
是不是很爽^_^
非常直覺非常好用!必學喔...
Read more.
2009-11-25
[+/-] : Linq 的ROW_NUMBER() 使用 VB.NET
網路上找到不少文章!可是自已怎麼都試不出來
文章如下網址
http://bentleydavis.com/2008/11/linq-row-number-in-visual-basic-vb-net.html
真的是江湖一點訣~說穿了就不值錢了
依上面例子!想依樣畫葫盧出來!可是就是沒辦法成功
過了三個小時後才看懂!原來作者是用自己産出的STRING陣列來測試
並不是從DB拉資料出來
Public Class IncrementerZeroBased還是一樣不變
但是Linq Query 請改成
或是你要這樣寫也可以
各位客倌有看出來那裡不一樣嗎
沒錯!就是.ToList()
用SQL Server Profiler來觀察結果
只要用了.ToList()就會産出SQL語法
這樣剛好符合原作使用STRING陣列來測試的條件了
如果你照原作有問題的話~可以試試這個方法喔
終於搞定囉...
Read more.
文章如下網址
http://bentleydavis.com/2008/11/linq-row-number-in-visual-basic-vb-net.html
真的是江湖一點訣~說穿了就不值錢了
依上面例子!想依樣畫葫盧出來!可是就是沒辦法成功
過了三個小時後才看懂!原來作者是用自己産出的STRING陣列來測試
並不是從DB拉資料出來
Public Class IncrementerZeroBased還是一樣不變
但是Linq Query 請改成
Dim query = From ii In db.Item_Inventory _
Select ii
Dim i As New IncrementerZeroBased
Return query.ToList().Select(Function(ii) New With {.NO = i.increment, _
.Loc = ii.ii_lc_ID, _
.Qty = ii.ii_Qty})
或是你要這樣寫也可以
Dim query = (From ii In db.Item_Inventory _
Select ii).ToList()
Dim i As New IncrementerZeroBased
Return query.Select(Function(ii) New With {.NO = i.increment, _
.Loc = ii.ii_lc_ID, _
.Qty = ii.ii_Qty})
各位客倌有看出來那裡不一樣嗎
沒錯!就是.ToList()
用SQL Server Profiler來觀察結果
只要用了.ToList()就會産出SQL語法
這樣剛好符合原作使用STRING陣列來測試的條件了
如果你照原作有問題的話~可以試試這個方法喔
終於搞定囉...
Read more.
2009-11-16
[+/-] : Linq to SQL 三層式架構之商業層使用Using的問題
因為Using and End Using 用習慣了
所以很習慣的在寫Linq to SQL時也不小心用上了
可是在前端展示層一直叫用不到資料
一度懷疑是不是見鬼了
大家先看Code吧
正常可用版
看出問題了嗎?
使用Using在前端收不到資料喔
大家用時要小心...
Read more.
所以很習慣的在寫Linq to SQL時也不小心用上了
可是在前端展示層一直叫用不到資料
一度懷疑是不是見鬼了
大家先看Code吧
Public Class Item_InventoryBLL
Public Function Get_Items_Date() As IList
Using db As New ERPDataClassesDataContext
Dim query = From p In db.Item_Kinds _
Select p
Return query.ToList()
End Using
End Function
End Class
正常可用版
Public Class Item_InventoryBLL
Dim db As New ERPDataClassesDataContext
Public Function Get_Items_Date() As IList
Dim query = From p In db.Item_Kinds _
Select p
Return query.ToList()
End Function
End Class
看出問題了嗎?
使用Using在前端收不到資料喔
大家用時要小心...
Read more.
訂閱:
文章 (Atom)