2009年7月24日 星期五

如何抓SQL server 欄位名稱?

抓MSSQL server中某table 所有的欄位名稱
For I = 0 To rs.Fields.Count-1
Response.write rs(I).Name
Next

rs(I).Name 讀取第I欄的欄位名稱

2009年7月21日 星期二

MSSQL 如何取得 當月的總天數 或 日期相減天數

當月的總天數


DateTime.DaysInMonth(年, 月)
例如:
DateTime.DaysInMonth(2005, 2)的值是28

日期相減天數
SELECT DATEDIFF(day,'2011/05/01',GETDATE())

2009年7月15日 星期三

Google祭出優惠 新註冊客戶可免費打3600元關鍵字廣告

搜尋引擎龍頭Google 14日宣布,首度在台推出關鍵字廣告服務優惠方案,即日起至7月31日前,凡在官網註冊的新客戶,可享有15天免費投放金額新台幣3600元的關鍵字廣告優惠,但須於今年8月15日前使用完畢,逾期無效。

Google關鍵字廣告Google AdWords,即網友平常看到的Google右側廣告,當使用者輸入查詢關鍵字時,贊助該廣告關鍵字的廠商所屬的的廣告便會在查詢結果的右方出現。其計費方法並不是以曝光次數來計算, 而是以廣告被點選次數來收費,每個關鍵字依熱門程度而有不同的收費,廠商可就廣告預算事先設定上限。

一般來說,關鍵字廣告服務通常是受到大企業的青睞,Google AdWords在台灣的客戶也是如此,遍佈及於科技、線上遊戲、社群網站與傳統產業等。這項在台首度推出的「Google AdWords廣告優惠方案」,曾在今年4月也在澳洲、紐西蘭亮相,Google台灣區總經理簡立峰表示,希望能為佔台灣企業97%以上的中小企業提供具體的網路行銷優惠方案,提升品牌能見度及創造業務佳績。

Google提醒,此優惠只適用新註冊帳戶,不適用現有客戶。此優惠不得轉讓、出售或交換。每位廣告客戶只可申請優惠一次;新帳戶的帳單登記地址必須為台灣,海外用戶並不適用;如廣告客戶的廣告費用超出此試用優惠額,將要繳付多出的廣告費,如果不想繳付額外的款項,必須停止廣告。

我也有個朋友在「維思資訊」,有需要的朋友可以找他喔! - 電話:02-89904909#20 蔡小姐

2009年7月8日 星期三

利用ASP.NET AJAX的Timer讓GridView每隔一段時間做到自動換頁的功能

利用timer每隔一段時間,讓gridview自動跳頁並且更新gridview的內容
asp.net(c#) aspx檔案
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridviewAutoPage.aspx.cs"
Inherits="GridviewAutoPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>GridviewAutoPage</title>
<meta http-equiv="Page-Enter" content="blendTrans(duration=1)" />
<meta http-equiv="Page-Exit" content="blendTrans(duration=1)" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="1">
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
</div>
<asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick">
</asp:Timer>
</form>
</body>
</html>

aspx.cs檔案
using ...System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class GridviewAutoPage : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
LoadData();
}
}

protected void LoadData()
...{
this.GridView1.DataSource = new string[] ...{ "Dotblogs", "F6 Team", "puma" };
this.GridView1.DataBind();
}

protected void Timer1_Tick(object sender, EventArgs e)
...{
if (this.GridView1.PageCount > 1)
...{
if (this.GridView1.PageIndex == this.GridView1.PageCount - 1)
...{
this.GridView1.PageIndex = 0;
LoadData();
}
else
...{
this.GridView1.PageIndex = this.GridView1.PageIndex + 1;
LoadData();
}
}
}
}

ASP.NET動態產生meta資訊的應用,時間倒數10秒去另一網頁

一般轉址的寫法
<meta http-equiv="refresh" content="10; url=http://www.dotblogs.com.tw/puma/" />

要如何利用asp.net程式動態產生meta資訊呢,就是利用HtmlMeta這個類別,小弟寫一個範例介紹如何使用

asp.net(c#)

部分程式碼
        HtmlMeta meta = new HtmlMeta();
meta.Attributes.Add("http-equiv", "refresh");
meta.Content = "10; url=http://www.dotblogs.com.tw/puma/";
this.Header.Controls.Add(meta);

5秒轉址語法 (自動轉址)

Response.AddHeader("Refresh", "5; url=GridViewPage.aspx?page=" + page )

2009年7月6日 星期一

批次檔偵測硬碟容量後備份資料 (.Bat)

批次檔裡沒有偵測可用空間的指令
而且可用空間在每一次複製檔案進去之後也會變動
因此以下換成另一種做法
看看能不能達到你的目的

原理是利用每次執行DOS指令後回傳的狀態碼來判斷
如果ERRORLEVEL=0表示複製成功
如果ERRORLEVEL=1表示複製失敗(就試下一個磁碟)

批次檔如下供參考

@echo off   

:try1
copy xxx.zip z:\tools\xxx.zip
if errorlevel 1 goto try2
echo File was copied to [Z] successfully.
goto end

:try2
copy xxx.zip x:\tools\xxx.zip
if errorlevel 1 goto try3
echo File was copied to [X] successfully.
goto end

:try3
copy xxx.zip y:\tools\xxx.zip
if errorlevel 1 goto error
echo File was copied to [Y] successfully.
goto end

:error
echo Error happened.
goto end

:end
echo End.

在windows中利用xcopy來批次備份資料

自從硬碟便宜以後備分就顯得越來越重要了,誰知道哪天資料會隨著server一起去殉情,那時候就真的是欲哭無淚,所以來分享一下備份資料的小技巧。

還記得DOS那個年代可以下一些DOS指令嗎?沒錯,雖然現在可以用來備份的軟體很多,但是我還是偏愛指令啦 XD (一來免費,二來安心)


我最常用的方法就是使用這段指令:

xcopy 來源 目的 /s/d/y

然後把這段指令寫成一個bat的批次檔,接下來就可以將該批次檔掛在[控制台>排定的工作]中,然後讓他每天批次執行就可以了,一般我都喜歡排定在半夜2~5點之間進行,這樣才不會造成服務的影響,我想這大概是以前在網路公司呆久的壞毛病吧 XD

後面的參數涵義是:

/S 複製每個目錄及其包含的子目錄。
/D 複製發生變更的檔案。
/Y 所有覆蓋的詢問都回答 YES

完整的參數內容(從xcopy /?得知):

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\r
[/EXCLUDE:file1[+file2][+file3]...]
source 指定要複製的檔案。
destination 指定位置或者/以及新檔案的名稱。
/A 只複製設定成保存屬性的檔案,不要改變屬性的設定。
/M 只複製設定成保存屬性的檔案,並清除保存屬性。
/D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,
只複製那些來源檔案日期比目的檔案日期為新的檔案。
/EXCLUDE:file1[+file2][+file3]...
指定檔案清單字串。每個字串
應該在檔案中的不同行。如果有字串對應到要進行複製的檔案絕
對路徑的任何部分,這個檔案會被排除複製。例如,指定字串
\obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是.obj 的檔案複製。
/P 在建立每個目的檔案時顯示提示。
/S 複製每個目錄及其包含的子目錄,不複製空目錄。
/E 複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E相同,能夠用來修改 /T。
/V 驗證每個新檔案。
/W 在複製之前提示您按鍵繼續。
/C 如果錯誤發生時也繼續複製。
/I 如果目的不存在且複製一個以上的檔案的話,就假設指定的目的一定是目錄。
/Q 在複製時不要顯示檔名。
/F 在複製時顯示來源及目的檔案的全部檔名。
/L 顯示要複製的檔案。
/G 允許加密檔案複製到不支援加密的目的地。
/H 時複製隱藏檔和系統檔。
/R 覆蓋唯讀檔案。
/T 建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。
/T /E 會包括空目錄及子目錄。
/U 只複製已經存在目的位置的檔案。
/K 複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。
/N 用所產生的短檔名來進行複製。
/O 複製檔案所有權及 ACL 資訊。
/X 複製檔案審查設定 (包含 /O)。
/Y 不要提示您確認是否要覆蓋一個已經存在的檔案。
/-Y 示您確認是否要覆蓋一個已經存在的檔案。
/Z 在可重新開始的模式中複製網路檔案。
參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在命令列中用 /-Y 參數
來覆蓋原有設定。