วันพฤหัสบดีที่ 4 กันยายน พ.ศ. 2551

OpenOffice : Creating Master Page in Impress

  1. สร้าง new presentation โดยเลือก Empty Presentation แล้วกด Create
  2. ไปที่ menu view > Master > กดเลือก Slide Master แล้วจะได้ตามภาพข้างล่าง
  3. ภึงขั้นตอนนี้ก็ตกแต่ง Master Page ให้เต็มที่ตามภาพ
  4. หลังจากนั้นก็ Save โดยไปที่ File > Template > Save
  5. ตั้งชื่อในช่อง New Template และก็เลือก Categories เป็น MyTemplate กด OK
  6. เป็นการเสร็จสิ้นการสร้าง Master Page ลองทดสอบโดยดูไปสร้าง New Presentation แล้วเลือก From Template โดยไปที่ My Template ก็จะเห็น Master Page ที่เราได้สร้างไว้ (ตามภาพข้างล่าง)

วันจันทร์ที่ 25 สิงหาคม พ.ศ. 2551

SAP: Dynamic selection screen (Checkbox and Radio Buttons)

Question:
ที่หน้าจอ Selection Screen จะ invisible Checkbox เมื่อเลือก Radio Button ?

Solution:

SELECTION-SCREEN BEGIN OF BLOCK first WITH FRAME TITLE text-001.
PARAMETERS : radio1 RADIOBUTTON GROUP grp1
USER-COMMAND radio,
radio2 RADIOBUTTON GROUP grp1,
radio3 RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK first.

SELECTION-SCREEN BEGIN OF BLOCK second WITH FRAME TITLE text-002.
PARAMETERS : chkbox AS CHECKBOX DEFAULT 'X' MODIF ID DIS.
SELECTION-SCREEN END OF BLOCK second.

AT
SELECTION-SCREEN OUTPUT.
" invisible checkbox case selected radio2...
LOOP AT SCREEN.
IF screen-group1 = 'DIS'.
IF radio2 = 'X'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.

วันพฤหัสบดีที่ 29 พฤษภาคม พ.ศ. 2551

SAP: LOOP AT SCREEN

Question:
พอดีใช้ Logical Database แต่ต้องการให้ Parameters ใน Selection Screen ของ Logical Database นั้นๆ ทำเป็น Required Field

Solution:
ใช้คำสั่ง Loop At Screen ในการวนลูปที่หน้าจอของ Dynpro โดยใช้ Structure ที่ชื่อว่าSCREEN และใช้ Component ที่ชื่อว่า NAME ส่วนการกำหนด Required Field ให้ใช้ Component ที่ชื่อว่า REQUIRED

ชื่อของ Parameter (EM_MATNR-LOW) ดูได้จาก technical infomation ในส่วนของ Screen Field

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.

IF SCREEN-NAME = 'EM_MATNR-LOW'.

SCREEN-REQUIRED = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

วันพุธที่ 28 พฤษภาคม พ.ศ. 2551

SAP: Transaction Code (Development)

  • SE38 ABAP Edittor.
  • SE80 Object Navigator.
  • SE11 ABAP Dictionary.
  • SE16 Data Browser
  • SE37 Function Builder
  • SE30 Runtime Analysis
  • ST05 SQL Trace
  • BAPI BAPI Explorer
  • SE24 Class Builder

  • SU01 User Management (Change Password)
  • SM04 User List (End Session)

Purchase Order:

  • ME23N Display purchase order
  • ME80FN Reports
  • ME2N Reports

วันจันทร์ที่ 28 เมษายน พ.ศ. 2551

VS 2005: Strongly Typed Datasets in DAL using ConnectionString from web.config


  1. เปิด project DAL

  2. คลิกขวาที่ Project เลือก Properties เลือกที่หัวข้อ Settings หลังจากนั้นกด View Code ตามภาพ
  3. หลังจากนั้น VS 2005 ก็จะสร้าง class Settings.cs
  4. บรรทัดแรกให้ using System.Configuration;
  5. ต่อมาใน Constructor Settings เพิ่ม Code ตามนี้ (พิมพ์ this.SettingsLoaded += แล้วกด Tab 2 ครั้ง)
    this.SettingsLoaded += new System.Configuration.SettingsLoadedEventHandler(Settings_SettingsLoaded);
  6. ใน Events ของ Settings_SettingsLoaded() ใส่ code สำหรับใช้ ค่า ConnectionString ใน web.config ( webConnectionString = name ของ ConnectionString ที่อยู่บน Web.Config, appConnectionString = name ทีอยู่ใน Setting ตามข้อ 2) .ให้เปลี่ยน ConnectionString ตามชื่อที่มีอยู่ใน Project

    foreach (ConnectionStringSettings ConnectionString in ConfigurationManager.ConnectionStrings )
    {
    if (ConnectionString.Name == "webConnectionString")
    Settings.Default["appConnectionString"] =
    ConfigurationManager.ConnectionStrings[ConnectionString.Name].ConnectionString;
    }

  7. Save แล้ว Build.


วันจันทร์ที่ 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);
}
}

}