2016年1月21日 星期四

多筆相同鍵值的欄位內容合併加陣列欄位查詢

-- 建立模擬資料
if exists(select * from tempdb.dbo.sysobjects where id = object_id('tempdb.dbo.#temp') )
drop table #temp

create table #temp (
sno varchar(10), --學號
class varchar(10), --科目
num int --分數
)
insert into #temp
select '001', '國', 80
union select '001', '英', 90
union select '001', '數', 55
union select '002', '國', 50
union select '002', '英', 60
union select '002', '數', 75
union select '003', '英', 98
union select '003', '數', 59
union select '004', '國', 88
union select '004', '英', 98
union select '005', '國', 58
union select '005', '數', 69
union select '006', '國', 78
union select '006', '英', 84
union select '006', '數', 59

print '資料表列'
select * from #temp

-- 多筆相同鍵值的欄位內容合併 
select a.sno, (
stuff((
select ','+class+' '+convert(varchar(10),num )
from #temp b
where a.sno=b.sno
for xml path('')
), 1,1,'')
) class
from #temp a
group by a.sno

select distinct a.sno, (
stuff((
select ','+class+' '+convert(varchar(10),num )
from #temp b
where a.sno=b.sno
for xml path('')
), 1,1,'')
) class
from #temp a

-- 陣列欄位查詢方式
if exists(select * from tempdb.dbo.sysobjects where id = object_id('tempdb.dbo.#t2') )
drop table #t2

create table #t2 (
pName varchar(10), --條件名稱
numAry varchar(10) --分數條件陣列
)
insert into #t2
select 'p1', '80'
union select 'p2', '80,90,100'
union select 'p3', '50,58,98'

select * from #t2
select * from #temp

-- 測試查詢 使用 charindex <<正常>> ; 但 changeClass 只能為 1 筆, 否則異常
select * from #temp t
where charindex(cast(num as varchar),(select top 1 numAry from #t2 ))>0

-- 測試查詢 使用 charindex + for xml path('') <<正常>> ; 但 changeClass 可以為多筆
select * from #temp t
where charindex(cast(num as varchar),(
stuff((
select ','+numAry
from #t2
where 1=1 -- 可設定條件
and pName in ('p3')
for xml path('')
), 1,1,'')
))>0

/*
-- 查詢結果
sno class num
002 50
003 98
004 98
005 58

*/

2014年4月21日 星期一

ASP如何載入utf-8格式的文件到字串

參考網址:http://www.lslnet.com/linux/f/docs1/i28/big5225614.htm






使用檔案:
1. sample01.html 要載入的 utf-8 檔案,內容如下:






測試中文
test123 Table


2. out_file.asp 要執行的檔案 使用 utf-8 檔案,內容如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Function LoadFile(ByVal File)
Dim objStream
On Error Resume Next
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Mode = 3
.Open
.LoadFromFile Server.MapPath(File)
If Err.Number<>0 Then
Response.Write "出錯,文件不存在"
Err.Clear
Response.End
End If
.Charset = "utf-8"
.Position = 2
LoadFile = .ReadText
.Close
End With
Set objStream = Nothing
End Function
%>






<%=LoadFile("./sample01.html")%>
<%=replace(LoadFile("./sample01.html"),"123","一二三")%><-- font="">

我的魚菜共生雜記(一)

我的魚菜共生雜記(一)
2014-04-10(四)
不小心在youtube上看到 魚菜共生 的片子,感覺非常的有趣。

2014-04-14(一)
露天找到一個「太陽能水族套組」的東西感覺好像蠻節能環保的,噴泉 太陽能板4W+無刷抽水馬達(5-12V)+6V4A電瓶 邊用邊充,共1300

2014-04-15(二)
太陽能組一直沒時間看它 日照工作 先試做 「虹吸排水系統」,水族套組沒有附出水管,在水電材料行找到到可以直接接到出水口的水管,只好到水族管買打氣泡用的軟管在接,可以順利接上;搞了一晚上沒有成功做出排水系統。原因是用了太大的罩子吸不到水,但倒是找到了一個可以試做上部的種菜盆和一個很久都沒在用的金魚缸(圓的)。

2014-04-16(三)
「虹吸排水系統」晚上繼續實驗,換了較小的罩子,又做了一個排水管,發現進水量會造成系統是否可以正常排水的問題,水族套組+打氣軟管 出水量實在太小了,實在不知是不是哪小電瓶不夠力還是這「太陽能水族套組」實在打不出什麼水來!!(發現這套組附的馬達有一些套件可以做小噴泉用的,剛好可以拿去找有沒大一點的管子可以用)

2014-04-17(四)
中午 跑了一趟園藝店,找「發泡煉石」,店員說現在沒有,明晚會進貨。
晚上 又跑了一趟水電材料行合了一下馬達配件套管,結果最小的冷氣機排水管可以接上馬上買了10尺(1尺3元,共30元)回家實驗。水量有加大許多,但還是不夠大,無法正常排水。

2014-04-18(五)
晚上 跑了一趟園藝店買到了發泡煉石,順手買了一包青梗白菜的種子。
煉石買好,又跑了一趟水電材料行,主要是要買接在排水下部的彎頭,結果沒有4分的,最小只有6分的,只好買了 6分彎頭2個+6分三通1個。
今天 的實驗不小心把 哪可愛的玻璃魚缸給弄破了,主要是因為要將水倒出,但只單手抓缸口來倒,缸裡的水太重,就一把給弄破了。(以後拿這類易碎的東西最好還是雙手托底拿安全點)

2014-04-19(六)
昨天將玻璃缸給弄破了,只好拿了個小塑料盆來頂上。(一整個質感掉了很多 >"<)
「虹吸排水系統」的進水實在還是太小了,總是沒法正常的做排放。最後想到馬桶的排水原理(應該也算是虹吸原理),就用哪冷氣排水管試做了一下,總算可以正常的排水了。
發泡煉石就定位了,暫時先用塑料小水杯裝,一杯先投一顆菜種籽看看情況。
PS1. 無法正常排水的問題,主要是進水太小造成排水時無法產生水封將水從上盆內吸出,以致造成無法正常排水的問題。
PS2.馬桶的排水原理會有水封的問題,就是會把 上罩給撐起。
PS3.這煉石還蠻用浮的。不知用久了會不會沉下去 = =a

2014-04-20(日)
早上把電瓶的電用完了沒法再做排水實驗了 >"<。家中找了一個9V的DC變壓器(電錶量有10.3V 這是我可以找到 最接近6V的了,一般應用7.5V的電壓來充6V的電)
中午跑了一趟電子材料行,買DC變壓器要用來對接的端子頭,要拿來自己做線。(太久沒拿鉻鐵了銲了半天才銲好)
小魚也順路買回來了 朱文錦 1兩20元(差不多20-30尾),另在 10元店買了 一罐魚飼料 45元。

本篇完。(改天來補照片)



2011年8月29日 星期一

html轉xls中的數字問題處理

這是一個長久以來的問題,就是使用html轉成xls表,原本補0的資料在欄位內會被自動吃掉。
就是原本的資料是 "00123" 轉出後資料變成 "123"了。

在google大神的幫助下,找到了 http://blog.xuite.net/alenliu/test/27513469 網誌介紹了一些方法終於得以不再讓資料亂變了。

使用的方法即為 使用 style處理語法如下:





這是最簡單的方法,在內設好,轉出的表格內容資料就不會再亂變了。

2011年6月16日 星期四

如果想要在showModalDialog拷貝文字的話

我爬過文,有人建議將window.showModalDialog()改為用window.open(),使用起來跟我需求有出入,所以最後沒有用。因為window.open()在javascript內會直接跑到下段程式去,而我是要回傳資料的,所以就沒用他了。

一開始我用了document.all["t1"].contentEditable = "True",讓內容變為設計模式,但這不僅可以拷貝,還可以修改,默認值為"inherit"。但會造成物件內的文字可以被任意的更動或刪除。於是我加了個判斷輸入的函數,如下:


/*屏蔽Backspace,輸入內容不屏蔽*/
function document.onkeydown()
{
//限制 text, textarea 以外物件不回應的鍵盤操作
if(document.activeElement.type == "text" document.activeElement.type == "textarea")
{
if ((event.keyCode==116) //屏蔽 F5 刷新鍵
(event.ctrlKey && event.keyCode==82))//Ctrl + R
{
event.keyCode=0;
event.returnValue=false;
}
}
else
{
if (
(event.keyCode==8) //屏蔽退格刪除鍵
(event.keyCode==46) //屏蔽delete刪除鍵
(event.keyCode==116) //屏蔽 F5 刷新鍵
(event.ctrlKey && event.keyCode==82)){ //Ctrl + R
event.keyCode=0;
event.returnValue=false;
}
}
}

雖然解決了鍵盤輸入的問題,但滑鼠可以將文字任意拖動的問題卻依然存在。
最後只好改以 <textarea cols=60 rows=4 readonly >的方式來實現文字的拷貝。

2010年8月24日 星期二

ACCESS啟動設定問題

ACCESS啟動設定問題



參考網址: http://www.programmer-club.com.tw/ShowSameTitleN/access/598.html



請問我在ACCSEE啟動設定裡將工具列跟資料庫選項關掉
開啟時只有啟動表單
但是我想要修改程式碼
找不到選項可以將啟動選項打開
請問一下怎麼辦?

ans:
先壓住Shift鍵,再開啟access程式或mdb檔案
ps.如有要求輸入密碼,請在輸完密碼按[確認]前按住[Shift]鍵,直到開出正常的工具列及資料庫選項顯示。

2009年12月22日 星期二

javascript日期檢查

相關網址:JAVAScript中使用正則表達式檢測日期格式


<script type="text/javascript">
//彭嘉宏的日期格式檢查(使用正則式)
function dateVerify(date){
var reg = /^(\d{4})([\/,-])(\d{1,2})\2(\d{1,2})$/;
var r = date.match(reg);
if(r==null) return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate();
date=r[1]+r[2]+((r[3]-1)+1)+r[2]+((r[4]-1)+1);
return newStr==date;
}
//ChanPing的日期格式檢查(使用Date()判斷)
function dateVerify2(date){
var d= new Date(date.split("-").join("/"));
var r= date.split("-").join("/").split("/");
return d.getDate()==r[2]; //判斷日
}
</script>
<input type="text" name="t1" style="background-color:#FFFFFF;" value="2009-02-30" />
<input type=button value="判斷日期dateVerify()" style="color=blue; font-size=10pt;width=130pt" onclick="alert(this.value+' is '+dateVerify(t1.value))" >
<input type=button value="判斷日期dateVerify2()" style="color=blue; font-size=10pt;width=130pt" onclick="alert(this.value+' is '+dateVerify2(t1.value))" >