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.