04 มิถุนายน 2557

Excel VBA - 1. เริ่มต้นเขียน VBA กัน

หรับผู้ที่ใช้ Excel 2007, 2010 หรือ รุ่นที่ใหม่กว่า ก่อนอื่นเราต้องกำหนดค่าเพื่อให้สามารถใช้ VBA และ Macro ก่อน โดยทำตามขั้นตอน ดังนี้

เปิดโปรแกรม Excel 2007, 2010 หรือ รุ่นที่ใหม่กว่า จากนั้น

1. เลือก เมนู File -> Options
2. ที่หน้าต่าง Excel Options ให้คลิกที่รายการ Customize Ribbon
3. ในส่วนของ กล่อง Main Tabs ให้ติ๊กเครื่องหมายถูกหน้ารายการ Develop จากนั้นคลิกปุ่ม OK 


















จากนั้นเมนูของ Excel ก็จะปรากฎรายการเมนู Developer เพิ่มขึ้นมา 

4. ให้คลิกที่เมนู Developer เลือก Macro Security
5. ที่หน้าต่าง Trust Center ให้เลือกรายการ Macro Setting
6. ในส่วนของ Macro Settings ให้เลือกรายการ 

       Enable all macros (not recommended; potentially dangerous code can run) 
 และ Trust access to the VBA project object model จากนั้น คลิกปุ่ม OK



เท่านี้โปรแกรม Excel ของเราก็สามารถใช้งาน VBA ได้แล้ว


เริ่มเขียนคำสั่ง VBA กัน

1. ที่ Excel ให้เลือกเมนู Developer 
2. จากนั้นคลิกเลือก ไอคอน Visual Basic จะปรากฎหน้าต่าง Microsoft Visual Basic for Application ขึ้นมา
3. ไปที่เมนู Insert เลือก รายการ Module 
4. ที่หน้าต่าง Module1(Code) ให้ทำการป้อนคำสั่ง ดังนี้

Sub mySub()
MsgBox ("Hello World")
End Sub

จากนั้นทำการบันทึก Excel Workbook 

เมื่อต้องการเรียกใช้งานให้คลิกปุ่ม F5 หรือไปที่เมนู Run เลือกรายการ Run Sub/UserForm

ก็จะปรากฎ Messagebox ขึ้นมาดังภาพ

*** เมื่อต้องการบันทึก workbook ของ Excel เวลาบันทึกให้กำหนดประเภทของไฟล์ เป็น Excel Macro-Enabled Workbook (*.xlsm)




















การเรียกใช้งาน subroutine อัตโนมัติ

สำหรับ subroutine ที่จะถูกเรียกใช้งานแบบอัตโนมัติ จะใช้ชื่อว่า Workbook_open ซึ่งจะถูกเรียกใช้งานโดยอัตโนมัติเมื่อเราทำการเปิดไฟล์ Workbook ของ Excel

วิธีการกำหนดสามารถทำได้ดังนี้

1. ทำการเพิ่ม Subroutine ใหม่ โดยใช้ชื่อว่า Workbook_Open ทำได้โดย ไปที่หน้าต่าง
Project - VBAProject แล้ว ดับเบิ้ลคลิกที่รายการ ThisWorkbook 


















จะเข้าสู่หน้าต่างเขียนคำสั่ง ให้เขียนคำสั่ง ดังนี้

Private Sub Workbook_Open()
mySub 'mySub คือชื่อ subroutine ที่เราสร้างขึ้นเอง
End Sub

ทำการ บันทึก (save) workbook แล้วปิด (close)

*** อย่าลืม --- การบันทึก workbook ให้กำหนดประเภทของไฟล์ เป็น Excel Macro-Enabled Workbook (*.xlsm)

จากนั้นเปิด workbook ใหม่อีกรอบ ก็จะมีการเรียกใช้งาน mySub ผ่านทาง subroutine Workbook_Open โดยอัตโนมัติ

สำหรับ Excel VBA ตอนแรก ก็ขอจบไว้เพียงเท่านี้ 

ช่วงนี้มี เป็นช่วง เคอร์ฟิว (curfew) คือ การห้ามออกจากเคหสถานเวลาค่ำคืน ตามที่รัฐกำหนด
ขอให้ทุกคนหลับฝันดี รวยๆ เจริญๆ

26 เมษายน 2557

การสร้างผู้ใช้ใหม่ สำหรับ SQL Server

การสร้างผู้ใช้ใหม่ (user) สำหรับเข้าถึงทรัพยากรต่างๆ ของ SQL Server มีวิธีการอยู่หลายวิธี
สำหรับบทความนี้จะนำเสนอ วิธีง่ายๆ 3 ขั้นตอน สามารถทำได้ไม่ยากโดยอาศัยคำสั่ง T-SQL ซึ่งมีขั้นตอนวิธีทำดังนี้

สำหรับคำสั่งในขั้นตอนต่างๆ จะใช้สิทธิ์ของผู้ใช้ ชื่อ sa
ทำการสร้างฐานข้อมูลเตรียมไว้โดยกำหนดชื่อ เป็น kasem_db

ขั้นตอนที่ 1
ให้ทำการสร้าง ชื่อล็อกอิน (Login Name) เช่น kasem (อยู่ภายใต้เซิร์ฟเวอร์ชื่อ SUPERMAN-TWIST)
โดยกำหนดรหัสผ่านเป็น P@ssw0d และกำหนดดีฟอล์ตฐานข้อมูลชื่อ kasem_db

USE master
GO
CREATE LOGIN [SUPERMAN-TWIST\kasem] WITH PASSWORD = 'P@ssw0d'
       DEFAULT_DATABASE = [kasem_db]
GO

ขั้นตอนที่ 2
ต่อมาทำการสร้าง ชื่อผู้ใช้งานฐานข้อมูล (User Name) ปกติจะใช้ชื่อเดียวกันกับชื่อ ล็อกอินที่สร้างขึ้นก่อนหน้า เช่น kasem ให้กับฐานข้อมูล kasem_db

USE [kasem_db]
GO
CREATE USER kasem FOR LOGIN kasem

GO


ขั้นตอนที่ 3
ทำการกำหนดบทบาทของผู้ใช้งานฐานข้อมูล (database role) สำหรับตัวอย่างนี้จะใช้บทบาทของ SQL Server ได้จัดเตรียมไว้ให้ ดังแสดงในตาราง

ตารางแสดงรายละเอียดของ Fixed database role
Database Role
รายละเอียด
db_owner
กำหนดให้มีสิทธิ์ในการทำงานทุกอย่างในฐานข้อมูล
db_accessadmin
กำหนดให้มีสิทธิ์ในการ เพิ่ม ลบ ผู้ใช้งานฐานข้อมูล รวมถึงบทบาทของผู้ใช้
db_securityadmin
กำหนดให้มีสิทธิ์ในการจัดการสิทธิ์ต่างๆ ของผู้ใช้งานฐานข้อมูล
db_ddladmin
กำหนดให้มีสิทธิ์ในการใช้งานคำสั่งในกลุ่ม Data Definition Language (DDL)
db_backupoperator
กำหนดให้มีสิทธิ์ในสำรองข้อมูล (backup)
db_datareader
กำหนดให้มีสิทธิ์ในการอ่านข้อมูลของตารางในฐานข้อมูล
db_datawriter
กำหนดให้มีสิทธิ์ในการ เพิ่ม แก้ไข ลบ ข้อมูลในตารางของฐานข้อมูล
db_denydatareader
กำหนดให้ไม่สามารถอ่านข้อมูลของตารางในฐานข้อมูล
db_denydatawriter
กำหนดให้ไม่สามารถ เพิ่ม แก้ไข ลบ ข้อมูลในตารางของฐานข้อมูล

ในที่นี้กำหนดบทบาทให้กับผู้ใช้ kasem เป็น db_owner โดยเขียนคำสั่งดังนี้

USE TestDB
GO
EXECUTE sp_addrolemember 'db_owner' , 'Kasem'
GO

หรือถ้าหากต้องการกำหนดเป็นอย่างอื่น เช่น ต้องการให้ทำได้เฉพาะ การเพิ่ม แก้ไข ลบข้อมูลในตาราง และสิทธิ์ในการสำรองข้อมูล ซึ่งต้องใช้บทบาทหลายๆ อย่าง ก็สามารถเขียนคำสั่งได้ดังนี้

USE TestDB
GO
EXECUTE sp_addrolemember 'db_datareader' , 'Kasem'
EXECUTE sp_addrolemember 'db_datawriter' , 'Kasem'
EXECUTE sp_addrolemember 'db_backupoperator' , 'Kasem'
GO

เพียงขั้นตอนง่ายๆ 3 ขั้นตอน คุณก็สามารถสร้างชื่อผู้ใช้งานฐานข้อมูลได้เอง

สวัสดีมีเงินใช้ ถึงอากาศจะร้อน แต่ใจเราอย่าใจร้อน

11 ตุลาคม 2556

FLASH สอนการเขียนเกมตีตัวตุ่น

ตอนนี้นำเสนอ วีดีโอ สอนการเขียนเกมด้วย Flash ตอน เกม ตีตัวตุ่น



Source Code

import flash.ui.Mouse;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.text.engine.TypographicCase;

var nR:uint = 0;
var nMin:uint = 1;
var nMax:uint = 15;
var nScore:uint = 0;

stage.addChild(myMouse);
myMouse.mouseEnabled = false;
myMouse.addEventListener(Event.ENTER_FRAME, fnMyMouse);

function fnMyMouse(event:Event):void {
 myMouse.x = stage.mouseX;
 myMouse.y = stage.mouseY;
}
Mouse.hide();

var gTimer:Timer;
gTimer = new Timer(500, 0);
gTimer.addEventListener(TimerEvent.TIMER, fnRandom);
gTimer.start();

for (var i:int = nMin; i <= nMax; i++) {
 this["m"+i].gotoAndPlay(i);
 this["m"+i].addEventListener(MouseEvent.CLICK, onClick(i));
 this["m"+i].visible = false;
}
  
function onClick(j:int):Function {
 return function(event:MouseEvent):void {
  fnScore(j);
 }
}
  
function fnScore(k:int) {
 nScore++ ;
 this["m"+k].visible = false;
 txtScore.text = nScore.toString();
}
  
function fnRandom(event:TimerEvent):void {
 nR = Math.floor(Math.random() * (1 + nMax - nMin) + nMin);
 this["m"+nR].visible = true;
}

สวัสดี มีความสุข

09 กันยายน 2556

Compatibility Mode Windows 7 , 8 , 10 และ Windows Server

สำหรับท่านที่เป็นนักพัฒนาซอฟต์แวร์ โดยเฉพาะซอฟต์แวร์รุ่นเก่าๆ ซึ่งต้องอาศัยสภาพแวดล้อมของ Windows XP ในการทำงาน พอเปลี่ยน OS มาเป็น Windows 7 หรือสูงกว่า ก็จะเจอปัญหาหลายอย่าง โดยเฉพาะ เรื่องของภาษาไทย เรื่องของการจัดเรียงลำดับ หรือ อื่นๆ ดังนั้นจำเป็นต้องกำหนดให้โปรแกรมของเราที่ติดตั้งบน Windows 7 ให้กลับไปใช้สภาพแวดล้อมเดิมๆ คือ Windows XP

กรณีติดตั้งซอฟต์แวร์ไว้เครื่อง PC หรือ Windows 7 / Windows 8 / Windows 10

สามารถกำหนดได้โดยคลิกเมาส์ปุ่มขวาที่ ไอคอน ของโปรแกรมนั้นๆ  แล้วเลือกรายการ Properties 
ให้เลือกแท็ป Compatibility จากนั้นคลิกที่ Run this program in compatibility mode for : ดังภาพ

























หากต้องการให้สิทธิ์เที่ยบเท่ากับ administrator ก็คลิกเพิ่มตรง Run this program as an administrator

กำหนดภาษาไทย

ให้เปิด Control Panel  เลือก Clock, Language, and Region
ที่หน้าต่าง Clock, Language, and Region ให้เลือก Region จะปรากฎหน้าต่าง Region
ให้คลิกที่ Change system locale...


























ที่หน้าต่าง Region Settings
ทำการเปลี่ยน Current System Local ให้เป็น Thai (Thailand)


















กรณีติดตั้งซอฟต์แวร์ไว้ที่เครื่อง Windows Server 

กรณีที่เราทำการติดตั้งซอฟต์แวร์ไว้ที่เครื่อง Sever แล้วให้เครื่อง Client เรียกใช้งานจาก Server เราไม่สามารถกำหนดค่าแบบกรณีของการติดตั้งไว้กับเครื่อง PC โดยตรง จำเป็นต้องไปแก้ไขใน registry ของ Windows 7 ของเครื่อง Client ทุกๆ ตัวที่มีการเรียกใช้โปรแกรมจาก Server โดยทำตามขั้นตอนดังนี้

กรณีติดตั้ง โปรแกรมไว้ที่ Server แล้วทำการ Map Drive เป็น K: โดยเก็บโปรแกรมไว้ภายใต้โฟลเดอร์ชื่อ RBI_COST ตัวโปรแกรมชื่อ rbi_cost.exe ก็ให้ทำดังนี้

1. คลิกที่ปุ่ม Start แล้วพิมพ์ regedit จากนั้นกดปุ่ม Enter ดังภาพ









2. ที่หน้าต่าง Registry Editor ให้เข้าไปที่
 * บางเครื่องอาจจะไม่มี Layers ก็ให้เข้าไปที่ AppCompatFlags ก่อน จากนั้นให้คลิกเมาส์ปุ่มขวา เลือก New เลือก Key แล้วป้อนชื่อเป็น Layers
(การเข้าไปที่ AppCompatFlags ให้กดปุ่ม Ctrl + F เพื่อเข้าสู่หน้าต่าง Fine แล้วใส่คำค้นเป็น AppCompatFlags)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

จากนั้นคลิกขวาที่ Layers เลือก New เลือก String Value ดังภาพ
















จะปรากฎหน้าต่าง ให้กำหนดค่าในส่วนของ Name เป็น ชื่อไดร์ฟ โฟลเดอร์ และโปรแกมของเรา เช่น
K:\RBI_COST\rbi_cost.exe
เมื่อกำหนดเสร็จให้กด Enter
จากนั้นคลิกเมาส์ปุ่มขวาที่ชื่อที่เราสร้างขึ้น เลือก Modify










ที่หน้าต่าง Edit String ให้กำหนดในส่วนของ Value data: เป็น
WINXPSP2   RUNASADMIN
ดังภาพ










(ระหว่าง WINXPSP2 กับ RUNASADMIN ให้เว้นช่องว่างด้วย
แต่ถ้าหากไม่ต้องการให้เรียกแบบ adminstrator ก็ไม่ต้องใส่ RUNASADMIN)

ตารางการกำหนดค่าของ Compatibility

Compatibility ModeData Value
Windows 95WIN95
Windows 98 / Windows MeWIN98
Windows NT 4.0 (Service Pack 5)NT4SP5
Windows 2000WIN2000
Windows XP (Service Pack 2)WINXPSP2
Windows XP (Service Pack 3)WINXPSP3
Windows Server 2003 (Service Pack 1)WINSRV03SP1
Windows Server 2008 (Service Pack 1)WINSRV08SP1
Windows VistaVISTARTM
Windows Vista (Service Pack 1)VISTASP1
Windows Vista (Service Pack 2)VISTASP2
Windows 7WIN7RTM

เมื่อกำหนดเสร็จให้คลิกปุ่ม OK

เป็นอันเสร็จเรียบร้อย
โปรแกรมที่เราทำการเก็บไว้ที่ Server ก็จะมีสภาพแวดล้อมเป็น Windows XP ตามต้องการ

สวัดดีวันฝนตก

08 กรกฎาคม 2556

FLASH คำสั่งสำหรับปุ่มปิดโปรแกรม

การสร้าง Application สำหรับ Flash ขึ้นมา ควรจะมีปุ่มสำหรับปิดโปรแกรมซึ่งก็ทำไม่ได้ยาก สามารถทำได้ตามขึ้นตอนดังนี้

1. สร้าง Symbol ประเภท Button เพื่อใช้เป็นปุ่มสำหรับปิดโปรแกรม
2. จากนั้นทำปุ่ม Symbol ที่สร้างไว้มาวางที่  Scene แล้วกำหนดชื่อ เป็น btnExit
3. เขียนคำสั่ง ActionScript 3 ดังนี้

import flash.system.fscommand;
btnExit.addEventListener(MouseEvent.MOUSE_DOWN, exitApp);
function exitApp(event:MouseEvent):void
{
    fscommand("quit");
}

4. จากนั้นทำการ Publish ชิ้นงาน แล้วทดสอบ (หากทดสอบภายใต้โปรแกรม Flash คำสั่งจะไม่ทำงาน)


หากต้องการให้ Flash รันเต็มจอภาพ (ต้อง Publish ถึงจะแสดง) ให้ใช้คำสั่ง

stage.displayState=StageDisplayState.FULL_SCREEN;

หรือ
import flash.system.fscommand;
fscommand("fullscreen","true");

28 มิถุนายน 2556

FLASH การสร้างเมาส์เคอร์เซอร์ ขึ้นใช้เอง

การสร้าง เมาส์เคอร์เซอร์ ของเราเองหรือ Custom Mouse Cursor สำหรับ Flash ก็ทำไม่ยาก โดย
1. ทำการออกแบบหน้าตาของเมาส์ แล้วสร้างเป็น Symbol เก็บไว้ 
2. นำเอา Symbol ของเมาส์มาวางใส่ใน Stage แล้วตั้งชื่อ instant name ตามต้องการ เช่น myMouse
3. จากนั้นเขียนคำสั่ง Action Script 3 ดังนี้

stage.addChild(myMouse);
myMouse.mouseEnabled = false;
myMouse.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);

function fl_CustomMouseCursor(event:Event)
{
myMouse.x = stage.mouseX;
myMouse.y = stage.mouseY;
}
Mouse.hide();

เราก็จะได้้เมาส์เคอร์เซอร์ สมใจ

แต่ถ้าเมื่อใดอยากให้เมาส์กลับมาเหมือนเดิมก็สั่ง

myMouse.removeEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);
stage.removeChild(myMouse);
Mouse.show();

เรียบร้อยสำหรับการหาเมาส์สวยๆ มาใส่ใน Flash 

24 เมษายน 2556

วิธีเปลี่ยนจอ iPad

บทความนี้ นำเสนอวิธีการเปลี่ยนหน้าจอ iPad 2 (หรือหน้าจอ Touch Screen)
หลังจากใช้ iPad2 มาได้ปีครึ่ง จอ iPad มีอันต้องจากไป (แตกเสียแล้ว) ปัญหาเดิมๆ ตก เมื่อตกก็ต้องแตก


ครั้นจะไปให้ช่างซ่อม ก็ 1.กลัวเปลืองตังค์ ไปหาในเน็ต ค่าเปลี่ยน 3,000 2,500 ก็มี สรุปเอาแน่เอานอนไม่ได้  2. ช่างไม่ดีก็กลัวงานไม่เรียบร้อย 3. ให้ช่างทำเราไม่รู้ ดังนั้นทำเองดีกว่า (พังไม่ว่าแต่อยากรู้)

พอเตรียมใจเสร็จ ก็นั่งรถเมล์ไปที่ เสือป่าพลาซ่า แหล่งขายทุกอย่างที่เกี่ยวกับมือถือ และแทปเล็ต จะเอาอะไรมีหมด ดังนั้นอะไหล่ iPad เหรอไม่มีให้มันรู้ไป ใครไม่สะดวกก็หาสั่งเอาตามเว็บเห็นมีขายอยู่แต่ก็ยังแพงกว่ากันนิดหน่อย เดินไปในนั้นถามหาหน้าจอ Touch Screen ไอแพด ได้เลยราคาก็ถามไถ่กัน พอใจก็ซื้อ สำหรับหน้าจอ Touch Screen ที่ไปซื้อมาราคา 700 บาท จะได้มาพร้อม กระดาษกาวติดจอ

จากนั้นไปหาเครื่องมือสำหรับเปลี่ยนจอ ก็มี 1.ไดร์เป่าผม 2.ไขขวงแฉก กับแบน ตัวเล็กๆๆ 3. ที่งัดจอ ใช้พลาดสติกที่แข็งแรงหน่อย ตามรูป



















เมื่อได้อุปกรณ์ครบ ก็ลงมือกัน
1. ก่อนอื่นต้องเลาะจอเก่าออกก่อน โดยอาศัยไดร์เป่าผม หลักการเลาะให้เลาะจากปุ่มโฮม โดยเริ่มจากด้านขวาของมือเรา เอาไดร์เป่าผมไปเป่าตรงขอบให้พอร้อน เพื่อจะทำให้กาวที่ติดไว้หลอมละลายจะได้เลาะง่ายๆ โดยค่อยๆแงะออกมาทีละนิด




















เป่าไป ก็เลาะไป ไม่ต้องรีบ และอย่าแยงก้านเลาะไปลึก เมื่อเลาะได้ก็หาพลาสติกมาขัดไว้
เพื่อจะไม่ให้จอไปกับกาวติดอีกรอบ ทำไปจนรอบจอ





















เมื่อเลาะเสร็จให้งัดเปิดทางด้านขวาของเมือเราออกมาเหมือนเปิดประตู ส่วนด้านซ้ายมีสายแพรจากจอ Touch Screen ไปต่อกับแผงวงจรด้านใน
















เมื่อเปิดหน้าจอ Touch Screen ออกมาแล้ว สิ่งที่ต้องทำคือ
1. ถอดน๊อต จอ LCD ตามลูกศรสีแดงออก
2. เลาะปุ่ม Home ออก ตามลูกศรสีฟ้า ค่อยๆใช้มีดคัดเตอร์แงะออกมาเพราะมันถูกติดกาวไว้
3. เลาะแผ่นเหล็กที่ครอบกล้องหน้าออก ใช้มีดคัดเตอร์ค่อยๆ แงะออกมา

จากนั้นก็ค่อยๆ แง้มจอ LCD ออกมา





































ตรงลูกศรสีแดง จะเป็นสายแพรของจอ LCD ให้ถอดออก (จะมีเหล็กล๊อกอยู่ค่อยๆ งัดเหล็กขึ้นแล้วถอดสาย) ถอดเสร็จก็เอาจอออกมาวางไว้ข้างนอก

ทำการถอสายแพร ของจอ Touch Screen โดยทำการงัดพลาสติกล๊อกสาย ตามตำแหน่งลูกศรสีแดง
ค่อยๆ งัดขึ้นอย่างระวัง














งัดเบาๆ ทั้ง 2 ตัว จากนั้นก็ถอดสายออก แล้วเอาจออกได้เลย



















เป็นอันเสร็จขั้นตอนการถอด

ต่อจากนี้จะเป็นการใส่จอ ก็ให้ทำย้อนกลับ
โดยให้เอาจอ Touch Screen มาใส่ก่อน ทำการเสียบสายแพรเข้าไปแล้วกดตัวล็อก
จากนั้นนำจอ LED มาติดตั้ง โดยเสียบสายแพรเข้าไป แล้วก็ล๊อก ขันน๊อตทั้ง 4 ตัว

ทดสอบเปิดเครื่อง ทดสอบโดยรูด Touch Screen โดยที่ยังไม่ประกอบ

ทำการประกอบปุ่ม Home กับตัว Touch Screen ประกอบเหล็กตรง กล้องหน้า
จากนั้นทำการแปะกาว 2 หน้ากับตัว Touch Screen (ดูตำแหน่งจากจอเก่าแล้วแปะตาม)


















สุดท้าย ทำความสะอาดจออย่าให้มีฝุ่น
ลอกฟิลม์กันรอยที่อยู่ด้านในของ Touch Screen ออก
ลอกแผ่นใส่ที่กาว 2 หน้าออกแล้วแปะจอ Touch Screen กับตัวเครื่อง









































เสร็จซะที
700 บาท ได้อย่างที่เห็น
ทำเองง่ายนิดเดียว

โชคดีมีเงินใช้
สวัสดี

03 เมษายน 2556

HTML - 5 การสร้าง Overlay

วีดีโอ สอนเรื่องของการสร้าง Overlay
อยากรู้ว่าเอาไปใช้อย่างไร ก็คลิกดูที่วีดีโอ



คำสั่งที่ใช้ในวีดีโอ

<!DOCTYPE html>
<html>
<head>
<title>My web page</title>
<style type="text/css">
div#overlay {
display:none;
z-index:2;
background:#ccc;
position:fixed;
width:100%;
height:100%;
top:0px;
left:0px;
text-align:center;
}
div#specialBox{
display:none;
z-index:3;
background:#fff;
color:#000;
position:relative;
margin:100px auto 0px auto;
width:500px;
heidht:400px;
}
div#main {
position:absolute;
top:0px;
left:0px;
padding-left:25px
}
</style>
<script type="text/javascript">
function toggleOverlay(obj) {
var overlay = document.getElementById('overlay');
var specialBox = document.getElementById('specialBox');
var specialSpan = document.getElementById('specialSpan');
var specialPicture = document.getElementById('specialPicture');
overlay.style.opacity=.7;

if(overlay.style.display == "block"){
overlay.style.display = "none";
specialBox.style.display = "none";
} else {
overlay.style.display = "block";
specialBox.style.display = "block";
specialPicture.src=obj.src;
specialSpan.innerHTML=obj.src;
}
}
</script>
</head>
<body>
<div id="overlay"></div>
<div id="specialBox">
<button onmousedown="toggleOverlay(this)">X</button>
<span id="specialSpan"></span>
<img id="specialPicture" src="" width="500px" height="375px"/>
</div>
<div id="main">
<h2>My web page</h2>
<p>Some web page content....</p>
<img onmousedown="toggleOverlay(this)" src="01.jpg" width="80px"/>
<img onmousedown="toggleOverlay(this)" src="02.jpg" width="80px"/>
<img onmousedown="toggleOverlay(this)" src="03.jpg" width="80px"/>
<img onmousedown="toggleOverlay(this)" src="04.jpg" width="80px"/>
<img onmousedown="toggleOverlay(this)" src="05.jpg" width="80px"/>
<img onmousedown="toggleOverlay(this)" src="06.jpg" width="80px"/>
</div>
</body>
</html>

14 กันยายน 2555

VB.Net กับ Windows CE

ลายท่านคงเคยเห็น พนักงานตามห้าง Big C หรือ Lotus เดินถือคอมพิวเตอร์ตัวเล็กๆ มีจอภาพน้อยๆ มีแป้นพิมพ์ตัวเลข ซึ่งเอามันมากดๆ ยิงๆ อยู่แถวๆชั้นวางของในห้าง ปกติก็จะเอาไว้ใช้ตรวจสอบราคาสินค้า ตรวจสต๊อกสินค้า หรืออื่นๆ ซึ่งโดยหลักการทำงานที่เขาทำกันอยู่ก็จะเป็นในลักษณะตัวใครตัวมัน ทำหรือดูก็เฉพาะเครื่องๆนั้น ไม่ได้ทำงานเป็นลักษณะของการออนไลน์ ดังนั้น เวลาก่อนจะทำงาน พนักงานต้องโหลดข้อมูลมาเก็บไว้ที่เครื่อง ซึ่งเจ้าเครื่องนี้ส่วนใหญ่ก็จะใช้ระบบปฎิบัติการของ Windows CE แล้วเก็บข้อมูลโดยใช้ SQL Server Compact Edition
รูปร่างหน้าตาของเจ้าเครื่องนี้
 

สำหรับบทความนี้นำเสนอวิธีการเขียนโปรแกรมบนเครื่อง Windows Ce เพื่อบันทึกข้อมูลลงบนฐานข้อมูลของตัวเครื่อง โดยเริ่มตั้งแต่การสร้างฐานข้อมูลของ SQL Server CE ผ่านทาง Visual Studio 2008 (ห้ามเขียนโปรแกรมติดต่อกับ Windows CE ด้วย Visual Studio 2010 หรือสูงกว่า เนื่องจากมันไม่สนับสนุนแล้ว) แล้วทำการเขียนโปรแกรมบน ด้วย VB.Net เพื่อทำงานบน Windows 7 ต่อจากนั้นก็ทำการเขียนโปรแกรมอีกชุดสำหรับทำงานบน Windows CE

การสร้างฐานข้อมูล SQL Server CE

1. เปิดโปรแกรม Visual Studio 2008 หรือต่ำกว่า
2. ทำการสร้าง Project ขึ้นมาใหม่ ไปที่เมนู File -> New... -> Project...
3. เลือกภาษา เป็น Visual Basic แล้วเลือก Smart Device จากนั้น คลิกที่ Smart Device Project
4. เลือก Framework ที่ใช้ เช่น .Net Framework 3.5 หรือ .Net Framework 2.0 ก็ตามแต่สะดวก
5. กำหนดชื่่อโปรเจกต์ เช่น myWinCeProject


















6. เมื่อคลิกปุ่ม OK จะขึ้นหน้าต่าง Add New Smart Device Project - myWinCeProject
7. กำหนด Target platform เป็น Windows CE
8. เลือก Device Application
9. คลิก OK




















10. ที่หน้า Visual Studio ให้ไปที่เมนู Project
11. เลือก Add New Item...






















12. ที่หน้าต่าง Add New Item เลือกที่ Data
13. เลือก Database file
14. ตั้งชื่อฐานข้อมูล เช่น myData.sdf คลิกปุ่ม Add
      จากนั้นจะขึ้นหน้าต่าง Data Source Configuration Wizard ให้คลิก ปุ่ม Finish
















15. ที่ Server Explorer ให้เลือกที่ myData.sdf แล้วคลิกขวาที่รายการ Tables จากนั้นเลือก Create Table






















16. ทำการตั้งชื่อตาราง เช่น tblProduct แล้วกำหนดชื่อคอลัมน์ (Column Name) ประเภทข้อมูล (Data Type) ขนาด (Length) อื่นๆ ตามต้องการ ดังภาพ





















เมื่อกำหนดเสร็จสิ้น ให้คลิกปุ่ม OK ก็จะได้ตาราง tblProduct หากเราต้องการสร้างตารางอื่นอีก็ย้อนกลับไปทำขั้นตอนที่ 15 และ 16 ซ้ำอีก

หากต้องการป้อนข้อมูลผ่านทาง Visual Studion ก็สามารถทำได้โดยคลิกเมาส์ปุ่มขวาที่ชื่อตารางที่ต้องการแล้ว เลือกเมนูรายการ Show Table Data จะปรากฏตารางให้เราสามารถป้อนข้อมูล ดังภาพ






















ตัวอย่างการป้อนข้อมูล


















การเขียนโปรแกรมทางฝั่ง Windows CE

หลังจากเราสร้างโปรเจกต์แล้วทำการสร้างฐานข้อมูล ทดลองป้อนข้อมูลตัวอย่างเป็นที่เรียบร้อย เราก็ย้อนกลับมาที่ฟอร์ม ซึ่งตอนเราสร้างโปรเจกต์จะมี Form1 ปรากฎขึ้นมา เราจะใช้ฟอร์มนี้ในการเขียนโปรแกรมเพื่อจัดการข้อมูล กัน

1. ที่ฟอร์ม Form1 ให้ลากคอนโทรลต่างๆ จาก Toolbox มาไว้ในฟอร์ ดังภาพ
(หากมองไม่เห็นหน้าต่าง Toolbox ให้กดปุ่ม Ctrl + Alt + X)






















เมื่อลากคอนโทรลต่างๆ ตามภาพเรียบร้อยแล้วให้กำหนด Properties ของแต่ละคอนโทรตามชื่อในภาพด้านบน

2. ทำการเขียนโปรแกรมดังนี้

Imports System.IO
Imports System.Data
Imports System.Data.SqlServerCe

Public Class Form1
    Dim conStr As String = "Data Source=" & _
            Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) & _
            "\\myData.sdf"
    Dim con As SqlCeConnection = New SqlCeConnection(conStr)
    Dim cmd As SqlCeCommand
    Dim myDA As SqlCeDataAdapter
    Dim myDS As DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        showData()
    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

    End Sub

    Sub showData()
        cmd = New SqlCeCommand("SELECT * FROM tblProduct", con)
        If con.State = ConnectionState.Closed Then con.Open()
        myDA = New SqlCeDataAdapter(cmd)
        myDS = New DataSet()
        myDA.Fill(myDS, "tblProduct")
        DataGrid1.DataSource = myDS.Tables("tblProduct").DefaultView
    End Sub

    Sub insertData()
        Try
            Dim sqlCmd As String
            sqlCmd = "INSERT INTO tblProduct(ProdCode,ProdName,UM,SalesPrice) " & _
                     "VALUES('" & txtProdCode.Text.ToString & "','" & _
                                  txtProdName.Text.ToString & "','" & _
                                  TxtUM.Text.ToString & "'," & _
                                  txtSalesPrice.Text.ToString & ")"
            cmd = New SqlCeCommand(sqlCmd, con)
            If con.State = ConnectionState.Closed Then con.Open()
            cmd.ExecuteNonQuery()
            showData()
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString)
        End Try
    End Sub
End Class

จากตัวอย่างข้างต้น นำเสนอการแสดงข้อมูลกับ การเพิ่มข้อมูลลงฐานข้อมูล เพื่อเป็นแนวทาง หากต้องการแก้ไขหรือลบข้อมูล ให้ใช้แนวทางเดียวกับการ sub InsertData

3. จากนั้นทำการรันโปรแกรม โดยกดปุ่ม F5 จะปรากฎหน้าต่างดังนี้

















ให้เลือกอุปกรณ์ที่เราต้องการส่งโปรแกรมไปรัน หากไม่มีให้เลือก
Pocket PC 2003 SE Emulator หรือ USA Windows Mobile 5.0 Pocket PC R2 Emulator
แล้วคลิกปุ่ม Deploy หากไม่มี Error เกิขึ้น จะปรากฎหน้าต่างโปรแกรมดังภาพ
ภาษาที่ได้อาจจะไม่ขึ้นเป็นภาษาไทยก็ไม่เป็นไร






















การเขียนโปรแกรมทางฝั่ง Windows 7 

สำหรับตัวอย่างที่นำเสนอ จะนำเสนอเฉพาะการแสดงข้อมูลจากฐานข้อมูลของ SQL Server CE ผ่านทางฟอร์มของทางฝั่ง Windows

1. ทำการ D/L SDK ของ SQL Server Compact Edition เอาเป็นรุ่น 3.5 หรือ 4 (บทความนี้ขอใช้ 3.5)
ที่เว็บไซต์  http://www.microsoft.com/en-us/download/details.aspx?id=5783

2. ทำการติดตั้ง ตามหัวข้อ Instructions ที่ปรากฏในเว็บไซต์





















ทำการติดตั้งตามขั้นตอนจนเสร็จ จากนั้นกลับมาที่ Visual Studio
ให้ทำการสร้าง Project ขึ้นมาใหม่ ดังนี้

3. เปิด Visual Studio 2008 จากนั้นทำการสร้าง Project ที่เป็น Windows


4. จากนั้นไปที่ เมนู Project เลือก Add Reference เลือก แทบ .Net แล้วหา .... จำชื่อไม่ได้ขอต๊ะไวก่อน SQL SErver Compact....

5. ที่ฟอร์ม Form1 เพิ่ม Control ชื่อ DataGridView แล้วเขียนคำสั่งดังนี้ ** คำสั่ง Windows ปกติ

Imports System.Data
Imports System.Data.SqlServerCe
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ConnStr As String = "Data Source = d:\myData.sdf;" & _
                                "File Mode=Shared Read;Persist Security Info=False"
        Dim sql As String = "select * from tblProduct"
        Dim connection As New SqlCeConnection(ConnStr)
        Dim da As New SqlCeDataAdapter(sql, connection)
        Dim ds As New DataSet()
        connection.Open()
        da.Fill(ds, "tblProduct")
        connection.Close()
        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "tblProduct"
    End Sub
End Class


ในส่วนนี้ ผู้เขียนขอไม่อธิบายในรายละเอียด เนื่องจากเป็นการติดต่อกับฐานข้อมูลที่เหมือนกับตอนเราเขียนแบบ Windows CE  เมื่อเขียนเสร็จให้ทดสอบรันโปรแกรม


ไม่ยาก สำหรับใครที่สนใจ Windows CE
สวัสดี เดือน กันยายน ฝนมาเยอะจัง
"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.