snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#1
Post
by 9KiTTi » Mon Sep 18, 2023 6:07 pm
ขออนุญาตสอบถามปัญหาการตั้งค่าเชื่อมต่อกับ 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 ตามภาพครับ
รบกวนอาจารย์ทุกท่านแนะนำแก้ไขด้วยครับ ขอบพระคุณครับ
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#2
Post
by 9KiTTi » Mon Sep 18, 2023 10:10 pm
ตอนนี้ทำได้แล้วครับ แต่พบปัญหาไม่ข้อมูลที่ดึงมาจาก 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
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#3
Post
by 9KiTTi » Mon Sep 18, 2023 11:40 pm
ตอนนี้งมจนแก้ไขได้แล้วครับ เป็นที่ ODBC ครับ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Tue Sep 19, 2023 8:23 am
ยินดีด้วยครับ
ไม่ทราบว่าเป็นปัญหาที่ตรงไหน อย่างไร รบกวนช่วยแจ้งรายละเอียดพร้อมทั้งการกำหนดค่าให้ใช้การได้ เพื่อประโยชน์แก่เพื่อนสมาชิกในอนาคตครับ
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#5
Post
by 9KiTTi » Fri Sep 22, 2023 10:29 pm
snasui wrote: Tue Sep 19, 2023 8:23 am
ยินดีด้วยครับ
ไม่ทราบว่าเป็นปัญหาที่ตรงไหน อย่างไร รบกวนช่วยแจ้งรายละเอียดพร้อมทั้งการกำหนดค่าให้ใช้การได้ เพื่อประโยชน์แก่เพื่อนสมาชิกในอนาคตครับ
กรณีผมที่เชื่อมต่อไม่ได้ เกิดจากติดตั้ง ODBC ไม่ตรงกับเวอร์ชั่นของ Office ครับ โปรแกรม Office เป็น x32 แต่ลง ODBC เป็น x64 ต่อจากนั้นเชื่อมต่อได้แล้ว แต่ไม่เป็นภาษาไทยเพราะกำหนดค่าที่เชื่อมต่อผิด ตอนแรกกำหนดเป็น
ซึ่งต้องแก้เป็น
Code: Select all
Driver={MySQL ODBC 8.0 Unicode Driver}
จึงจะแสดงผลเป็นภาษาไทยครับ
*** แต่ยังมีปัญหาเรื่องถ้าเชื่อมต่อไม่ได้ ให้ขึ้นข้อความแจ้งเพื่อให้แก้ไข ยังหาวิธีทำไม่ได้ครับ ***
ตามแนบไฟล์ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Sat Sep 23, 2023 7:04 am
เท่าที่ดูจากไฟล์แนบ พบว่ามีการเขียนไว้เรียบร้อยแล้วว่าหากติดต่อไม่ใด้ให้แสดงข้อความและออกจาก Procedure เมื่อทดสอบแล้วก็แสดง Error ออกมาทาง Message Box เรียบร้อยแล้ว ไม่ทราบว่ายังเกิดปัญหาใดครับ
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#7
Post
by 9KiTTi » Sat Sep 23, 2023 9:26 am
snasui wrote: Sat Sep 23, 2023 7:04 am
เท่าที่ดูจากไฟล์แนบ พบว่ามีการเขียนไว้เรียบร้อยแล้วว่าหากติดต่อไม่ใด้ให้แสดงข้อความและออกจาก Procedure เมื่อทดสอบแล้วก็แสดง Error ออกมาทาง Message Box เรียบร้อยแล้ว ไม่ทราบว่ายังเกิดปัญหาใดครับ
อยากให้แสดงเป็นภาษาไทยครับ ไม่ใช่แสดงเป็น code ครับ หากเชื่อมต่อไม่ได้ ให้แสดง form ตั้งค่าเชื่อมต่อครับ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Sat Sep 23, 2023 10:11 am
ความต้องการเช่นนั้นเป็นการแสดงผลทางหน้าจอ เราสามารถกำหนดเองได้ครับ
ให้ดู Code ด้านหลังว่าเป็น Error ลำดับใด (Err.Number) และคำอธิบาย Error คืออะไร (Err.Description)
จากนั้นค่อยนำ Error Number เช่น 40, 70 นี้มากำหนดค่าเองว่าให้แสดงเป็นข้อความเป็นภาษาไทยแบบไหน เมื่อ Error นั้นแล้วให้ทำงานต่ออย่างไร เช่นนี้ครับ
9KiTTi
Member
Posts: 227 Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019
#9
Post
by 9KiTTi » Sat Sep 23, 2023 10:23 am
snasui wrote: Sat Sep 23, 2023 10:11 am
ความต้องการเช่นนั้นเป็นการแสดงผลทางหน้าจอ เราสามารถกำหนดเองได้ครับ
ให้ดู Code ด้านหลังว่าเป็น Error ลำดับใด (Err.Number) และคำอธิบาย Error คืออะไร (Err.Description)
จากนั้นค่อยนำ Error Number เช่น 40, 70 นี้มากำหนดค่าเองว่าให้แสดงเป็นข้อความเป็นภาษาไทยแบบไหน เมื่อ Error นั้นแล้วให้ทำงานต่ออย่างไร เช่นนี้ครับ
ขอบพระคุณครับอาจารย์