2010年1月20日 星期三

[SQL]找出table的schema

找到的這個資料實在太棒了,一舉數得。
http://www.dotblogs.com.tw/lolota/archive/2009/09/05/10441.aspx

真的是順便學了很多 connection.GetSchema 的用法。

string[] restrictions = new string[4];
        restrictions[0] = "Northwind";
        restrictions[2] = "Employees";

        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);
        conn.Open();
        DataTable dt = conn.GetSchema("Columns", restrictions);
        conn.Close();
        GridView1.DataSource = dt;
        GridView1.DataBind();

[SQL]利用ADO找出現有的table

網路上找到且我試用過的方法有兩個

sqlconn = new System.Data.SqlClient.SqlConnection();
sqlconn.ConnectionString = connectstring;
sqlconn.Open();

// method 1
DataTable dt = sqlconn.GetSchema();
DataTable dt2 = sqlconn.GetSchema("Tables");
Literal1.Text= printTable(dt2);

// skill for write xml to string
//System.IO.StringWriter a=new System.IO.StringWriter();
//dt2.WriteXmlSchema(a);
//Response.Write(a.ToString());

// method 2
DataTable dt3 = new DataTable("Tables");
string commandstring = "select TABLE_NAME from INFORMATION_SCHEMA.Tables where TABLE_TYPE ='BASE TABLE'";
System.Data.SqlClient.SqlCommand sqlcmd = sqlconn.CreateCommand();
sqlcmd.CommandText = commandstring;
dt3.Load(sqlcmd.ExecuteReader());
Literal2.Text= printTable(dt3);

sqlconn.Close();

[SQL]SQL Server Express 連線字串

有個好網站可以參考
http://www.connectionstrings.com/sql-server-2005

目前我的組態是 IIS, ASP.NET, SQL Server Express 2005 都在本機。
ASP.NET 固定所使用的 username 據說是 NT AUTHORITY\NETWORK SERVICE
所以要把這個帳號加到 SQL Server 去。可參考
http://social.msdn.microsoft.com/forums/zh-TW/240/thread/011579f2-d3a6-4c2b-a7dc-b689d1e08acc

現在測試過成功的字串是
server=facetdev\sqlexpress;database=facetdb;integrated security=SSPI;

不成功的字串是
server=facetdev\sqlexpress;database=facetdb;uid=administrator;pwd=;
出現 error 為
使用者 'administrator' 的登入失敗。

若出現 error 為
當發生使用者 ' username ' 登入失敗。 使用者將無法與受信任的 SQL Server 連接相關聯。
則是要把 SQL Server Express 的認證模式改為「 混合模式 (Windows 的帳戶驗證 」 及 SQL Server 帳戶驗證) 」
可參考
http://www.dotblogs.com.tw/dotjum/archive/2009/03/31/7769.aspx

2010年1月12日 星期二

[www]html table column寬度不受控制

當table總寬度比整個畫面寬的時候,光是設定 th 或 td 的 width 還是不對勁。
還要設定 table 的 width 的總寬度,這樣才會是自己想要的樣子。

可以看 w3 對於 column width 的定義:
http://www.w3.org/TR/CSS21/tables.html#auto-table-layout

搞了整整兩天

2010年1月8日 星期五

[javascript]指定frame的location

parent 是指目前frame的上一層
top 是指最高的一層

2009年10月30日 星期五

aspnet 動態加入使用者控制項

要完成這個工作,有幾種選項。

(1.1)先在要使用「使用者控制項」的頁面,切換至「設計」模式。
(1.2)拖拉「使用者控制項.ascx」到頁面上,會產生@ Register指示詞,就可以把「使用者控制項」殺掉。
(1.3)在Page_Load的地方,先用
Control t1 = Page.LoadControl("MyUserControl.ascx");
取得實體,再用
t1.GetType().GetProperty("myAtt1").SetValue(t1, "value1", null);
設定屬性。

或者

(2.1)在要使用「使用者控制項」的頁面加入
<%@ Reference Control="MyUserControl.ascx" %>
(2.2)在Page_Load的地方,先用
MyUserControl t1 = (MyUserControl)LoadControl("MyUserControl.ascx");
取得實體,再設定屬性。
或者
Control t1 = this.Page.LoadControl("MyUserControl.ascx");
取得實體,再用
t1.GetType().GetProperty("myAtt1").SetValue(t1, "value1", null);
設定屬性。

(3.1)使用以下的一定失敗,我不知為何會失敗:
MyUserControlt1 = new MyUserControl();
t1.myAtt1= "value1";

註:t1.myAtt1 是會設定到 MyUserControl 裡面的 TextBox1.Text 的值。錯誤發生是因為設定時,TextBox1還是個null。我不知道為什麼當時TextBox1還是個null。

2009年8月19日 星期三

python + gtk + glade 緣起

最近決定把自己寫的程式,儘量用 python 或 c# 來做。
這樣可以減少學習太多語言把自己搞混的情況。
其實我以前也只有用 VB 及 Java。

在 python 部份,快速開發真的是很方便,跳過了型別檢查,沒有了大括號、end 來包佔腦細胞,真的可以很專心在邏輯上面。
而且,沒有型別宣告,函數回傳值也可以有多個,且直接可以裝成 list。只要在函數內部改好回傳值的增減,在函數外面就直接取用,真是太方便了。
我在開發的時候這個優勢真的省去規劃函數定義的時間。

說了這些只是要為接下來的做引子。在 python 的 solution 裡,
GUI 的部份是 tcl/tk,說實在的,tcl/tk 本身要找範例及書就不是很多,
要使用 python 與 tcl/tk 的範例及書就更少了。為了多平台執行,我選了gtk + glade。實在是為了要偷懶去學 GUI 的那些語法,glade 可以用拖拉的方式建立 GUI 及程式架構,建好之後就是把程式邏輯放進去。
手工把 GUI 建立起來的工作我真的很少做,都是 VB 太好用的關係。

glade 是 gtk+ 的 RAD tool,它的主要網站是 http://glade.gnome.org/
它的 tutorials 在 http://live.gnome.org/Glade/Tutorials
欣賞它的地方就是有 python 的範例。
目前我還在 basic 裡面打轉 http://tadeboro.blogspot.com/2009/04/gtkdialog-tutorial-part-1.html
不知道是其他語言不太需要 gtk+ 還是有其他原因,除了 python 的選擇就是 C。
這裡抱怨一下,我的腦容量也許太小,c/c++ 的一大堆宣告,還有 build 的問題我到現在還是搞不出一個我開心的 solution。都是 VB 搞得太無腦的關係。

好,接下來,就是建立一個 GUI 來玩玩吧。