Archive for August, 2010

[C#]บันทึกการใช้งาน Combobox แบบด้วนๆ

เนื่องจากความไม่รู้ และ เพิ่งมาหัดเล่น Windows App ด้วย C# ได้ใหม่ยังไมุ่คุ้นเคยกับการใช้งบาน Component ต่างๆ ที่เจอปัญหาคือ จะแสดงข้อมูลใน Combobox ให้แสดง ข้อมูลรายละเอียดแต่ตอนทำการบันทึกให้เอา Value ไปใช้แทน เหมือนกับ ในเว็บไซต์ เช่น

<select name="province">
	<option value="56">เชียงใหม่</option>
	<option value="57">เชียงราย</option>
</select>

งง อยู่สักพัก เลยลองผิดลองถูกได้ความว่า สามารถทำได้ง่ายมากดังนี้
1. ทำการ Set Datasource ให้กับ Combobox และกำหนด DisplayMember และ ValueMember ดังนี้

//Query data to List<ListBoxModel>
List<ListBoxModel> lists = "แหล่งที่มาของข้อมูล";
cmbProvince.DataSource = lists;
cmbProvince.ValueMember = "id";
cmbProvince.DisplayMember = "name";

หมายเหตุ : Class ListBoxModel มี properties “name” และ “id” และ DataSource ยังสามารถใช้ข้อมูลได้หลากหลายรูปแบบด้วย แต่ผมชอบแบบนี้ที่สุด
2. ตอนดึงข้อมูล Code ที่ selected อยู่ก็แบบนี้

//ดึง Selected ID ออกมา
object id = cmbProvince.SelectedValue;
//ดึง Class ที่ bind ออกมา
ListBoxModel obj = (ListBoxModel)cmbProvince.SelectedItem;

3. ส่วนการ Set ค่าใส่ Combobox ก็ตามนี้เลยครับ

//ใส่ค่า ID โดยตรง
cmbProvince.SelectedValue = "ค่าที่ต้องการ";
//กรณีมีค่าที่ Display อยู่แล้ว
cmbProvince.FindByText("ค่าที่ต้องการ").Selected = true;
//กรณีรู้ค้า ID
cmbProvince.FindByValue("ค่า ID ที่ต้องการ").Selected = true;
//แบบรู้ลำดับ
cmbProvince.SelectedIndex = ลำดับที่ต้องการให้ เลือก (เป็นตัวเลข);
//ใช้ Display โดยตรง
cmbProvince.SelectedText = "ข้อความที่ต้องการ";

อันนี้ลองผิดลองถูกมา ท่านใดที่ทราบการใช้งานแบบง่ายกว่านี้ก็ ช่วยชี้แนะด้วยครับ

การใช้เครื่องหมาย ‘&’ ใน SQL Statement ของ Oracle

มีงานแก้ไขข้อมูลของฐานข้อมูล Oracle แล้วเจอเครื่องหมาย “”” ซึ่งก็คือ เครื่องหมาย “” นั่นเองแต่เวลารัน script นี้จะขึ้นหน้าต่าง Variable Prompt ให้กรอกข้อมูลตลอดดังรูป
Toad Skip '&'
สำหรับการใช้งานใน Toad (โปรแกรมยอดนิยมนะนี่) ให้คลิกขวาที่ Menu View->Toad Option.. จากนั้นก็คลิกเครื่องหมาย ถูก ออกจากช่อง “Prompt for substitution variables” ดังรูป

สำหรับ SQL*Plus ใ้ห้ ใช้คำสั่ง

SET SCAN OFF

แหล่งข้อมูล
How does one escape special characters when writing SQL queries?
How to use ‘&’ in the sql script ?

[C#]Run batch file in C#

หลังจากที่ผ่านงาน Run batch file in Java class มาแล้วก็มาคิดว่า ในเมื่อรันอยู่บน Windows ทำไมไม่ใช้ภาษา C# ซะละครับ เลยลองไปหาตัวอย่างการใช้งานของ C# มาดังนี้
1. รันโดยไม่สนใจผลการทำงาน

private void btnRun_Click(object sender, System.EventArgs e){
	System.Diagnostics.Process.Start(@"C:\MyBatch.bat");
}

2. รันโดยรอผลการทำงาน

private void btnRun_Click(object sender, System.EventArgs e){
	System.Diagnostics.ProcessStartInfo proInfo = new System.Diagnostics.ProcessStartInfo(@"C:\MyBatch.bat");
	proInfo.RedirectStandardOutput = true;
	proInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
	proInfo.UseShellExecute = false;
	
	System.Diagnostics.Process pro = System.Diagnostics.Process.Start(proInfo);
	System.IO.StreamReader strReader = pro.StandardOutput;
	pro.WaitForExit(2000);
	if(pro.HasExited){
		string output = strReader.ReadToEnd();
		Console.WriteLine(output);
	}
}

โอ้… ดูแล้วออกจะง่ายกว่า Java อยู่หลายช่วงตัว (Code ที่แสดง copy มาแค่บางส่วนเท่านั้น)
แหล่งข้อมูล
How can I run another application or batch file from my Visual C# .NET code?
How to execute a .bat file from a C# windows form app?

[Java]Run batch file in Java class

มีงานที่ต้องใช้ Java ไปรัน batch ไฟล์ ในเครื่อง Windows (class นี้รันภายใต้ Windows) จากการสืบเสาะหา และ ถามไถ่จาก อ.google แล้ว ก็ได้หนทางดังนี้

/**     
 * File Name : RuntimeExample.java
 * Create Date : Aug 22, 2010 13:20:26 PM
 */ 
package com.fun4station.batch;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**     
 * @author Supot Saelao
 * @version 1.0    
 */
public class RuntimeExample {

	public static void main(String[] args) {
		Process process = null;
		BufferedReader bufferRead = null;
		try{
			//If you don't want to see a window open
			//Runtime.getRuntime().exec("cmd /c start /MIN mybatch.bat");
			process = Runtime.getRuntime().exec("cmd /C mybatch.bat");
			bufferRead = new BufferedReader(new InputStreamReader(process.getInputStream()));
			
			String line = null;
			while ((line = bufferRead.readLine()) != null) {
				System.out.println(line);
			}
			
			if(process.exitValue() == 0){
				System.out.println("Command start mybatch.bat sucess...");
			}else{
				System.out.println("Command start mybatch.bat fail...");
			}
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			try {
				process.destroy();
				bufferRead.close();
			} catch (IOException e) {}
		}
	}
}

แหล่งข้อมูล
How do I run a batch file from my Java Application?
Java Servlet – Running a batch file in Java.

[C#]AutoComplete in Windows Forms

การใช้งาร AutoComplete ใน Windows Forms (Windows Application) นั้นง่ายมากครับ เนื่องจาก Microsoft ได้จัดเตรียมไว้ให้ครบครันแล้ว(ต้องขอบคุณอย่างสูงมากๆ) ตัวอย่างการใช้งาน

using System;
using System.Windows.Forms;
namespace WindowsApp {
    public partial class Form1 : Form {
        private static AutoCompleteStringCollection autoComplete = new AutoCompleteStringCollection();

        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            this.InitAutoComplete();
            textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            textBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox.AutoCompleteCustomSource = autoComplete;
        }

        private void InitAutoComplete() {
            autoComplete.Add("นาย");
            autoComplete.Add("นางสาว");
            autoComplete.Add("นาง");
        }
    }
}

แค่นี้ก็สามารถใช้งาน AutoComplete ใน Text Box ที่ชื่อ textBox ได้แล้ว จากตัวอย่างเป็นเพียงการใช้งานอย่างง่ายๆ ซึ่งเราสามารถนำไป ประยุกต์ใช้กับ การโหลดข้อมูลมาจาก Database สามารถกำหนดค่าได้จาก Properties ของ Text Box ได้เลยทดลองรันโปรแกรมจะได้ดังรูปครับ
Auto Complete in Windows Application