Page 1 of 1

ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Mon Sep 18, 2023 6:07 pm
by 9KiTTi
ขออนุญาตสอบถามปัญหาการตั้งค่าเชื่อมต่อกับ MySQL (ผมเชื่อมต่อด้วย odbc ครับ ติดตั้ง odbc ตั้งค่า referenc แล้ว)

Code: Select all

Sub test2_Click()

MsgBox "โปรดตรวจสอบการตั้งค่าเชื่อมต่อ", , "ตั้งค่าการเชื่อมต่อ"

Dim Servername As String
Dim Databasename As String
Dim UserID As String
Dim Password As String
Dim Query As String


Servername = Sheets("setting").Range("B2").Value
Port = Sheets("setting").Range("B3").Value
Databasename = Sheets("setting").Range("B4").Value
UserID = Sheets("setting").Range("B5").Value
Password = Sheets("setting").Range("B6").Value
Query = Sheets("setting").Range("B7").Value '

MsgBox Servername, , "Server"
MsgBox Port, , "Port"
MsgBox Databasename, , "Database"
MsgBox UserID, , "User"
MsgBox Password, , "password"
'MsgBox Query, , "ÃÒ§ҹ" '

    'Declare variables'
        Dim objMyConn As ADODB.Connection
        Dim objMyCmd As ADODB.Command
        Dim objMyRecordset As ADODB.Recordset

        Set objMyConn = New ADODB.Connection
        Set objMyCmd = New ADODB.Command
        Set objMyRecordset = New ADODB.Recordset

    'Open Connection'
        objMyConn.connectionString = "Provider={MySQL ODBC 3.51 Driver}; " _
        & "Data Source=Servername; " _
        & "Initial Catalog=Databasename; " _
        & "Port=Port; " _
        & "User ID=UserID; " _
        & "Password=Password"
        
        objMyConn.Open

    'Set and Excecute SQL Command'
        Set objMyCmd.ActiveConnection = objMyConn
        objMyCmd.CommandText = "Query;"
        objMyCmd.CommandType = adCmdText

    'Open Recordset'
        Set objMyRecordset.Source = objMyCmd
        objMyRecordset.Open

    'Copy Data to Excel'
        Person.Range("A2").CopyFromRecordset objMyRecordset
        
    Main.Activate
        
    End Sub
  
โดยหลังจากตรวจสอบการตั้งค่าแล้ว ให้ดึงข้อมูลตามคิวรี่ที่กำหนดมาใส่ sheet ชื่อ person แต่หลังจากกดปุ่มที่ person ที่ sheet ชื่อ main แล้วเจอ error ตามภาพครับ
รบกวนอาจารย์ทุกท่านแนะนำแก้ไขด้วยครับ ขอบพระคุณครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Mon Sep 18, 2023 10:10 pm
by 9KiTTi
ตอนนี้ทำได้แล้วครับ แต่พบปัญหาไม่ข้อมูลที่ดึงมาจาก Mysql ไม่แสดงเป็นภาษาไทย เป็นเครื่องเครื่องหมาย " ? " ในส่วนที่เป็นภาษาไทยทั้งหมด ขอคำแนะนำวิธีแก้ไขด้วยครับ ขอบพระคุณครับ

Code: Select all

Sub sqlconnect()
    
    Dim Servername As String
    Dim Databasename As String
    Dim UserID As String
    Dim Password As String
    Dim Query As String


    Servername = Sheets("setting").Range("B2").Value
    Port = Sheets("setting").Range("B3").Value
    Databasename = Sheets("setting").Range("B4").Value
    UserID = Sheets("setting").Range("B5").Value
    Password = Sheets("setting").Range("B6").Value
    Query = Sheets("setting").Range("B7").Value '
     
      
    'Define a connection and a recordset to hold extracted information
    Dim oConn As ADODB.Connection, rcSet As ADODB.Recordset
    Dim cnStr As String, n As Long, msg As String, e
    
    'connection string to connect to db4free.net
    cnStr = "Driver={MySQL ODBC 3.51 Driver};SERVER=" & Servername & _
            ";Port=3333;DATABASE=" & Databasename & _
            ";UID=" & UserID & ";Password=" & Password & ";"
    
    'Test SQL query
    Const SQL = "SELECT * FROM person "
    
    ' connect
    Set oConn = New ADODB.Connection
    'oConn.CommandTimeout = 900
    
    On Error Resume Next
    oConn.Open cnStr
    If oConn.Errors.Count > 0 Then
        For Each e In oConn.Errors
            msg = msg & vbLf & e.Description
        Next
        MsgBox msg, vbExclamation, "ERROR - Connection Failed"
        Exit Sub
    Else
        
        MsgBox "เชื่อมต่อฐานข้อมูล  " & oConn.DefaultDatabase & "  สำเร็จ ", vbInformation, "สถานะการเชื่อมต่อฐานข้อมูล"
        
    End If
    
    ' run query
    Set rcSet = oConn.Execute(SQL, n)
    If oConn.Errors.Count > 0 Then
        msg = ""
        For Each e In oConn.Errors
            msg = msg & vbLf & e.Description
        Next
        MsgBox msg, vbExclamation, "ERROR - Execute Failed"
    Else
        Sheets("Person").Range("A2").CopyFromRecordset rcSet
        
        MsgBox "จำนวนข้อมูลที่นำเข้าสำเร็จ " & n & " เรคคอด", vbInformation, "สถานะการนำเข้าข้อมูล"
        
    End If
    On Error GoTo 0
    
    oConn.Close
    
End Sub

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Mon Sep 18, 2023 11:40 pm
by 9KiTTi
ตอนนี้งมจนแก้ไขได้แล้วครับ เป็นที่ ODBC ครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Tue Sep 19, 2023 8:23 am
by snasui
:D ยินดีด้วยครับ

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

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Fri Sep 22, 2023 10:29 pm
by 9KiTTi
snasui wrote: Tue Sep 19, 2023 8:23 am :D ยินดีด้วยครับ

ไม่ทราบว่าเป็นปัญหาที่ตรงไหน อย่างไร รบกวนช่วยแจ้งรายละเอียดพร้อมทั้งการกำหนดค่าให้ใช้การได้ เพื่อประโยชน์แก่เพื่อนสมาชิกในอนาคตครับ
กรณีผมที่เชื่อมต่อไม่ได้ เกิดจากติดตั้ง ODBC ไม่ตรงกับเวอร์ชั่นของ Office ครับ โปรแกรม Office เป็น x32 แต่ลง ODBC เป็น x64 ต่อจากนั้นเชื่อมต่อได้แล้ว แต่ไม่เป็นภาษาไทยเพราะกำหนดค่าที่เชื่อมต่อผิด ตอนแรกกำหนดเป็น

Code: Select all

Driver={MySQL ODBC 8.0 Driver}
ซึ่งต้องแก้เป็น

Code: Select all

Driver={MySQL ODBC 8.0 Unicode Driver}
จึงจะแสดงผลเป็นภาษาไทยครับ

*** แต่ยังมีปัญหาเรื่องถ้าเชื่อมต่อไม่ได้ ให้ขึ้นข้อความแจ้งเพื่อให้แก้ไข ยังหาวิธีทำไม่ได้ครับ ***

ตามแนบไฟล์ครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Sat Sep 23, 2023 7:04 am
by snasui
:D เท่าที่ดูจากไฟล์แนบ พบว่ามีการเขียนไว้เรียบร้อยแล้วว่าหากติดต่อไม่ใด้ให้แสดงข้อความและออกจาก Procedure เมื่อทดสอบแล้วก็แสดง Error ออกมาทาง Message Box เรียบร้อยแล้ว ไม่ทราบว่ายังเกิดปัญหาใดครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Sat Sep 23, 2023 9:26 am
by 9KiTTi
snasui wrote: Sat Sep 23, 2023 7:04 am :D เท่าที่ดูจากไฟล์แนบ พบว่ามีการเขียนไว้เรียบร้อยแล้วว่าหากติดต่อไม่ใด้ให้แสดงข้อความและออกจาก Procedure เมื่อทดสอบแล้วก็แสดง Error ออกมาทาง Message Box เรียบร้อยแล้ว ไม่ทราบว่ายังเกิดปัญหาใดครับ
อยากให้แสดงเป็นภาษาไทยครับ ไม่ใช่แสดงเป็น code ครับ หากเชื่อมต่อไม่ได้ ให้แสดง form ตั้งค่าเชื่อมต่อครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Sat Sep 23, 2023 10:11 am
by snasui
:D ความต้องการเช่นนั้นเป็นการแสดงผลทางหน้าจอ เราสามารถกำหนดเองได้ครับ

ให้ดู Code ด้านหลังว่าเป็น Error ลำดับใด (Err.Number) และคำอธิบาย Error คืออะไร (Err.Description)

จากนั้นค่อยนำ Error Number เช่น 40, 70 นี้มากำหนดค่าเองว่าให้แสดงเป็นข้อความเป็นภาษาไทยแบบไหน เมื่อ Error นั้นแล้วให้ทำงานต่ออย่างไร เช่นนี้ครับ

Re: ขออนุญาตสอบถามการตั้งค่าเชื่อมต่อกับ MySQL

Posted: Sat Sep 23, 2023 10:23 am
by 9KiTTi
snasui wrote: Sat Sep 23, 2023 10:11 am :D ความต้องการเช่นนั้นเป็นการแสดงผลทางหน้าจอ เราสามารถกำหนดเองได้ครับ

ให้ดู Code ด้านหลังว่าเป็น Error ลำดับใด (Err.Number) และคำอธิบาย Error คืออะไร (Err.Description)

จากนั้นค่อยนำ Error Number เช่น 40, 70 นี้มากำหนดค่าเองว่าให้แสดงเป็นข้อความเป็นภาษาไทยแบบไหน เมื่อ Error นั้นแล้วให้ทำงานต่ออย่างไร เช่นนี้ครับ
ขอบพระคุณครับอาจารย์