發表文章

目前顯示的是 5月, 2009的文章

記憶密碼

密碼型態的文字方塊要記憶密碼時,直接使用.Text屬性並無法顯示必須使用下面的方法 txtPwd.Attributes.Add(" value ", Request.Cookies["Member"]["Pwd"].ToString());

SQL 找出最高學歷問題

圖片
情境說明 在實際應用中,我們常面臨需要找出某個人的最高學歷、最後工作經驗等問題(如下圖),這些涉及到一個人對應多筆有先後順序的明細資料,你可能會常看到先撈出所有員工資料,然後在程式端進行迴圈的篩選,但若資料量過大,這種方式可能面臨效能問題,因此更好的解決方法是在資料過篩選完必要的結果後,再將其拋給程式處理。 這篇文章我要記錄一下兩個常用的寫法,假設我們有三張資料表 #TempEmployee(員工資料)、#TempEduType(學位類型)、#TempEduSchool(員工學歷),建立測試資料表可以參考本文最下方的語法。 我們常見的子查詢的寫法,但缺點是一次只能顯示一個欄位,若要同時顯示最高學歷和其學校名稱,則必須寫兩筆子查詢。 Select emp.*, ( Select Top 1 b.[Type] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [MaxType], ( Select Top 1 a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [SchoolName] From #TempEmployee emp 使用 Outer Apply(效果類似 Left Join) or Cross Apply(效果類似 Inner Join) 的方式,詳細可參考 SQL SERVER 2005 中 Apply的用法 。 Select * From #TempEmployee emp Outer Apply ( Select Top 1 b.[Type] as [MaxType], a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where em

使用NetBeans 將 MySQL 加入 套件中

圖片
先前講的要使用MySQL必須載入驅動,並且將執行檔加入Path,但要是要發佈到客戶端,每台要加入Path大概會瘋掉,下面就是一些加入 .jar 檔的步驟 (1)新增一個新的專案

CuteFtp 備份

1.找到sm.dat檔 位置:Documents and Settings\ username \Application Data\GlobalSCAPE\CuteFTP\x.x\sm.dat username:系統使用者名稱 x.x:CuteFtp版本 2.copy起來就是囉… 3.如果要還原,就用內建的匯入,或者,把sm.dat檔放到step 1的目錄即可。

Java 無法連接MySQL

1.到http://dev.mysql.com/downloads/connector/j/5.0.html下載connector。 2.解壓縮後,將mysql-connector-java-5.0.4-bin.jar複製到jre安裝目錄下的\lib\ext 例如:C:\Program Files\Java\jre1.5.0_09\lib\ext 3. set classpath=.;C:\Program Files\Java\jre1.5.0_09\lib\ext\mysql-connector-java-5.0.4-bin.jar 4.程式碼部分 String jdbc = "com.mysql.jdbc.Driver"; // 使用的 driver String url = "jdbc:mysql://localhost/資料庫名稱"; // 連結路徑 String user = "帳號"; String pass = "密碼"; Class.forName(jdbc); Connection con = DriverManager.getConnection(url,user,pass); 有件事要注意:電腦中同時有jdk及jre,set classpath及connector複製的路徑,當時設定jdk中的jre路徑, 仍沒辦法使用,改成jre才可使用。 本文引用 http://blog.yam.com/carl44/article/7640643

JSP 存取 MSSQL2000 資料庫

1.首先到微軟的網站下載 SQL Server 2000 Driver for JDBC Service Pack 3 在上個網頁,可以下載 mssqlserver.tar 及 setup.exe 其中一項。 .tar有二層的壓縮,所以要解壓二次。

SQL 列出所有重複的資料

圖片
情境說明 假設有一個員工的資料表 #Employee,其中有一個欄位 EmpName 記錄著員工的姓名,我們希望能夠查出在這張表內有哪些人的姓名是相同的,如下圖數據,我們期望可以找出 2 筆 Lawrence,有底下幾種常見的寫法。 若只是單純想找出,不重複的 EmpName,直接 Distinct 即可。 Select Distinct EmpName From #Employee 使用 Group By 來找出 EmpName 超過一筆以上的資料,並顯示實際的資料筆數。 Select EmpName, Count(EmpName) as RecordCount From #Employee Group By EmpName Having count(EmpName) > 1 查出單位內所有重複姓名的人完整資料表數據 Select * From #Employee Where EmpName in (Select EmpName From #Employee Group By EmpName Having count(EmpName) > 1 ) -- or Select * From #Employee main Where (Select Count(EmpName) From #Employee sub where main.EmpName = sub.EmpName ) >1 建立本文範例資料表 相關語法如下參考,使用完畢記得刪除不要的測試資料表喔。 -- 建立測試資料表 CREATE TABLE #Employee ( EmpNo varchar(10), EmpName nvarchar(20)) -- 建立測試資料 Insert Into #Employee values('001', N'Lawrence') Insert Into #Employee values('002', N'Olivier') Insert Into #Employee values('003', N'Lawrence') Insert Into #Employee values('004', N'Lawrence

GridView History.back()後分頁跑回第一頁

資料控制項對於返回上一頁後都有無法紀錄先前的分頁頁數的問題,本來想要放棄改用ASP的方式自己畫表格,但是這樣就浪費的ASP.NET所提供控制項的目的了,找了好久終於在網路上看到人家的解決方式,解決後又有一些小問題,在IE6.0的時候會出現一個DIV來記錄當前分頁,於是再上方出現一個空格,在這裡運用CSS來處理掉即可。

讀取硬碟資訊(調用API)

雖然使用WMI來讀取系統軟硬體各項資訊非常方便,但不知何故,使用WMI讀取Windows2000做業系統的硬碟資訊就是會出錯,因此必須改成調用API的方式來實作。 呼叫方式 HardDiskInfo hdd = AtapiDevice.GetHddInfo(0); // 第一個硬碟 MessageBox.Show("Module Number:" + hdd.ModuleNumber); MessageBox.Show("Serial Number:" + hdd.SerialNumber); MessageBox.Show("Firmware:" + hdd.Firmware); MessageBox.Show("Capacity:" + hdd.Capacity + "M"); 參考網址 如何得到硬盤序列號[C#] 本文範例 : HardInfo.rar

使用泛型處理常式(ashx)存取Session

要寫入Session必須先加入介面IRequiresSessionState,並且必須引用命名空間 using System.Web.SessionState; public class File_WebHandler : IHttpHandler, IRequiresSessionState  //IReadOnlySessionState 只可讀取Session { public void ProcessRequest(HttpContext context) { context.Session["Write"] = "寫入Session"; //若沒有加入介面將會發生錯誤 } }

在IE中嵌入WinformControl時安全性問題

圖片
使用Winform控制項來撰寫並嵌入在網頁中,用法就像之前的ActiveX一樣,但有幾點要注意,如果要使用有安全性的方法,如IO,如果沒有開啟 NET的權限的話,將會跳出警告視窗,此方法最大的缺點在於,使用者一定要安裝封裝檔才可正常使用,且只有IE瀏覽器有作用

JavaScript 跳出新視窗在螢幕正中間的方法

使用showModalDialog開啟新視窗,通常必須指定距離左邊和上面高度來設定初始位置,但若遇到不同解析度的瀏覽器的話,位置通常會跑掉,因此就必須使用JavaScript的window.screen來達成,以下面紅色字體部分來解釋

透過jQuery處理表單驗證

想要對表單進行驗證只需要使用jQuery減少許多語法,使用前必須先加入jQuery

Firefox內使用style.display="block"無作用的問題

IE顯示隱藏區的Javascript語法為document.all.object.style.display="block"但此用法在Firefox並不適用 function exeInsert() { //Firefox使用空白顯示有別於IE的block document.getElementById("divInsert").style.display=""; document.getElementById("divEdit").style.display="none"; document.getElementById("txtInsert").value = ""; document.getElementById("txtSearch").value = ""; //document.all.divInsert.style.display="block"; //document.all.divEdit.style.display="none"; }