หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 2 8 4 6 0

7 ธันวาคม พ.ศ.2549
238 Users On-Line.
Visitors - Page views
 8 4 2 4 4 9 9
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

VB.Net กับการเชื่อมต่อฐานข้อมูล MS Access แบบกำหนด Path ปัจจุบัน

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 23/7/2552   เวลา: 14:54
(อ่าน : 53249) 
"เล็กนิ่ม - Microsoft" คงเห็นว่าเทคโนโลยี Dot Net มันเป็นแบบไฮโซ หรือ ระบบหัวสูง จำต้องสวาปามทรัพยากรระบบเยอะๆเข้าไว้ นอกจากนั้นยังไม่พอ การจะมาเชื่อมต่อฐานข้อมูล Access ดูจะเป็นการเสื่อมสง่าราศี และ ลดความขลังของ Dot Net ลงไป ลุงเกตต์จึงตัดสินใจให้ไม่มีคำสั่ง App.Path ดังเช่นที่มีอยู่ใน Visual Basic เดิม ... ข้าทาสเทคโนโลยี MS อย่างพวกเอ็งต้องใช้กับ MS SQL เท่านั้น (โว้ย) ของฟรีรุ่น Express ก็มีแจกให้ เพื่อจะได้ไม่ต้องมาระบุ Path ไงล่ะ ... ปัญหาที่เกิดขึ้นทำให้เวลาจะเขียนโปรแกรม VB.Net ติดต่อ Access ทีไร เราก็ต้องมาระบุ Path แบบตรงๆเท่านั้น เช่น C:\MyProject\MyDB.MDB ไม่สามารถกำหนดแบบ Relative Path ได้เลย ทำให้ตอนติดตั้งในเครื่องที่ใช้งานจริงๆ (Client) อาจจะมีปัญหาเกิดขึ้นมาได้ ... ไม่รู้ว่าบทความชิ้นนี้จะเย้ยหยันสาวก VB.Net มากเกินไปหรือเปล่าเนี่ย เพราะผมค้นหาข้อมูลไม่เจอสักแห่งเลยในโลก มันน่าจะมีบอกไว้บ้างน่ะ ... ก้ากกกกกกๆๆๆ ... คิกๆๆๆๆๆ
ปล. หมายเหตุ ... พี่น้องชาว VB6 ก็อย่าพึ่งตกใจไป ผมยังไม่ย้ายขึ้นสู่ .NET ง่ายๆหรอกครับ
    หลักการ และ แนวคิด
  • จากที่ใช้คำสั่งสารพัด Path เช่น Application.ExecutablePath, Application.StartupPath หรือ Environment.CurrentDirectory() ใน VB.Net จะทำให้ได้ค่า Path ดังนี้ (หรือบางคำสั่งจะได้เป็น Release ก็ช่างหัวมันครับ เพราะใช้หลักการเดิมๆ)
    G:\Project VB.Net\ConnectAccessNET\ConnectAccessNET\bin\Debug
    แต่ผมต้องการให้อ่านไฟล์ฐานข้อมูลจาก Path ของโปรเจคปัจจุบัน ตามด้วยโฟลเดอร์ Data ดังนี้
    G:\Project VB.Net\ConnectAccessNET\Data
    ดังนั้น จากการอ่านค่า Path ที่ได้ ต้องนับเครื่องหมาย BackSlash ให้ถอยหลังกลับมา 3 ตัว และตามด้วยโฟลเดอร์ที่เราต้องการแทน
  • การทำงานของโปรแกรม

    นับเครื่องหมาย BackSlash ให้ถอยหลังกลับมา 3 ตัว
    เริ่มต้นกระบวนการทำงาน
    
        Private Sub frmConnectDB_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            ' ปรับระยะของฟอร์มให้อยู่ตรงกลางหน้าจอ
            Me.Left = (Screen.PrimaryScreen.WorkingArea.Width - Me.Width) \ 2
            Me.Top = (Screen.PrimaryScreen.WorkingArea.Height - Me.Height) \ 2
            Call ConnectAccess()
            Application.Exit()
        End Sub
    
        Public Sub ConnectAccess()
            Dim strPath As String = Environment.CurrentDirectory
            Dim i As Integer
            Dim CountBackSlash As Integer
    
            ' พวกนี้อะไรบ้างก็ไม่รู้ ... งงกะชีวิตของ .NET มันซ่ะจริงๆ
            'MsgBox(Application.ExecutablePath)
            'MsgBox(Application.StartupPath)
            'MsgBox(Environment.CurrentDirectory())
            'MsgBox(CurDir)
    
            'MsgBox(System.Reflection.Assembly.GetExecutingAssembly.Location)
            MsgBox(System.Windows.Forms.Application.StartupPath)
            ' strPath= "G:\Project VB.Net\ConnectAccessNET\ConnectAccessNET\bin\Debug"
    
            ' Algorithm หรือ แนวคิดแก้ปัญหาแบบง่ายๆ
            ' ให้นับเครื่องหมาย BackSlash ( \ ) มาจากด้านขวามือสุด ให้ได้ 3 ตัว 
            ' พอได้ครบ 3 ตัว ให้อ่านจากทางซ้ายไปขวา จนถึงจำนวนของ i ที่นับถอยหลังลงมา (จะรวมทั้ง \ ด้วย)
            ' ซึ่งก็จะทำให้ได้ค่าเป็น ... 
            ' strPath = "G:\Project VB.Net\ConnectAccessNET\"
            ' ส่วนข้อมูลจะอยู่ที่ ...
            ' strPath = "G:\Project VB.Net\ConnectAccessNET\Data\MyDB.MDB"
            For i = Len(strPath) To 1 Step -1
                If Mid(strPath, i, 1) = "\" Then CountBackSlash = CountBackSlash + 1
                If CountBackSlash = 3 Then
                    strPath = Mid(strPath, 1, i)
                    Exit For
                End If
            Next
            'MsgBox(strPath)
            ' มันมีอีกหลายวิธีเลยน่ะครับตรึมเลย ... ลองไปคิดๆดูเอาเองล่ะกัน
    
            ' ให้ต่อท้ายด้วยโฟลเดอร์ตำแหน่งของข้อมูลที่ต้องการ คือ  \Data\ไฟล์ข้อมูล MS Access.MDB
            Dim strConn As String = _
                "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source = " & strPath & "Data\MyDB.mdb"
    
            ' เปิดการเชื่อมต่อไฟล์ฐานข้อมูล
            Dim ConnDB As OleDb.OleDbConnection = New OleDb.OleDbConnection(strConn)
            ConnDB.Open()
            MsgBox("การเชื่อมต่อ MS Access - " & ConnDB.State.ToString)
            'ConnDB.Close()
    
        End Sub
    
    
  • การพัฒนา VB.Net ที่อาศัยหลักการจาก VB6 ... 55555+

    ใช้หลักการของ SharpGrid Control (ค่าย DataDynamics) ยังไงยังงั้นเลย ... สำหรับผมแล้ว มันไม่ใช่เรื่องที่น่าตื่นเต้นเร้าใจเลยครับ สำหรับเจ้า VB.Net ... เอิ๊กๆๆๆๆ
    Conclusion:
    มาถึง ณ วันนี้ ผมกล้าบอกพี่น้องทั้งหลายที่กำลังจะเริ่มต้นศึกษาการเขียนโปรแกรมได้เลยว่า VB6 เป็นทางเลือกที่ดีกว่า VB.Net เป็นไหนๆ เพราะทั้งง่ายกว่า เบากว่า รวมทั้งสมรรถนะ หรือ ผลลัพธ์ที่ได้เทียบหมัดต่อหมัดกันแล้ว VB6 มันยังคงเต็มเปี่ยมล้นไปด้วยพลังมหาศาล ... และหากคุณมีพื้นฐานที่แน่นแล้ว คิดจะต่อยอดกับ VB.Net ไม่ใช่เรื่องยากเย็นเลย ... คนใช้ VB6 ทำมาหากินเป็นอาชีพ ขอบอกตรงๆครับ ... เอิ๊กๆๆๆๆ

  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560