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
สวัสดี เดือน กันยายน ฝนมาเยอะจัง

31 กรกฎาคม 2555

เรียน HTML5 แบบกล้วยๆ (ตอน 4 และ 5)

สอน HTML5 - 4 - การใช้ CSS กำหนดการพิมพ์



สอน HTML5 - 5 - รู้จักกับ META Tag




แล้วพบกันตอนต่อไป กับการเรียนรู้ เรื่อง Element , Attribute และ Attribute Value

08 กรกฎาคม 2555

เรียน HTML5 แบบกล้วยๆ

มาเริ่มต้นเรียนรู้การเขียน HTML5 กัน จัดให้เป็น Video ตอนนี้เสนอตอนแรก
ทำความรู้จักกับ HTML5 กับ TAG พื้นฐาน

HTML5 - ตอนที่ 1 - Introduction


HTML5 - ตอนที่ 2 - CSS3 กับการจัดรูปแบบหน้าเว็บ



HTML - ตอนที่ 3 - HTML tag กำหนดรูปแบบของบทความ



จ.ด.ท = จด ดู ทำ แล้วจะ จำ ได้ ท่าน 

20 มิถุนายน 2555

จัดการเรื่องการพิมพ์หน้าเว็บด้วย CSS

หลายท่านเคยใช้ Web Browser แล้วต้องสั่งพิมพ์หน้าเว็บนั้นออกทางเครื่องพิมพ์ เมื่อพิมพ์ออกมาจะปรากฏทุกอย่างบนหน้าเว็บนั้น ไม่ว่าจะเป็น เมนู โฆษณา ภาพกราฟฟิก และอื่นๆอีกจะปาถะ ซึ่งบางส่วนเราไม่ต้องการ ดังนั้นถ้าเราเป็นคนเขียนเว็บ เราจะทำอย่างไรเมื่อเวลาสั่งพิมพ์ แล้วให้พิมพ์เฉพาะข้อมูลที่ต้องการเท่านั้น เราสามารถทำได้โดยอาศัย CSS เข้ามาช่วยในการกำหนดรูปแบบของการพิมพ์ ไม่ว่าจะเป็น ฟอนต์ สีสัน หรือขอบเขตของข้อมูลที่ต้องการ เป็นต้น สำหรับบทความนี้จะนำเสนอเฉพาะเอกสาร HTML เท่านั้น (ส่วน ASP.NET ก็จะคล้ายกันแต่มีรายละเอียดเพิ่มเติมอีกนิดหน่อ จะยังไม่ขอกล่าวในตอนนี้)

ตัวอย่าง คำสั่ง HTML 5























ตัวอย่าง คำสั่ง CSS

ไฟล์ชื่อ stylesheet.css จะแสดงรายการของ Header ออกมาที่หน้าจอ

header {
        color:blue;
        background-color:yellow;
       }

ไฟล์ชื่อ printstylesheet.css จะไม่แสดงรายการของ Header ออกมาเมื่อทำการพิมพ์

header {
        visibility:hidden; 
        width:0px;
        height:0px;
       }

จากนั้น เมื่อทำการพิมพ์ผลออกทางเครื่องพิมพ์ จะไม่ปรากฎในส่วนที่ถูกกำหนดให้ visibility:hidden

26 พฤษภาคม 2555

VB.NET แสดงสถานะปุ่มเปลี่ยนภาษา Grave Accent ( ~ )

การเขียนคำสั่งเพื่อแสดงสถานะของภาษาบนแป้นพิมพ์ (keyboard) ที่ใช้อยู่ สามารถทำได้โดยอาศัยการตรวจสอบการกดปุ่ม Grave Accent ( ~ ) จาก Procedure ของฟอร์ม ชื่อ InputLanguageChanged ตามตัวอย่างด้านล่าง (Source Code from : http://songkwae.com/foxboard/display_topic_threads.asp?ForumID=3&TopicID=3815&PagePosition=1) ดังนี้

วิธีที่ 1 ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged

    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString
End Sub
วิธีที่ 2 อาศัยเรียกใช้จาก user32 ให้ทำการ Import คลาสเข้ามาใช้งาน
Imports System.Runtime.InteropServices
จากนั้นสร้าง Function ชื่อ GetKeyBoardLayoutName
   _
  Private Shared Function GetKeyboardLayoutName _
         (ByVal sb As System.Text.StringBuilder) As Integer
     'ไม่ต้องใส่อะไร
    End Function
ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString
End Sub
สำหรับวิธีที่ 2 การแสดงผลจะเป็นรหัส เช่น ' ไทย -- 0000041E ' English -- 00000409 หวังว่าคงเป็นประโยชน์.... สวัสดี คนไทยไม่ทิ้งกัน

03 พฤษภาคม 2555

VB.Net ค้นหาข้อมูล

บทความนี้นำเสนอการสร้างฟอร์มค้นหาข้อมูล โดยทำการสร้างฟอร์มขึ้นมาแล้วค้นข้อมูลจากตารางในฐานข้อมูล SQL Server จากนั้นนำข้อมูลที่ค้นได้มาแสดงในกริด เมื่อผู้ใช้ DoubleClick เลือกที่แถว ให้ทำการส่งค่ารหัสในแถวที่เลือกกลับไปยังฟอร์มหลัก

เริ่มทำฟอร์มสอบถามข้อมูล
ให้สร้างฟอร์มที่ Visual Studio ขึ้นมาใหม่ แล้วตั้งชื่อฟอร์มว่า frmInquiry จากนั้นให้สร้างคอนโทรลต่างๆ ตามภาพแล้วกำหนด property ดังนี้



ป้อนคำสั่งที่ frmInquiry.vb ดังนี้
Imports System.Data
Imports System.Data.SqlClient

Public Class frmInquiry
    ' ตัวแปรที่ใช้ใน Property [AssCode]
    Dim rAssCode As String = " "

    Private Sub frmInquiry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        queryData()
        'สลับสีของแถว 
        DataGridView1.RowsDefaultCellStyle.BackColor = Color.White
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Azure

        With DataGridView1
            .DefaultCellStyle.NullValue = ""
            .Columns(0).HeaderText = "รหัสสินทรัพย์"
            .Columns(0).Width = 100
            .Columns(1).HeaderText = "รายการ"
            .Columns(1).Width = 200
            .Columns(2).HeaderText = "หน่วยนับ"
            .Columns(2).Width = 80
        End With
    End Sub
    Private Sub txtSearch_TextChanged(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) Handles txtSearch.TextChanged
        queryData()
    End Sub
    Private Sub DataGridView1_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
        Dim row As Integer = DataGridView1.CurrentCellAddress.Y
        AssCode = DataGridView1.Rows(row).Cells(0).Value   'Cell(0) คือ คอลัมแรกของกริดนับจากซ้ายมือ
        Me.Close()
    End Sub
    Sub queryData()
        'ให้ทำการแก้ไข Connection String ตามที่เราใช้งานอยู่
        Dim connString As String = "Data Source=.;Initial Catalog=ชื่อฐานข้อมูล;Persist Security Info=True;User ID=sa;Password=รหัสผ่าน"

        Dim myConn As SqlConnection = New SqlConnection
        myConn.ConnectionString = connString

        'ให้แก้ไขคำสั่ง SQL ตามที่ต้องการ
        Dim da As SqlDataAdapter = New SqlDataAdapter _
                       ("SELECT TOP 50 ASSCODE, NAME, UMCODE  FROM ABASSET WHERE ASSCODE+NAME LIKE '%" & txtSearch.Text.Trim & "%'  ORDER BY ASSCODE", myConn)
        Dim ds As DataSet = New DataSet
        da.Fill(ds, "ABASSET")
        myConn.Close()

        DataGridView1.DataSource = ds.Tables(0)
    End Sub
    '' หากมีการส่งคืนหลายค่า ก็สร้าง Property เพิ่ม
    Public Property [AssCode]() As String
        Get
            Return Me.rAssCode
        End Get
        Set(ByVal value As String)
            Me.rAssCode = value
        End Set
    End Property
End Class
ต่อมาเราจะมาทำฟอร์มหลัก สำหรับเรียกฟอร์มค้นหา

เริ่มทำฟอร์มหลัก

ที่ฟอร์ม Form1 ให้สร้างคอนโทรลต่างๆ ดังภาพ

จากนั้นทำการป้อนคำสั่งที่ form1.vb ดังนี้

Public Class Form1
    Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        Dim fm As New frmInquiry()
        fm.ShowDialog()
        If fm.AssCode.ToString <> "" Then
            txtAssCode.Text = fm.AssCode.ToString  'อ้างถึง property ชื่อ [AssCode] ของฟอร์ม frmInquiry
        End If
        fm.Dispose()
        txtAssCode.Focus()
End Sub
End Class
ทำการเรียกฟอร์มขึ้นมาทำงาน โดยกดปุ่ม F5 เพื่อรันโปรเจกต์
เมื่อปร่กฎหน้าจอ Form1 ให้คลิกปุ่ม ... ที่ฟอร์ม แล้วทดสอบดู ตามตัวอย่างดังภาพ


24 เมษายน 2555

VB.Net Google Maps ตอนหาค่า Latitude และ Longitude

หลังจากที่ได้ทำการเขียนเรื่อง Google Maps ในตอนแรกแล้ว มีผู้อ่านบางท่านสนใจที่จะหาตำแหน่ง Latitude และ Longitude จากที่อยู่ ว่าทำได้หรือไม่ เผอิญมีตัวอย่างที่เว็บต่างประเทศเขาทำไว้น่าสนใจ เลยนำมาทำเป็นในรูปแบบไทย ๆ ให้ผู้สนใจได้ทำการศึกษาและนำไปต่อยอดตามต้องการ
(Source : http://www.vbdotnetheaven.com/uploadfile/scottlysle/geocode-an-address-using-visual-basic-and-google-maps/ )

1. หลังจากที่เราสร้างโปรเจกต์เรียบร้อย ที่หน้าจอ Form1 ให้ทำการเพิ่มคอนโทรลเข้าไปดังภาพ






















2. ให้คลิกเมาส์ 2 ครั้ง (double Click) ที่ปุ่ม Get GeoCode (Button1) แล้วเปลี่ยนคำสั่งในฟอร์มทั้งหมดให้เป็น ดังนี้

Imports System.IO
Imports System.Net
Imports System.Web
Imports System.Collections.Generic
Imports System.ComponentModel

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim ll As New LatLon()
            ll = GetLatLon(txtAddress.Text)
            txtLatLon.Text = ll.Latitude.ToString() & ", " & ll.Longitude.ToString()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "An error has occurred")
        End Try
    End Sub
    Public Function GetLatLon(ByVal addr As String) As LatLon
        Dim url As String = "http://maps.google.com/maps/geo?output=csv&" & _ 
                            "key=[YOUR KEYGOES HERE]&q=" & addr
        Dim request As System.Net.WebRequest = WebRequest.Create(url)
        Dim response As HttpWebResponse = request.GetResponse()
        If response.StatusCode = HttpStatusCode.OK Then
            Dim ms As New System.IO.MemoryStream()
            Dim responseStream As System.IO.Stream = response.GetResponseStream()
            Dim buffer(2048) As Byte
            Dim count As Integer = responseStream.Read(buffer, 0, buffer.Length)
            While count > 0
                ms.Write(buffer, 0, count)
                count = responseStream.Read(buffer, 0, buffer.Length)
            End While
            responseStream.Close()
            ms.Close()
            Dim responseBytes() As Byte = ms.ToArray()
            Dim encoding As New System.Text.ASCIIEncoding()
            Dim coords As String = encoding.GetString(responseBytes)
            Dim parts() As String = coords.Split(",")
            Return New LatLon(Convert.ToDouble(parts(2)), Convert.ToDouble(parts(3)))
        End If
        Return Nothing
    End Function

End Class

3. ไปที่เมนู Project เลือกรายการ Add Class...
จากนั้น ป้อนชื่อคลาส ->  LatLon.vb  แล้วคลิก Add
จากนั้น พิมพ์คำสั่งภายใต้คลาด LatLon ดังนี้

Public Class LatLon
    Public Property Latitude As Double
    Public Property Longitude As Double
    Public Sub New()
    End Sub
    Public Sub New(ByVal lat As Double, ByVal lon As Double)
        Me.Latitude = lat
        Me.Longitude = lon
    End Sub
End Class


หลังจากนั้นให้กดปุ่ม F5 เพื่อทำการทดสอบโปรแกรม จะปรากฏหน้าต่างให้เราป้อนที่อยู่ที่ต้องการ ดังภาพ

เราก็สามารถนำค่าของ Latitude และ Longitude ไปใช้งานได้ตามต้องการ

อะไรเอ่ย หาไม่ยาก ตอบ หายี่ห้อโทรศัพท์
แต่หากจะหาคนส่งภาพในสภา นี่สิหายากที่สุด

11 เมษายน 2555

VB.Net การสร้างรายงานตอนที่ 2

     การสร้างรายงานในตอนที่ 2 นี้จะนำเสนอวิธีการกรองข้อมูลตามช่วงข้อมูลที่กำหนด แล้วนำมาออกรายงาน เราจะได้เรียนรู้วิธีการสร้าง Quey ภายใต้ DataSet และการเรียกใช้ ตลอดจนการอ้างถึงรายงานจากภายนอกด้วยการเขียนโปรแกรม เพื่อนำรายงานมาแสดงในคอนโทรล ReportViewer
     หากยังไม่เคยดูการสร้างรายงาน ตอนที่ 1 กรุณากลับไปศึกษาให้เข้าใจก่อนแล้วกลับมาดูวีดีโอนี้อีกครั้ง




โค้ดคำสั่ง VB.Net

Imports Microsoft.Reporting.WinForms

Public Class Form2
      Private adapter As dsABACUSTableAdapters.ABAssetTableAdapter = New   _
                              dsABACUSTableAdapters.ABAssetTableAdapter()
      Private table As New dsABACUS.ABAssetDataTable()
      Private MyNewDataSource As New ReportDataSource("DataSet1",  _
                                                                 DirectCast(table, DataTable))
      Private Sub btnRun_Click(ByVal sender As System.Object,  _
                                                 ByVal e As System.EventArgs) _
                                                 Handles btnRun.Click
           adapter.FillByType(table, txtFrom.Text.ToString.Trim, txtTo.Text.ToString.Trim)
           Me.ReportViewer1.LocalReport.ReportPath = ".\Reports\rptABAsset.rdlc"
           Me.ReportViewer1.LocalReport.DataSources.Clear()
           Me.ReportViewer1.LocalReport.DataSources.Add(MyNewDataSource)
           Me.ReportViewer1.LocalReport.Refresh()
           Me.ReportViewer1.RefreshReport()
     End Sub
End Class

สวัสดี สงกรานต์ปีนี้ ไม่ต้องไปฟ้องครู "อังคณา" .... น่ะ

22 มีนาคม 2555

VB.Net การสร้างรายงาน ตอนที่ 1

บทความนี้ทำเป็นวีดีโอ นำเสนอวิธีการสร้างรายงาน โดยใช้ Visual Studio 2010 ไม่เจาะจงภาษาใดๆ เลย เพราะตัวรายงานที่สร้างยังไม่มีการเขียนโค้ดคำสั่ง ดังนั้นทุกท่านสามารถทำตามได้ทันที



สำหรับตอนต่อไป จะเรียนรู้วิธีการส่งค่าพารามิเตอร์ เพื่อกรองข้อมูลที่ต้องการ

สวัสดีประเทศไทย ช่วงนี้ร้อนจริงๆ

16 มีนาคม 2555

VB.Net Pass Value Between From ส่งค่าผ่านระหว่างฟอร์ม

เมื่อเราเขียนโปรแกรม แล้วมีฟอร์มหลายๆ ฟอร์ม หากต้องการส่งผ่านค่า จากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง สามารถทำได้ดังนี้

1. ให้สร้างฟอร์มขึ้นมาเป็นฟอร์มหลัก เช่น ต้องการส่งค่า TextBox จากฟอร์มที่สร้างขึ้นนี้ไปให้อีกฟอร์มหนึ่ง ให้กำหนดคอนโทรลดังภาพ
















2. ดับเบิ้ลคลิกที่ ปุ่ม Button1 (Send)  เพื่อเข้าไปป้อนคำสั่ง ให้ป้อนดังนี้

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _ 
                ByVal e As System.EventArgs) Handles Button1.Click
        Dim fm2 As Form2 = New Form2
        fm2.ValueToPassBetweenForms1 = Me.TextBox1.Text
        fm2.ShowDialog()
    End Sub
End Class

3. ให้สร้างฟอร์มขึ้นมาอีกหนึ่งฟอร์มเป็นฟอร์มสำหรับรับค่า แล้วกำหนด คอนโทรลดังภาพ

















4. ดับเบิ้ลคลิกที่ฟอร์มเพื่อเข้าไปป้อนคำสั่ง ให้ป้อนดังนี้

Public Class Form2
    Inherits Form

    Public Sub New()
        MyBase.New()
        InitializeComponent()

        AddHandler Load, AddressOf Me.Form2PassValue_Load

    End Sub

    Private Sub Form2PassValue_Load(ByVal sender As Object, _
                ByVal e As EventArgs)
        Me.Label1.Text = Me._valueToPassBetweenForms1
    End Sub

    Private _valueToPassBetweenForms1 As String

    Public Property ValueToPassBetweenForms1() As String
        Get
            Return Me._valueToPassBetweenForms1
        End Get
        Set(ByVal value As String)
            Me._valueToPassBetweenForms1 = value
        End Set
    End Property

    Private Sub Button1_Click(ByVal sender As System.Object, _ 
                ByVal e As System.EventArgs) Handles Button1.Click

        Me.Dispose()
    End Sub
End Class

จากนั้นทำการ กดปุ่ม F5 เพื่อสั่งรันฟอร์ม ทดสอบสิ่งที่ทำไว้

ผลัดกันส่งไปส่งมา พาชาติเจริญ

03 กุมภาพันธ์ 2555

VB.Net Google Maps

การทำแผนที่หาตำแหน่งตามต้องการด้วย VB.Net ก่อนอื่นเราต้องหาตำแหน่งให้ได้ก่อน
วิธีหนึ่งที่เราจะหาพิกัดในแผนที่ สามารถทำได้โดยเปิด Browser แล้วเข้าไปที่เว็บไซต์
http://maps.google.co.th/
จากนั้นทำการซูมแผนที่จนได้ตำแหน่งที่ต้องการ แล้วทำดังนี้
1. คลิกเมาส์ปุ่มขวา ณ. ตำแหน่งที่ต้องการทราบพิกัด แล้ว เลือกรายการนี่คืออะไร
2. จะปรากฏเลขพิกัด ลองติจูด, ละติจูด ปรากฏขึ้นตามภาพด้านล่าง






























สร้างฟอร์มแสดงแผนที่ ด้วย VB.Net
1. เปิดโปรแกรม Visual Studio 2010 แล้วสร้างโปรเจกต์ใหม่ โดย
    - คลิกเลือกเมนู File เลือกรายการ New Project...
    - ที่หน้าต่าง New Project เลือก Windows Form Application จาก Visual Basic -> Windows
    - ที่ช่อง New ในหน้าต่าง New Project ให้ตั้งชื่อตามต้องการ

2. ให้สร้างฟอร์มดังภาพ

























กำหนด Property ของคอนโทรลต่างๆ ดังนี้
Label1 : Text = Latitude
Label2 : Text = Longitude
Textbox1 : (Name) = txtLatidude
Textbox2 : (Name) = txtLongitude
Button1(Name) = btnSearch
                  Text = Search
WebBrowser1 : (Name) = WebBrowser1

ดับเบิ้ลคลิกที่ปุ่ม btnSearch แล้วเข้าไปเขียนโค้ดคำสั่ง ดังนี้

Imports System.Text

Public Class Form1
 Private Sub btnSearch_Click(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) _
          Handles btnSearch.Click
  Try
    Dim latitude As String = ""
    Dim longitude As String = ""
    Dim AddrToSearch As New StringBuilder()
    AddrToSearch.Append("http://maps.google.com/maps?output=embed&hl=th&q=")
    ' if there is latitude
    If txtLatitude.Text <> "" Then
       latitude = txtLatitude.Text
       AddrToSearch.Append(latitude & "%2C")
    End If
    ' if there is longitude
    If txtLongitude.Text <> "" Then
       longitude = txtLongitude.Text
       AddrToSearch.Append(longitude)
    End If
    ' pass the AddrToSearch value to web browser control
    WebBrowser1.Navigate(AddrToSearch.ToString())
  Catch ex As Exception
    MessageBox.Show(ex.Message.ToString(), _
                    "Problem encountered while retrieving google map")
  End Try
 End Sub
End Class

ทำการเรียกฟอร์มที่เขียนไว้ให้ทำงาน โดยกดปุ่ม F5 จะปรากฎหน้าต่างของโปรแกรมให้ทำการป้อนค่าของพิกัด โดยใส่ ลองติจูดและ ละติจูด ที่ได้จากการหาตำแหน่งในตอนแรก แล้วคลิกปุ่ม Search จะปรากฏแผนที่แสดงตำแหน่งดังภาพ



























เราสามารถนำไปประยุกต์ใช้งานได้หลากหลาย สามารถนำไปใช้กับเว็บ นำไปใช้กับอุปกรณ์ GPS และอื่นๆ อีกมากมาย

หากต้องการ หาตำแหน่ง พิกัด ลองติจูด, ละติจูด จาก ที่อยู่ สามารถดูได้จาก บทความตามลิงค์ด้านล่างนี้
http://kasem-mesak.blogspot.com/2012/04/vbnet-google-maps-latitude-longitude.html

3 กุมภาพันธ์ วันทหารผ่านศึก
"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.