2010年6月8日 星期二

稅額計算方式

稅額=應稅金額-(應稅金額/1+營業稅)
例:
營業稅=5%
那就要除 1+0.05=1.05
稅額=應稅金額-(應稅金額/1.05)

應稅金額=總應收-代收-已開發票(其他付款)-明細免稅商品金額

combobox 下拉式輔助選字


由圖示效果,類似 SQL like 'aaa%' 效果;英文字完全沒問題,但是中文字要再多一空隔再倒回(backspace)即可看到下拉輔助選字效果.
底下為source:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim aname As New AutoCompleteStringCollection
aname.Add("w")
aname.Add("wu")
aname.Add("wus")
aname.Add("wush")
aname.Add("wushi")
aname.Add("good")
aname.Add("program")
aname.Add("池")
aname.Add("池龍")
aname.Add("池龍工")
aname.Add("池龍工作")
aname.Add("池龍工作室")

ComboBox1.AutoCompleteMode = AutoCompleteMode.Suggest
ComboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
ComboBox1.AutoCompleteCustomSource = aname

End Sub
End Class

2010年6月2日 星期三

RDLC 報表(1)

RDLC 是微軟內嵌的報表工具,但是要 View 還是得另外安裝工具和開發元件;這樣才能使建置和設計與瀏覽!!
本篇標示(1),表示將會有(2)(3)(4)(5)(6)..等等
所以第1篇,打算介紹引用相關部署的方式與相關訊息
1.先安裝Microsoft 報表檢視器可轉散發套件 2008

2.先學一下微軟提供的RDLC設計教學Walkthrough:Creating a ReportViewer Report
3.看不懂英文,這兒有一篇中文[ASP.NET] rdlc報表設計(一)
4.當要散發時,要注意會缺一檔;看一下這方法來解決ReportViewer 2008的部署

2010年6月1日 星期二

sql 處理中英文字串長度

原文:SQL處理中英文字串長度的範例
-- 計算中英文字串長度
DECLARE @string varchar(50)
set @string='一二三456七八9十'
select @string '字串', len(@string) '中英字數', datalength(@string) '資料長度', datalength(@string)-len(@string) '中文字數'

--------------------------------------------------------------------------------
-- 截取中英文字串長度
DECLARE @string varchar(50), @l int
set @string='一二三456七八9十'
set @l=8
select substring(@string,1,@l) '取字數', case when datalength(@string)>8 then convert(varchar(8),@string)+'...' else convert(varchar(8),@string) end '取資料數'
select substring(@string,1,@l)

--以上為原文--

個人覺上述寫法,運用在論壇時;當標題過長時,使用此法 "..." 倒是不錯的作法.
個人開發環境均是application環境,此種 "..." 就不大適合;要就截掉!!
倒是值得一提的是:
DATALENGTH = 是取位元組數 ; 當"ABCD甲乙丙"=10 bytes
LEN = 是取非位元組數 ; 當"ABCD甲乙丙"=7 個字元數

sql 字串固定長度

底下為相關做法網址:
1. Will 在網路世界的學習心得與技術分享
2.SQL Server T-SQL LPAD & RPAD Functions (String Padding Equivalent to PadLeft & PadRight)

依第2個網址作法,他是已產生script;底下稍編修原文(因為太亂了,第一眼還真花):
另外,這範例是在國外;所以沒有中文.英文的需求考量,但..用在台灣就不行了;底下已經過調整符合中英文!!
(1)補左邊字串函數 fnPadLeft
ALTER FUNCTION dbo.fnPadLeft
(
@PadChar char(1),
@PadToLen int,
@BaseString varchar(100)
)
RETURNS varchar(1000)
AS
BEGIN

DECLARE @Padded varchar(1000)
DECLARE @BaseLen int
SET @BaseLen = datalength(@BaseString)
IF @BaseLen >= @PadToLen
BEGIN
SET @Padded = @BaseString
END
ELSE
BEGIN
SET @Padded = REPLICATE(@PadChar, @PadToLen - @BaseLen) + @BaseString
END
RETURN @Padded

END

(2)補右邊字串函數 fnPadRight
ALTER FUNCTION dbo.fnPadRight
(
@PadChar char(1),
@PadToLen int,
@BaseString varchar(100)
)
RETURNS varchar(1000)
AS
BEGIN

DECLARE @Padded varchar(1000)
DECLARE @BaseLen int
SET @BaseLen = datalength(@BaseString)
IF @BaseLen >= @PadToLen
BEGIN
SET @Padded = @BaseString
END
ELSE
BEGIN
SET @Padded = @BaseString + REPLICATE(@PadChar, @PadToLen - @BaseLen)
END

RETURN @Padded
END

utf-8 轉 big5

Function encode_utf8big5(ByVal detail)
'utf-8 轉 big5

Dim strUtf8 As Byte() = System.Text.Encoding.Unicode.GetBytes(detail)
Dim strBig5 As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.Default, strUtf8)
encode_utf8big5 = System.Text.Encoding.Default.GetString(strBig5)

End Function