วันจันทร์ที่ 28 มกราคม พ.ศ. 2551

Firebird: Date function

มี Fileld TimeStamp ต้องการเฉพาะปี เช่น 29/1/2008 ต้องการผลเป็น 08 ใช้คำสั่งใน SQL

วันพุธที่ 16 มกราคม พ.ศ. 2551

NUnit: Assembly Not Loaded

ข้อผิดพลาด :
System.ApplicationException : Invalid cache path:
....\.\.\..\;nunit20\ShadowCopyCache\xxxxxx
---> System.NotSupportedException : The given path's format is not supported.


แก้ไข :
  1. เปิด nunit.exe.config เข้าไปแก้ไขในส่วนของ tag โดยเปลี่ยน %temp% เป็น C:\Documents and Settings\..User..\Local Settings\Temp
  2. เปิด nunit-console.exe.config แ้ล้วทำการแก้ไขเหมือนข้อแรก

วันจันทร์ที่ 7 มกราคม พ.ศ. 2551

Page เดียว ทำเป็น Create, Change, Delete, Display

เลือกใช้ State Pattern



Context
Page หรือ Form

State
ทำเป็น abstract class ของ Action

ConcreteState
ConcreteStateA = Add

ConcreteStateB = Change

ConcreteState........


method Handle() ใช้เป็น Save()
method Request() ของ Page ก็ใช้ป็น OnSaveClick()

* Start State ของ Page ได้รับจาก Main Menu *


// Context
public partial class MaterialMaster : System.Web.UI.Page{

// State
public abstract class MaterialMasterActionState {
// Handle()
public abstract void Save(MaterialMaster Context);

}

// ConcreteStateA
public class MaterialAdd : MaterialMasterActionState{

public override void Save(MaterialMaster Context) {
// Save Material into Database
}

}
// ConcreteStateB
public class MaterialChange : MaterialMasterActionState{

public override void Save(MaterialMaster Context) {
// Change Material into Database
}

}

#region ActionState Properties
private MaterialMasterActionState _ActionState;
public MaterialMasterActionState ActionState {
get { return (Session["state"] as MaterialMasterActionState); }
}
#endregion

protected void Page_Load(object sender, EventArgs e)
{

switch (Request.QueryString["action"])
{
case "add":
_ActionState = new MaterialAdd(this);
break;
case "change":
_ActionState = new MaterialChange(this);
break;
case "delete":
break;
case "display":
break;
default:
break;
}
if (_ActionState != null) { Session["state"] = _ActionState; }

}
// Request()
void ToolsBar1_SaveButtonClicked(object sender, EventArgs e)
{

// State.Handle()
if (Session["state"] != null)
{
ActionState.Save(this);
}
}

}