ข้ามไปที่เนื้อหาหลัก

ตั้งค่า Windows Mobile 6 Emulator ให้ติดต่อกับ Database SQL Server 2008 ได้


OS : Win 7 x64 Professional
IDE : Visual Studio 2008 Professional
EMU : Windows Mobile 6.1 SDK Professional
Framework : .NET Compact Framework 3.5
DB : MSSQL Server 2008 Professional

     จากบทความ เขียนโปรแกรม Visual Studio 2008(.NETCF3.5) กับ Windows Mobile 6 ติดต่อกับ Database MSSQL Server 2008 โดยตรง (ไม่ได้ใช้ SQLCE)  ที่สามารถRun ให้ pocket Device เชื่อมต่อกับ Database SQL server ได้โดยตรง ไม่ต้องผ่าน SQLCE แล้ว แต่พอกลับมา Run บน Windows Mobile 6 EMu ดันใช้ไม่ได้ซะงั้น ทั้ง ๆ ที่สามารถ Access File บนเครื่อง Server และเล่น Internet ได้แล้วแท้ ๆ


ใช้กับ PDA BlueBird ดึงข้อมูลมาใส่ DataGrid ได้ปกติ 

เสียเวลาไป 5 ชม. จากการหาคำตอบจากอากู๋ ซึ่งได้รับคำแนะนำที่หลากหลาย เลยจะเรียบเรียง ส่วนหัวข้อที่จำเป็นต้องทำมาใส่ไว้ใน Blog เพื่อเผยแพร่เป็นวิทยาทาน (และกันตัวเองลืมเอง) เริ่มทำตามนี้

1. ต้องทำให้ตัว EMulator ติดต่อกับ Network ได้โดยตรง ไม่ต้องผ่าน ActiveSync ก่อน โดยไปที่หน้าต่างของ Emulator (ถ้าไม่เจอก็ run project ค้างไว้ ให้มีขึ้นหน้าต่างของ EMU) เลือกเมนู File->Configuration เพื่อเข้าหน้าจอ Configuration


เข้า menu config ที่หน้าจอ emulator

2. ที่ tab "Network" ให้ Check ที่ "Enable NE2000 PCMCIA Network adapter and bind to" แล้วพอกดตกลงมันจะไม่ Save แล้วฟ้องว่า ไม่ได้ติดตั้ง Virtual PC แล้วมี Link ให้เสร็จสรรพ


ติ้กถูก Enable แล้วกด OK มันจะไม่ให้ Save

เข้าไป Download VirtualPC ได้ ที่นี่  มันจะเป็น Version 2007SP1 (Windows Virtual PC ที่ให้มากับ Windows 7 ใช้ไม่ได้ต้องติดตั้งใหม่ แล้วถ้าใช้ Windows 64 Bit แนะนำให้ download 32 bit มาด้วย)

3. ถ้าเป็น Win7 x64 ให้ติดตั้ง Virtual PC 2007SP1 ตัว 64 bit ก่อนมันจะฟ้อง Error ตั้งแต่ขั้นตอนแรกเลย ตัว Setup Wizard ยังไม่มาด้วยซ้ำ ถ้าเกิดอย่างนั้นให้ติดตั้งตัว 32 bit แล้วหน้าจอ Setup Wizard จะใช้ได้ แต่มันไม่ยอมติดตั้งให้บอกว่าไม่ Support 64 bit แล้วค่อยกลับมาติดตั้งตัว 64 bit อีกรอบ คราวนี้ผ่านชัวร์ (อาจต้อง restart)

4. กลับไปที่หน้าจอ WinMo 6Emulator ไปติ๊ก Enable NE2000 bind to พอกด OK จะเห็นว่ามันไม่ฟ้อง Error แล้ว คราวนี้ก็ Set ค่าที่ตัว WinMo ให้เล่นเนต และ เข้า share folder ได้ เพื่อยืนยันว่ามันต่อ network แน่นอนแล้ว ที่ต้อง set ก็ตามด้านล่าง 

4.1 ที่หน้า Home ไปที่่ Setting->Connection->Network Card เลือก "My Network Card connect to" เป็น Internet


เลือก "My Network Card connect to" เป็น Internet

4.2 คลิ้กที่ NE2000 Compatible Ethernet Adapter เพื่อเข้าไป Set ค่า IP Address, DNS, และ Gateway


Set ค่า IP Address, DNS, และ Gateway

4.3 กลับไปหน้า Home แล้วไปที่ Setting->Connections->Connections->Advanced-> Select Network เลือก Network Management ส่วนของ Connect to the internet และ Connect to private network ให้เป็น "My Work Network" ทั้งคู่


เลือก Network Management ส่วนของ Connect to the internet และ Connect to private network ให้เป็น "My Work Network" ทั้งคู่

4.5 ที่หน้า Network Management ส่วนของ Connect to the internet ให้คลิ้่ก Edit -> Proxy Settings แล้วติ๊กถูกที่ "This network connects to the Internet"


เลือก "This network connects to the Internet"


5. ลอง Test ดูว่าเข้า Internet และเข้าส่วน file sharing ของ windows ได้หรือเปล่า


ทดสอบต่อ Internet ด้วยการเปิด google

ทดสอบเข้าใช้ File Sharing จากเครื่อง Server (เข้าด้วย IP ไม่ได้ ต้องเข้าด้วยชื่อ ประหลาดแท้) 

6. คราวนี้ลอง Run โปรแกรมเพื่อทดสอบว่าเชื่อมต่อกับ SQL Server ได้หรือยัง ปรากฏว่า ยังไม่ได้แฮะ

ใช้ Data source เป็น IP Address ขึ้น Error Platform Exception 

พอเปลี่ยน Data Source เป็นชื่อเครื่อง Error ก็เปลี่ยนเป็น SqlException 

ที่น่าสงสัยก็คือ ตอน Run กับตัว Pocket Device BlueBird ก็ไม่เกิด Error ใด ๆ ทั้งแบบใช้ IP Address และ แบบใช้ ชื่อเครื่อง แสดงว่า ตัว Pocket Device มันต้องมีอะไรแตกต่างจากตัว Emu เป็นแน่ ลองถามอากู่ถึง Error ทั้งสองแบบหมดไปกว่า 2 ชม.ก็เจอประเด็นเกี่ยวกับ Error "PlatformnotFoundException" ที่นี่  
เมื่อลองตรวจสอบแล้วพบว่าเป็นปัญหาเกี่ยวกับเรื่อง Callation หรือประมาณเรื่องการรองรับภาษาของตัว Database คร่าว ๆ ว่าให้แก้เป็น Latin หรืออะไรสักอย่าง แต่ database เราเป็น Thai (ซึ่งก็ควรเป็นอย่างนั้น)


Database Collation เป็น Thai_CI_AS

แล้วก็เอะใจไปเห็นตัว Pocket Device มันติดตั้ง Program "PDAMobizThaiEnabled" เอา ประมาณว่าลงภาษาไทยให้เครื่องจากการวิเคราะห์แล้วน่าจะเกิดจากปัญหาWinMo 6 Emu ไม่ได้ลงภาษาไทย จึงไม่รอช้าจัดการติดตั้งเข้าไปโลด เย้.....................ใช้ได้แว้วววววววววววววววว.....................


ใช้ Data Source เป็น IP Address สามารถดึงข้อมูลจาก SQL Server มาใส่ใน Grid ได้อย่างสวยงาม (แต่พอเปลี่้ยน Data Source เป็นชื่อกลับ Error ซะงั้น)

ความคิดเห็น

  1. ถูกใจ ใช้ได้ผล ก็กด LIKE & Share ได้นะคร้าบบบบ....

    ตอบลบ
  2. ผมลง Microsoft Virtual PC 2007 SP1 แล้วแต่ยัง Enable NE2000 PCMCIA Network adapter ไม่ได้ มันถามหา Visual PC 2007 อีกเหมือนเดิมครับ ต้องตั้งค่า Visual PC 2007 ด้วยไหมครับ
    ลองทำดูหลายรอบลบลงใหม่ก็ไม่ได้เหมือนเดิม ลองจนปวดตับเลย ครับ 555

    ตอบลบ
    คำตอบ
    1. พรุ่งนี้ช่วงบ่ายว่าง เดี๋ยว remote ไปดูให้นะครับ

      ลบ
    2. OK ครับพร้อมทั้งวันเลยครับผม

      ลบ
    3. ตอนนี้ใช้ได้หมดแล้วครับทั้ง Emulator และ device ผมลงตามนี้เลยครับ http://www.petenetlive.com/KB/Article/0000241.htm อิอิ

      ลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

C# Databinding เทคนิคกรอง combobox OrderNo ที่มีการ Invoice แล้ว (How to refresh OrderNo list in combobox binding after invoiced without left outer join method)

เขียนโปรแกรมรับ Order และจ่าย Invoice เงื่อนไขคือ OrderNo จะต้องแสดงเฉพาะ OrderNo ที่ยังไม่ได้ผูกกับ Invoice เท่านั้น วิธีการที่เคยทำได้แก่ 1. ทำ Orders Left Outer Join Invoice เอาเฉพาะ Order ที่ยังไม่มีเลข Invoice ออกมา (ตามตำรา) - ถ้าไม่เขียน sql query ตอนสั่ง sqlselect command ก็ต้องไปใช้ LINQ to Object แล้วเอามา rebinding combobox.datasource ใหม่ เพราะ datasource ที่ผูกไว้กับ combobox มันไม่ refresh เช่น cboOrderNo.datasource.Clear; cboOrderNo.datasource = newList(); 2. เพิ่ม flag field ที่ table Orders ถ้ามีรับ invoice แล้ว ให้ flag = 1 แล้วใช้ dtOrder.defaultview.rowfilter = "flag=1"; ข้อมูลใน combobox จะไม่ต้อง rebinding อันนี้เห็นมาจากระบบอื่น 3. ใช้ Rowfilter = "Child(relation).Order = null" แต่วิธีนี้ใช้ไม่ได้ เพราะ Rowfilter จำกัดให้ใช้ได้เฉพาะ Parent เพราะถ้าเป็น Child แล้วจะ return หลายตัว ตามข้อมูลจาก link นี้ แต่อ้างอิงเป็นกลุ่มเช่น Sumchild(relation).Qty >20 ได้ เห็นแล้วก็นึกถึงไอเดียบรรเจิด ใช้ Rowfilter = Count(Child(relation)) <0 แ...

เทคนิคการสอบใบขับขี่รถยนต์ ท่าจอดรถเทียบฟุตบาทห่างไม่เกิน 25cm ด้วย "Sticker"

วันนี้พาพี่ที่บ้านไปสอบใบขับขี่รถยนต์ครั้งที่ 3 ซึ่งสอบตกท่าจอดรถเทียบฟุตบาท โดยคนขับรถเป็นแล้วจะรู้สึกว่าไม่เห็นจะยากตรงไหน แต่สำหรับคนที่เพิ่งหัดขับรถ ประกอบกับได้จับรถป้ายแดงที่เพิ่งถอยออกมาขับได้ ไม่ถึง 5 ชม. นั้นเป็นเรื่องที่ยากจะทำได้ ผมคนหนึ่งที่ได้ใบขับขี่มานาน แต่พอให้มาขับจอดเทียบฟุตบาทด้วยรถป้ายแดงใหม่เอี่ยมของคนอื่นแล้ว มีอันต้องจอดห่างทุกที ด้วยเวลาในการซ้อมขับที่เหลือไม่ถึง 3 ชม. ก่อนสอบจริง ทำให้ต้องคิดหาเทคนิควิธีต่าง ๆ ที่จะทำได้ใบขับขี่มา (เพราะเหนื่อยกับความพยายามสอบมา 2 ครั้งแล้ว) จนทำให้คิดเทคนิค "Sticker" นี้ขึ้นได้ โดยปกติแล้วถ้าขับรถจอดเทียบฟุตบาทแล้วพยายามมองกระจกข้างให้ล้อหลังชิดเส้นขอบพอดี ผลออกมาจะทำให้ล้อหน้าปีนฟุตบาท ไอ้ครั้นจะให้พี่ที่เพิ่งหัดขับรถมาได้ไม่ถึง 8 ชม. กะขนาดตัวรถให้ได้ (ซึ่งขนาดผมเองยังคงกะลำบาก) ภายในสิบห้านาทีนั้นโอกาสเป็นไปได้ยากมาก ด้วยการทดลองเทคนิคต่าง ๆ หลาย ๆ แบบ ที่พอจะนึกออกจากประสบการณ์และเวลาอันสั้นรวบรัด ก็ทำให้เกิดแนวคิดที่ว่า ทำอย่างไรให้สามารถมองล้อหน้าว่าติดเส้นขอบหรือเปล่า ได้เหมือนกับที่ใช้กระจก...

เขียนโปรแกรม Visual Studio 2008(.NETCF3.5) กับ Windows Mobile 6 ติดต่อกับ Database MSSQL Server 2008 โดยตรง (ไม่ได้ใช้ SQLCE)

รับ Requirement ให้เขียนโปรแกรมบน Windows Mobile 6 ติดต่อกับ Database MSSQL Server 2008 โดยตรง ตอนแรกก็ลองใช้ SQLCE แต่เท่าที่ดูมันไม่ได้เชื่อมต่อ กับ Database Server แต่มันใช้ Database ในเครื่อง Pocket PC แทน ซึ่งไม่ตรงกับ Requirement นัก เลยลองเขียนโปรแกรมเชื่อมต่อไปยัง SQL Server ตรง ๆ กับปรากฏว่า import System.data.SqlClient ไม่ได้ หาไปหามา พบว่า SqlClient มันอยู่ในไฟล์ System.Data ใน VS2008 ซึ่งถ้าใช้ .NETCF 3.5 มันไม่มีให้ใช้ ลองถามอากู๋ดูก็พบว่ามีคนเขียนแล้วใช้ได้ เลยสงสัยว่าใช้ได้ยังไง หมดไป 1 วันก็พบว่าเขา Add Reference file "System.data.SqlClient.dll" มาใช้กัน ซึ่งเป็นของ "VS2005" ถ้าเป็น VS2008 มันเอาไปรวมใน System.Data.dll แล้ว หมดสิทธิ์ใช้งานนะจ๊ะ ครั้นลองเอา System.data.dll ของ .NET framework ตัวเต็มมา Add ใส่แทนที่ ผลปรากฏว่าพังไม่เป็นท่าเลย หลังจากถอดใจแล้วผลอยหลับไปงีบ ตื่นมาก็อาศํยสิ่งศักดิ์สิทธิ์เสียหน่อย ท่องคาถาให้งานราบรื่น ปรากฏว่า "สิ้งศักดิ์สิทธิ์มีจริง ไม่เชื่ออย่าลบหลู่" ไปเจอ Link (ลิงก์พังแล้ว) นี้   ซึ่งม...