測試文字功能,小工具,標題
記錄很重要,不然會浪費很多時間在找以前的記憶
一個人的氣度,決定他未來的高度。
2013年12月24日 星期二
2013年12月18日 星期三
Format用法詳解
Format用法詳解 Access
Format用法詳解
Format$(Now,"EEOA")
只要這麽一句~~~~~就可以得到“ 二○○六年五月二十六日”
虧我還得寫得那麽多。。。
所以對FORMAT函數進行研究,參照HELP文件,把一些用法寫了下來。
現拿給大家共享。。。
---------------------------------
Format[$] ( expr [ , fmt ] )
format 返回變體型
format$ 強制返回為文本
--------------------------------
數字類型的格式化
--------------------------------
固定格式參數:
General Number 普通數字,如可以用來去掉千位分隔號
format$("100,123.12","General Number") 返回值 100123.12
Currency 貨幣類型,可添加千位分隔號和貨幣符號
format$("100123.12","Currency") 返回值 ¥100,123.12
Fixed 格式為帶兩位小數的數字
format$("100123","Fixed") 返回值 100123.00
Standard 標準,即帶千位分隔號和兩位小數
format$("100123","Standard") 返回值 100,123.00
Percent 百分數
format$("100123","Percent") 返回值 10012300.00%
Scientific 科學記數法
format$("100123","Scientific") 返回值 1.00E+05
Yes/No 當值為0時返回 NO,否則返回 YES
format$("100123","Yes/No") 返回值 Yes
True/False 當值為0時返回 False,否則返回 True
format$("100123","True/False") 返回值 True
On/Off 當值為0時返回 Off,否則返回 On
format$("100123","Yes/No") 返回值 On
自定義格式參數
"" 不進行格式化 返回值 原值
0 占位格式化,不足補0
format$("100123","0000000") 返回值 0100123
# 占位格式化,不足時不補0
format$("100123","#######") 返回值 100123
. 強制顯示小數點
format$("100123.12",".000") 返回值 100123.120
% 轉化為百分數,一個%代表乘以100
format$("10.23","0.00%") 返回值 1023.00%
format$("10.23","0.00%%") 返回值 102300.00%%
, 以千為單位格化
format$("10.23",",") 返回值 0
format$("10010.23",",") 返回值 10
format$("10010.23",",0.00") 返回值 10.01
E- E+ e- e+ 顯示為科學記數(要註意格式語句,否則會和E的其它含義相混)
Format$(12.5,"0.00E+00") 返回值 1.25E+01
$ 強制顯示貨幣符號
format$("10.23","{threadcontent}.00") 返回值 ¥10.23
- + ( ) space 按位置顯示本樣
Format$("1234.56","-(0.00)") 返回值 -(1234.56)
\ 轉義符,顯示出特殊符號
Format$("1234.56","\#.00") 返回值 #1234.56
"ABC" 顯示雙引號 (" ") 之內的字符串。如在代碼中想在 format 中包含一個字符串,必須用 Chr(34) 將文本括起來(34 為雙引號 ("))
Format$(123.45,"TTT") 返回值 TTT
註:當雙引號中的文本包含特殊的參數符號如e,要使用轉義符"\",否則會按e的作用顯示
; 類似多目運算符的作用。
當共有 四 部分時,
當大於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
當等於0時按第三部分進行格式化,
當為null值時,按第四部分進行格式化。如:
Format$(0,"0.00;負數;零;空") 返回值 零
當共有 三 部分時,
當大於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
當等於0時按第三部分進行格式化,如:
Format$(-10,"0.00;ttt;零") 返回值 ttt
當共有 兩 部分時,
當大於或等於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
Format$(-123,"0.00;abc") 返回值 abc
Format$(123,"0.00;abc") 返回值 123.00
當共有 一 部分時,按分號左邊進行格式化
---------------------------------
日期類型的格式化
---------------------------------
註意:在中文操作系統中,系統自動將月份輸為如:五月,而非 May
固定格式參數
General Date 基本類型
只要這麽一句~~~~~就可以得到“ 二○○六年五月二十六日”
虧我還得寫得那麽多。。。
所以對FORMAT函數進行研究,參照HELP文件,把一些用法寫了下來。
現拿給大家共享。。。
---------------------------------
Format[$] ( expr [ , fmt ] )
format 返回變體型
format$ 強制返回為文本
--------------------------------
數字類型的格式化
--------------------------------
固定格式參數:
General Number 普通數字,如可以用來去掉千位分隔號
format$("100,123.12","General Number") 返回值 100123.12
Currency 貨幣類型,可添加千位分隔號和貨幣符號
format$("100123.12","Currency") 返回值 ¥100,123.12
Fixed 格式為帶兩位小數的數字
format$("100123","Fixed") 返回值 100123.00
Standard 標準,即帶千位分隔號和兩位小數
format$("100123","Standard") 返回值 100,123.00
Percent 百分數
format$("100123","Percent") 返回值 10012300.00%
Scientific 科學記數法
format$("100123","Scientific") 返回值 1.00E+05
Yes/No 當值為0時返回 NO,否則返回 YES
format$("100123","Yes/No") 返回值 Yes
True/False 當值為0時返回 False,否則返回 True
format$("100123","True/False") 返回值 True
On/Off 當值為0時返回 Off,否則返回 On
format$("100123","Yes/No") 返回值 On
自定義格式參數
"" 不進行格式化 返回值 原值
0 占位格式化,不足補0
format$("100123","0000000") 返回值 0100123
# 占位格式化,不足時不補0
format$("100123","#######") 返回值 100123
. 強制顯示小數點
format$("100123.12",".000") 返回值 100123.120
% 轉化為百分數,一個%代表乘以100
format$("10.23","0.00%") 返回值 1023.00%
format$("10.23","0.00%%") 返回值 102300.00%%
, 以千為單位格化
format$("10.23",",") 返回值 0
format$("10010.23",",") 返回值 10
format$("10010.23",",0.00") 返回值 10.01
E- E+ e- e+ 顯示為科學記數(要註意格式語句,否則會和E的其它含義相混)
Format$(12.5,"0.00E+00") 返回值 1.25E+01
$ 強制顯示貨幣符號
format$("10.23","{threadcontent}.00") 返回值 ¥10.23
- + ( ) space 按位置顯示本樣
Format$("1234.56","-(0.00)") 返回值 -(1234.56)
\ 轉義符,顯示出特殊符號
Format$("1234.56","\#.00") 返回值 #1234.56
"ABC" 顯示雙引號 (" ") 之內的字符串。如在代碼中想在 format 中包含一個字符串,必須用 Chr(34) 將文本括起來(34 為雙引號 ("))
Format$(123.45,"TTT") 返回值 TTT
註:當雙引號中的文本包含特殊的參數符號如e,要使用轉義符"\",否則會按e的作用顯示
; 類似多目運算符的作用。
當共有 四 部分時,
當大於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
當等於0時按第三部分進行格式化,
當為null值時,按第四部分進行格式化。如:
Format$(0,"0.00;負數;零;空") 返回值 零
當共有 三 部分時,
當大於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
當等於0時按第三部分進行格式化,如:
Format$(-10,"0.00;ttt;零") 返回值 ttt
當共有 兩 部分時,
當大於或等於0時,按第一部分進行格式化,
當小於0時按第二部分進行格式化,
Format$(-123,"0.00;abc") 返回值 abc
Format$(123,"0.00;abc") 返回值 123.00
當共有 一 部分時,按分號左邊進行格式化
---------------------------------
日期類型的格式化
---------------------------------
註意:在中文操作系統中,系統自動將月份輸為如:五月,而非 May
固定格式參數
General Date 基本類型
Format(Date,"YYYY年MM月DD日")
'M 個位月只顯示一位,
'MM 顯示兩位月,
'MMM顯示英文月簡稱,
'MMMM顯示英文全名
'M 個位月只顯示一位,
'MM 顯示兩位月,
'MMM顯示英文月簡稱,
'MMMM顯示英文全名
Format$(Now,"General Date") 返回值 2006-5-25 14:56:15
Long Date 操作系統定義的長日期
Format$(Now,"Long Date") 返回值 2006年5月25日
Medium Date 中日期(yy/mmm/dd)
Format$(Now,"Medium Date") 返回值 06-5月-25
Short Date 操作系統定義的短日期
Format$(Now,"Short Date") 返回值 2006-5-25
Long Time 操作系統定義的長時間
Format$(Now,"Long Time") 返回值 15:06:36
Medium Time 帶AM/PM的12小時制,不帶秒
Format$(Now,"Medium Time") 返回值 03:08 PM
Short Time 24時制的時間,不帶秒
Format$(Now,"Short Time") 返回值 15:08
自定義格式參數
: 用來標識時間字符的間隔
Format$(Time(),"hh:nn") 返回值 15:25
/ 用來標識日期字符的間隔
Format$(now,"yyyy/mm/dd") 返回值 2006-05-25
c 格式化為國標的日期和時間
Format$(Now,"c") 返回值 2006-5-25 14:56:15
y 一年中的第幾天
Format$(Now,"y") 返回值 145
d 一個月中的第幾天(1-366)
Format$(Now,"d") 返回值 25
dd 當小於10時前面帶0的天數(01-31)
Format$("2006-1-7","dd") 返回值 07
ddd 周幾
Format$(Now,"ddd") 返回值 周四
dddd 星期幾
Format$(Now,"dddd") 返回值 星期四
ddddd 顯示標準日期
Format$(Now,"ddddd") 返回值 2006-05-25
dddddd 長日期
Format$(Now,"dddddd") 返回值 2006年5月25日
w 一個星期中的第幾天
Format$(Now,"w") 返回值 5
ww 一年中的第幾周
Format$(Now,"ww") 返回值 21
m 月數(註:當用於時間時,也可以表時為分鐘)
Format$(Now,"m") 返回值 5
Format$(Now,"h:m") 返回值 16:11
mm 當小於10時前面帶0的月數(註:當用於時間時,也可以表時為帶0的分鐘)
Format$(Now,"m") 返回值 05
Format$(Now,"hh:mm") 返回值 16:09
mmm 月份
Format$(Now,"mmm") 返回值 五月
q 一年中的第幾季(1-4)
Format$(Now,"q") 返回值 2
yy 兩位數的年份(00-99)
Format$(Now,"yy") 返回值 06
yyyy 四位數的年份(0100-9999)
Format$(Now,"yyyy") 返回值 2006
h 一天中的第N小時(0-23)
Format$(Now,"h") 返回值 16
hh 當小於10時帶0的小時數(00-23)
Format$("7:30:28","hh") 返回值 07
n 一小時的分鐘數(0-59)
Format$("7:30:28","n") 返回值 30
nn 當小於10時帶0的分鐘數(00-59)
Format$("7:3:28","n") 返回值 03
s 一分鐘中的秒數(0-59)
Format$("7:30:8","s") 返回值 8
ss 當小於10時帶0的分鐘數(00-59)
Format$("7:3:8","ss") 返回值 08
ttttt 標準時間,小時數當小於10時不帶0,與h:mm:ss相同
Format$("7:3:28","ttttt") 返回值 7:03:28
AM/PM 顯示當前為AM或為PM
Format$(Now,"AM/PM") 返回值 PM
A/P 顯示當前為A或為P
Format$(Now,"A/P") 返回值 P
AMPM 對0至2359的數值進行判斷是AM還是PM,可以看作是同等於對00:00至23:59的數字進行判斷,如1000可以看作是10:00。
Format$(1000,"AMPM") 返回值 AM
聯合格式化
m/d/yy Format$(Now,"m/d/yy") 返回值 5-25-06
d-mmm-yy Format$(Now,"d-mmm-yy") 返回值 25-5月-06
d-mmmm Format$(Now,"d-mmmm") 返回值 25-五月
mmmm-yy Format$(Now,"mmmm-yy") 返回值 五月-06
hh:mm AM/PM Format$(Now,"hh:mm AM/PM") 返回值 04:50 PM
h:mm:ss a/p Format$(Now,"h:mm:ss a/p") 返回值 4:51:38 p
h:mm Format$(Now,"h:mm") 返回值 16:51
h:mm:ss Format$(Now,"h:mm:ss") 返回值 16:51:38
m/d/yy h:mm Format$(Now,"m/d/yy h:mm") 返回值 5-25-06 16:54
----------------------------------
文本類型的格式化
----------------------------------
; 當兩部分時,則第一部分為非空格式化,第二部分為null值或空值的格式化表達式
@ 匹配位置插入格式化文本,占位位置不存在時,顯示空白(空字符串)
只有一個@符號時,是在最後面加上格式化文本
Format$("CHIN","@a") 返回值 CHINa
有多個@占位符,是按從右至左匹配,並在相應的位置上顯示格式化文本
Format$("CHIN","@a@@") 返回值 CHaIN
當與 ! 配合時,則變為從左至右匹配
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN
當占位符比原文本字符串多時,剛在相應位置上添加空格
Format$("C","@@a@") 返回值 空白空白aC
& 字符占位符。除在當占位位置不存在時,不顯示外,其余均與@相同
當占位符比原文本字符串多時,剛在相應位置上添加空格
Format$("C","&&a&") 返回值 aC
< 強制小寫。將所有字符以小寫格式顯示。
Format$("I love you","<") 返回值 i love you
> 強制大寫。將所有字符以大寫格式顯示。
Format$("I love you",">") 返回值 I LOVE YOU
! 強制由左而右填充字符占位符。缺省值是由右而左填充字符占位符。
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN
----------------------------------------
強制使用中文格式的日期時間
----------------------------------------
aaaa 星期
Format$(Now,"aaaa") 返回值 星期五
O 中文月份
Format$(Now,"O") 返回值 五月
o 單字節月份
Format$(Now,"o") 返回值 5月
A 中文日期
Format$(Now,"A") 返回值 二十六日
a 單字節日期
Format$(Now,"a") 返回值 26日
E 短中文年份
Format$(Now,"E") 返回值 六年
e 單單字節年份
Format$(Now,"e") 返回值 6年
EE 中文年份
Format$(Now,"EE") 返回值 二○○六年
ee 單字節年份
Format$(Now,"ee") 返回值 2006年
Long Date 操作系統定義的長日期
Format$(Now,"Long Date") 返回值 2006年5月25日
Medium Date 中日期(yy/mmm/dd)
Format$(Now,"Medium Date") 返回值 06-5月-25
Short Date 操作系統定義的短日期
Format$(Now,"Short Date") 返回值 2006-5-25
Long Time 操作系統定義的長時間
Format$(Now,"Long Time") 返回值 15:06:36
Medium Time 帶AM/PM的12小時制,不帶秒
Format$(Now,"Medium Time") 返回值 03:08 PM
Short Time 24時制的時間,不帶秒
Format$(Now,"Short Time") 返回值 15:08
自定義格式參數
: 用來標識時間字符的間隔
Format$(Time(),"hh:nn") 返回值 15:25
/ 用來標識日期字符的間隔
Format$(now,"yyyy/mm/dd") 返回值 2006-05-25
c 格式化為國標的日期和時間
Format$(Now,"c") 返回值 2006-5-25 14:56:15
y 一年中的第幾天
Format$(Now,"y") 返回值 145
d 一個月中的第幾天(1-366)
Format$(Now,"d") 返回值 25
dd 當小於10時前面帶0的天數(01-31)
Format$("2006-1-7","dd") 返回值 07
ddd 周幾
Format$(Now,"ddd") 返回值 周四
dddd 星期幾
Format$(Now,"dddd") 返回值 星期四
ddddd 顯示標準日期
Format$(Now,"ddddd") 返回值 2006-05-25
dddddd 長日期
Format$(Now,"dddddd") 返回值 2006年5月25日
w 一個星期中的第幾天
Format$(Now,"w") 返回值 5
ww 一年中的第幾周
Format$(Now,"ww") 返回值 21
m 月數(註:當用於時間時,也可以表時為分鐘)
Format$(Now,"m") 返回值 5
Format$(Now,"h:m") 返回值 16:11
mm 當小於10時前面帶0的月數(註:當用於時間時,也可以表時為帶0的分鐘)
Format$(Now,"m") 返回值 05
Format$(Now,"hh:mm") 返回值 16:09
mmm 月份
Format$(Now,"mmm") 返回值 五月
q 一年中的第幾季(1-4)
Format$(Now,"q") 返回值 2
yy 兩位數的年份(00-99)
Format$(Now,"yy") 返回值 06
yyyy 四位數的年份(0100-9999)
Format$(Now,"yyyy") 返回值 2006
h 一天中的第N小時(0-23)
Format$(Now,"h") 返回值 16
hh 當小於10時帶0的小時數(00-23)
Format$("7:30:28","hh") 返回值 07
n 一小時的分鐘數(0-59)
Format$("7:30:28","n") 返回值 30
nn 當小於10時帶0的分鐘數(00-59)
Format$("7:3:28","n") 返回值 03
s 一分鐘中的秒數(0-59)
Format$("7:30:8","s") 返回值 8
ss 當小於10時帶0的分鐘數(00-59)
Format$("7:3:8","ss") 返回值 08
ttttt 標準時間,小時數當小於10時不帶0,與h:mm:ss相同
Format$("7:3:28","ttttt") 返回值 7:03:28
AM/PM 顯示當前為AM或為PM
Format$(Now,"AM/PM") 返回值 PM
A/P 顯示當前為A或為P
Format$(Now,"A/P") 返回值 P
AMPM 對0至2359的數值進行判斷是AM還是PM,可以看作是同等於對00:00至23:59的數字進行判斷,如1000可以看作是10:00。
Format$(1000,"AMPM") 返回值 AM
聯合格式化
m/d/yy Format$(Now,"m/d/yy") 返回值 5-25-06
d-mmm-yy Format$(Now,"d-mmm-yy") 返回值 25-5月-06
d-mmmm Format$(Now,"d-mmmm") 返回值 25-五月
mmmm-yy Format$(Now,"mmmm-yy") 返回值 五月-06
hh:mm AM/PM Format$(Now,"hh:mm AM/PM") 返回值 04:50 PM
h:mm:ss a/p Format$(Now,"h:mm:ss a/p") 返回值 4:51:38 p
h:mm Format$(Now,"h:mm") 返回值 16:51
h:mm:ss Format$(Now,"h:mm:ss") 返回值 16:51:38
m/d/yy h:mm Format$(Now,"m/d/yy h:mm") 返回值 5-25-06 16:54
----------------------------------
文本類型的格式化
----------------------------------
; 當兩部分時,則第一部分為非空格式化,第二部分為null值或空值的格式化表達式
@ 匹配位置插入格式化文本,占位位置不存在時,顯示空白(空字符串)
只有一個@符號時,是在最後面加上格式化文本
Format$("CHIN","@a") 返回值 CHINa
有多個@占位符,是按從右至左匹配,並在相應的位置上顯示格式化文本
Format$("CHIN","@a@@") 返回值 CHaIN
當與 ! 配合時,則變為從左至右匹配
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN
當占位符比原文本字符串多時,剛在相應位置上添加空格
Format$("C","@@a@") 返回值 空白空白aC
& 字符占位符。除在當占位位置不存在時,不顯示外,其余均與@相同
當占位符比原文本字符串多時,剛在相應位置上添加空格
Format$("C","&&a&") 返回值 aC
< 強制小寫。將所有字符以小寫格式顯示。
Format$("I love you","<") 返回值 i love you
> 強制大寫。將所有字符以大寫格式顯示。
Format$("I love you",">") 返回值 I LOVE YOU
! 強制由左而右填充字符占位符。缺省值是由右而左填充字符占位符。
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN
----------------------------------------
強制使用中文格式的日期時間
----------------------------------------
aaaa 星期
Format$(Now,"aaaa") 返回值 星期五
O 中文月份
Format$(Now,"O") 返回值 五月
o 單字節月份
Format$(Now,"o") 返回值 5月
A 中文日期
Format$(Now,"A") 返回值 二十六日
a 單字節日期
Format$(Now,"a") 返回值 26日
E 短中文年份
Format$(Now,"E") 返回值 六年
e 單單字節年份
Format$(Now,"e") 返回值 6年
EE 中文年份
Format$(Now,"EE") 返回值 二○○六年
ee 單字節年份
Format$(Now,"ee") 返回值 2006年
想不到中文日期的問題就這麽容易解決。
2013年11月5日 星期二
認識Char
認識Char/NChar/VarChar/NVarChar/Text/NText
其實這個的識別方式很簡單.Char/NChar/VarChar/NVarChar/Text/NText,這幾個資料型別或許有些人很熟,有些人只熟其中幾個,尤其是程式設計師,不碰DB Design的,如果有碰到,也可能依"慣例"的去設定資料型別,所以不難看見,有些Table資料型別很單調,看的到的型別不多,只要是存文字的,都是NVarChar,或許在瞭解後,可以做出更好的規劃.
帶Var的 : 代表就是非固定長度的型別,所以Var在存不固定長度的資料時,會較省空間,
帶N的 : 就是支援Unicode,但要注意,儲存的資料會大兩倍.
這樣就把Char全部講完,剩Text跟Char有什麼不同,Text的特性跟VarChar一樣,只是用來儲存大量的文字資料,但後來的VarChar也做了調整,也可以存大量的文字資料,所以Text在未來新版的DB會移除.
Char的長度為1~8000
VarChar的長度為1~8000,如果是VarChar(max)就是2^31-1 位元組,VarChar(max)只有SQL2005(含)以上才支援,SQL2000就沒有.
Text的長度為2^31-1,它的長度跟VarChar(max)是一樣的.
在MSDN的Char與VarChar的備註有點問題:
如果您有支援多國語言的網站,請考慮利用 Unicode nchar 或 nvarchar 資料類型,將字元轉換問題減到最少。如果您使用 char 或 varchar,我們建議您執行下列動作:
- 當資料行資料項目的大小不一致時,請使用 char。
- 當資料行資料項目的大小變化相當大時,請使用 varchar。
- 當資料行資料項目的大小變化相當大,且大小可能超出 8,000 位元組時,請使用 varchar(max)。
紅色的那一段,應該是”當資料行資料項目的大小一致時,請使用char。”
見英文版:
Use char when the sizes of the column data entries are consistent.
在底下有個Data Type Performance Tuning Tips for Microsoft SQL Server,這是個不錯的參考網站~
當然DB裡還有相當多的型別,這裡就只大概針對Char做了一點說明,其它就參考MSDN上的說明.
參考 :
2013年7月12日 星期五
使用GMAIL寄信
使用GMAIL寄信
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
public partial class sendGmail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("寄件者帳號@gmail.com", "寄件者顯示名稱"); //
msg.To.Add(new MailAddress("收件人的MAIL帳號@livemail.tw", "收件者顯示名稱")); //可寫迴圈多筆寄送
msg.Subject="主旨";
msg.IsBodyHtml=true;
string str ="<h2>內文1</h2>";
str += "<h3>內文2</h3>";
str += "<h3>543</h3>"; // html上的東西都能收,圖檔要注意路徑,http://網址/資料夾/檔名,也能放超連結
msg.Body = str;
// msg.Attachments //附件
// msg.CC //副本
SmtpClient clinet= new SmtpClient("smtp.gmail.com");
////可用asp.net組態,管理工具設定,下面可以不用自己寫,但要手動去 Web.config 加上 enableSsl = true;
NetworkCredential loginInfo = new NetworkCredential("gmail帳號@gmail.com", "gmail帳號的密碼");
clinet.UseDefaultCredentials = false;
clinet.Credentials = loginInfo;
clinet.EnableSsl = true;
//// clinet.Send("寄件者帳號@gmail.com", "收件者帳號@livemail.tw", "主旨", "內文"); //單筆方式
clinet.Send(msg);
}
}
////Web.config會加上這段,自己加上 enableSsl = "true"
<!--
</connectionStrings><system.net>
<mailSettings>
<smtp from="寄件者的顯示@gmail.com">
<network host="smtp.gmail.com" password="gamil密碼" userName="gmail帳號" enableSsl = "true"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
-->
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
public partial class sendGmail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("寄件者帳號@gmail.com", "寄件者顯示名稱"); //
msg.To.Add(new MailAddress("收件人的MAIL帳號@livemail.tw", "收件者顯示名稱")); //可寫迴圈多筆寄送
msg.Subject="主旨";
msg.IsBodyHtml=true;
string str ="<h2>內文1</h2>";
str += "<h3>內文2</h3>";
str += "<h3>543</h3>"; // html上的東西都能收,圖檔要注意路徑,http://網址/資料夾/檔名,也能放超連結
msg.Body = str;
// msg.Attachments //附件
// msg.CC //副本
SmtpClient clinet= new SmtpClient("smtp.gmail.com");
////可用asp.net組態,管理工具設定,下面可以不用自己寫,但要手動去 Web.config 加上 enableSsl = true;
NetworkCredential loginInfo = new NetworkCredential("gmail帳號@gmail.com", "gmail帳號的密碼");
clinet.UseDefaultCredentials = false;
clinet.Credentials = loginInfo;
clinet.EnableSsl = true;
//// clinet.Send("寄件者帳號@gmail.com", "收件者帳號@livemail.tw", "主旨", "內文"); //單筆方式
clinet.Send(msg);
}
}
////Web.config會加上這段,自己加上 enableSsl = "true"
<!--
</connectionStrings><system.net>
<mailSettings>
<smtp from="寄件者的顯示@gmail.com">
<network host="smtp.gmail.com" password="gamil密碼" userName="gmail帳號" enableSsl = "true"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
-->
2013年7月9日 星期二
Linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class M4_linqEnt : System.Web.UI.Page
{
NorthwindModel.NorthwindEntities northwindEntitie = new NorthwindModel.NorthwindEntities();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
show();
}
}
protected void show()
{
var _shippers = from s in northwindEntitie.Shippers
select s;
foreach (var s in _shippers)
{
Response.Write(s.ShipperID + " , " + s.CompanyName + " , "+s.Phone + "<br>");
}
}
protected void btnadd_Click(object sender, EventArgs e)
{
NorthwindModel.Shipper _shipper = new NorthwindModel.Shipper(); //新增,要建立一個新的
_shipper.CompanyName = "123123";
_shipper.Phone = "0202020202";
northwindEntitie.Shippers.AddObject(_shipper); //新增add
northwindEntitie.SaveChanges();
show();
}
protected void btnup_Click(object sender, EventArgs e)
{
int txtb1 = int.Parse(TextBox1.Text);
NorthwindModel.Shipper _shipper = (from s in northwindEntitie.Shippers //修改,要先查詢出資料
where s.ShipperID == txtb1
select s).Single();
_shipper.CompanyName = "111111";
_shipper.Phone = "0202-0202";
northwindEntitie.SaveChanges(); //修改直接存檔
show();
}
protected void btndel_Click(object sender, EventArgs e)
{
int txtb1 = int.Parse(TextBox1.Text);
NorthwindModel.Shipper _shipper = (from s in northwindEntitie.Shippers // 刪除也要先查出資料
where s.ShipperID == txtb1
select s).Single();
northwindEntitie.Shippers.DeleteObject(_shipper); // 刪除DeleteObject
northwindEntitie.SaveChanges(); //存檔
show();
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class M4_linqEnt : System.Web.UI.Page
{
NorthwindModel.NorthwindEntities northwindEntitie = new NorthwindModel.NorthwindEntities();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
show();
}
}
protected void show()
{
var _shippers = from s in northwindEntitie.Shippers
select s;
foreach (var s in _shippers)
{
Response.Write(s.ShipperID + " , " + s.CompanyName + " , "+s.Phone + "<br>");
}
}
protected void btnadd_Click(object sender, EventArgs e)
{
NorthwindModel.Shipper _shipper = new NorthwindModel.Shipper(); //新增,要建立一個新的
_shipper.CompanyName = "123123";
_shipper.Phone = "0202020202";
northwindEntitie.Shippers.AddObject(_shipper); //新增add
northwindEntitie.SaveChanges();
show();
}
protected void btnup_Click(object sender, EventArgs e)
{
int txtb1 = int.Parse(TextBox1.Text);
NorthwindModel.Shipper _shipper = (from s in northwindEntitie.Shippers //修改,要先查詢出資料
where s.ShipperID == txtb1
select s).Single();
_shipper.CompanyName = "111111";
_shipper.Phone = "0202-0202";
northwindEntitie.SaveChanges(); //修改直接存檔
show();
}
protected void btndel_Click(object sender, EventArgs e)
{
int txtb1 = int.Parse(TextBox1.Text);
NorthwindModel.Shipper _shipper = (from s in northwindEntitie.Shippers // 刪除也要先查出資料
where s.ShipperID == txtb1
select s).Single();
northwindEntitie.Shippers.DeleteObject(_shipper); // 刪除DeleteObject
northwindEntitie.SaveChanges(); //存檔
show();
}
}
DataReader
private DataTable RunSqlString()
{
using (SqlConnection conn = new SqlConnection(textBox1.Text))
{
DataTable dt = null;
String strCmd = textBox2.Text;// "Select md_date,md_room from meeting_date where md_date=@md_date and md_room=@md_room ";
using (SqlCommand cmd = new SqlCommand(strCmd, conn))
{
//cmd.Parameters.AddWithValue("@md_date", strdate);
try
{
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
dt = new DataTable("tmp");
for (int i = 0; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i));
}
while (dr.Read())
{
DataRow drw = dt.NewRow();
for (int i = 0; i < dr.FieldCount; i++)
{
drw[i] = dr[i].ToString();
}
dt.Rows.Add(drw);
}
}
else
{
MessageBox.Show("沒有資料!!!");
}
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
throw;
} //要先開啟連線
finally
{
conn.Close();
}
}
return dt;
}
}//結尾
=======================================================================
protected bool check_meetingroom_pk(string strdate ,string strroom ) {
bool b = false;
//步驟一給予適當的名稱空間namespace using System.Data.SqlClient;
//步驟二建立連線物件
String strConn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
using (SqlConnection conn = new SqlConnection(strConn))
{
//步驟三建立Command物件讀取資料庫的資料
String strCmd = "Select md_date,md_room from meeting_date where md_date=@md_date and md_room=@md_room ";
using (SqlCommand cmd = new SqlCommand(strCmd, conn))
{
cmd.Parameters.AddWithValue("@md_date", strdate);
cmd.Parameters.AddWithValue("@md_room", strroom);
//步驟四建立DataReader物件處理讀出來的資料
//透過Command物件所提供的ExecuteReader的方法來產生Command
//要先開啟連線
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
//步驟五在瀏覽器上顯示資料
//讀取資料之前要先呼叫read()的方法
while (dr.Read())
{
b = true; // dr[0].ToString();
}
conn.Close();
}
}
return b;
}
DataAdapter
String strConn = "data source=.;user id=aa;password=aa;initial Catalog=northwind";
using (SqlConnection conn = new SqlConnection(strConn))
{
String strCmd = "Select ProductID,ProductName from Products where categoryID=@categoryID";
using (SqlDataAdapter da = new SqlDataAdapter(strCmd, conn))
{
da.SelectCommand.Parameters.AddWithValue("@categoryID", 1);
DataSet ds = new DataSet();
da.Fill(ds, "dsProducts");
////新增,刪除,修改才要用
//SqlCommandBuilder builder = new SqlCommandBuilder(da);
////新增
//builder.GetInsertCommand();
//DataTable productsTable = ds.Tables["dsProducts"];//修改會用這這行
//DataRow newRow = productsTable.NewRow();
//newRow["ProductName"] = "IP5S";
//newRow["ProductID"] = "1";
//productsTable.Rows.Add(newRow);
////修改
//builder.GetUpdateCommand();
//productsTable.Rows[1]["ProductName"] = "KEVIN";
////刪除
//builder.GetDeleteCommand();
//ds.Tables["dsProducts"].Rows[12].Delete();
////最後更新
//da.Update(ds, "dsProducts"); //最後更新
//查詢用到的迴圈
foreach (DataRow theRow in ds.Tables["dsProducts"].Rows)
{
Response.Write(theRow[0].ToString() + "," + theRow["ProductName"].ToString() + "<br>");
}
2013年6月14日 星期五
bindingNavigator 調整高度(圖片大小)
bindingNavigator 調整高度(圖片大小)
先要把bindingNavigator的 AutoSize 屬性,改為 False
才能調整高度
圖片大小,要再調整 ImageScalingSize ,才能調整大小
先要把bindingNavigator的 AutoSize 屬性,改為 False
才能調整高度
圖片大小,要再調整 ImageScalingSize ,才能調整大小
2013年6月13日 星期四
清空form上所有textbox的值
清空form上所有textbox的值
// 如果textbox沒放在其他容器內的話
foreach (Control obj in this.Controls)
{
if (obj.GetType() == typeof(TextBox))
{
((TextBox)obj).Text = "";
}
}
//如果有放在其他容器內的話
private void button1_Click(object sender, EventArgs e)
{
foreach (Control obj in this.Controls)
{
test(obj);
}
}
private void test(Control controls)
{
if (controls.HasChildren)
{
foreach (Control control in controls.Controls)
{
test(control);
}
}
else
{
if (controls.GetType() == typeof(TextBox))
{
((TextBox)controls).Text = "";
}
}
}
有母版的,但不一定是最好的解法,有查到更好的再更新 2015-03-05
foreach (Control obj in this.Master.FindControl("ContentPlaceHolder1").Controls)
{
if (obj.GetType() == typeof(Label))
{
if (((Label)obj).ID.ToString().Substring(0,12) == "lblmeetingmsg")
{
((Label)obj).Text = "";
}
}
}
Master加了 Panel1就不行了,後來改成這樣就好了,好像用Panel1的方式比較好點
foreach (Control obj in this.Panel1.Controls)
{
if (obj.GetType() == typeof(Label))
{
if (((Label)obj).ID.ToString().Length > 12)
{
((Label)obj).Text = "";
}
}
if (obj.GetType() == typeof(CheckBox))
{
((CheckBox)obj).Checked = false;
}
}
前台 js
<script language="javascript" type="text/javascript">
function ClearAllTextBox() {
var obj = window.document.forms[0];
for (i = 0; i < obj.elements.length; i++) {
var elem = obj.elements[i];
if (elem) {
if (elem.type == "text") {
elem.value = "";
}
}
}
}
</script>
2013年6月6日 星期四
DataReader 傳資料給 DataGridView
DataReader 傳資料給 DataGridView
Dim cn As New SqlConnection("server=wk-db;database=northwind;user id=sa;password=sa") Dim cmd As New SqlCommand("select * from products", cn) cn.Open() Dim dt As New DataTable Dim dr As SqlDataReader = cmd.ExecuteReader For i As Integer = 0 To dr.FieldCount - 1 Dim col As New DataColumn(dr.GetName(i), dr.GetFieldType(i)) dt.Columns.Add(col) Next Do While dr.Read Dim r As DataRow = dt.NewRow For i As Integer = 0 To dr.FieldCount - 1 r(i) = dr(i) Next dt.Rows.Add(r) Loop DataGridView1.DataSource = dt
2013年5月23日 星期四
可使用 BUTTON 屬性 DialogResult 回傳值
可使用 BUTTON 屬性 DialogResult 回傳值
從另外一個視窗回傳
private void Button17_Click(object sender, EventArgs e)
{
FrmLab4_input fi = new FrmLab4_input();
if (fi.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//==========可能會key錯欄位
//DataRow dw = this.northwindDataSet.Products.NewRow();
////row不能自己new出來,要依附在某個table
//dw["ProductName"] = fi.textBox1.Text;
//dw["Discontinued"] = fi.checkBox1.Checked;
//this.northwindDataSet.Products.Rows.Add(dw);
//this.productsBindingSource.MoveLast();
//======================強型別
NorthwindDataSet.ProductsRow dw = this.northwindDataSet.Products.NewProductsRow();
dw.ProductName = fi.textBox1.Text; //直接能用
dw.Discontinued = fi.checkBox1.Checked;
this.northwindDataSet.Products.Rows.Add(dw);
this.productsBindingSource.MoveLast();
}
從另外一個視窗回傳
private void Button17_Click(object sender, EventArgs e)
{
FrmLab4_input fi = new FrmLab4_input();
if (fi.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//==========可能會key錯欄位
//DataRow dw = this.northwindDataSet.Products.NewRow();
////row不能自己new出來,要依附在某個table
//dw["ProductName"] = fi.textBox1.Text;
//dw["Discontinued"] = fi.checkBox1.Checked;
//this.northwindDataSet.Products.Rows.Add(dw);
//this.productsBindingSource.MoveLast();
//======================強型別
NorthwindDataSet.ProductsRow dw = this.northwindDataSet.Products.NewProductsRow();
dw.ProductName = fi.textBox1.Text; //直接能用
dw.Discontinued = fi.checkBox1.Checked;
this.northwindDataSet.Products.Rows.Add(dw);
this.productsBindingSource.MoveLast();
}
2013年5月18日 星期六
訂閱:
文章 (Atom)