odbc driver does not support the requested properties - mysql

odbc driver does not support the requested properties error come when we run the program at last line can anyone please give me idea.
Dim conn As New ADODB.Connection
Dim rsRec As ADODB.Recordset
Dim cmd As ADODB.Command
Dim query As String
Set conn = New ADODB.Connection
Set rsRec = New ADODB.Recordset
conn.connectionString = "DRIVER={MySQL ODBC 3.51 Driver}; Server=127.0.0.1 ;Database=try;User=root;Password=root;"
conn.Open
query = "INSERT INTO user_table (Name)"
query = stSQL & "VALUES (Anupam)"
rsRec.Open query, conn, adOpenDynamic, adLockOptimistic

I must note that this error is somewhat confusing since it also occurs when there is ANY typo in the SQL statement.
I for example had this error because a table was renamed and therefore did no longer exist.
When you encounter this error, check the spelling of all parameters and the table names.

Try This:-
Dim conn As New ADODB.Connection
Dim rsRec As ADODB.Recordset
Dim cmd As ADODB.Command
Dim query As String
Set conn = New ADODB.Connection
Set rsRec = New ADODB.Recordset
conn.connectionString = "DRIVER={MySQL ODBC 3.51 Driver}; Server=127.0.0.1 ;Database=try;User=root;Password=root;"
conn.Open
query = "INSERT INTO user_table (Name) VALUES (Anupam)"
rsRec.Open query, conn, adOpenDynamic, adLockOptimistic

Related

Execute SQL written in a textbox with VBA

With reference to this question: Avoid new line seperators in mySQL query within VBA code, I wanted to execude a SQL statement that is written in a textbox in the Excel-File.
Therefore, I created a textbox called SqlQuery1 looking like this:
In the VBA I refered to the textbox within the SqlString:
Sub Get_Data_from_DWH ()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=XX.XXX.XXX.XX; DATABASE=bi; UID=testuser; PWD=test; OPTION=3"
conn.Open
SqlString = ThisWorkbook.Sheet1.Shapes("SqlQuery1").OLEFormat.Object.Text
Set rs = New ADODB.Recordset
rs.Open strSQL, conn, adOpenStatic
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
conn.Close
End Sub
However, I get runtime error 438 on the SqlString.
Do you have any idea what I need to change to make it work?
Thisworkbook.Sheet1 is not a valid object path, try instead:
SqlString = ThisWorkbook.Sheets("Sheet1").Shapes("SqlQuery1").OLEFormat.Object.Text
Or just
SqlString = Sheet1.Shapes("SqlQuery1").OLEFormat.Object.Text
And make sure the sheet is definitely named "Sheet1"
Also, you need to change
rs.Open strSQL, conn, adOpenStatic
to this:
rs.Open SqlString, conn, adOpenStatic
And you should probably use
Dim SqlString as String
at the start of the routine
You're definitely on the right track here and I can see that you've tried solving this error! :-)
Your issue is with the rs.Open part, as far as I can see. I've shuffled your code around a bit. As far as I can see, you did not add the ADODB.Command part. I've added this in the code snippet below.
A word of advice to save time in larger modules; declare your connection as a private global string at the beginning, so you can access it later on in the module.
Private Const CONNECTION As String = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=XX.XXX.XXX.XX; DATABASE=bi; UID=testuser; PWD=test; OPTION=3"
Sub Get_Data_from_DWH()
Dim cmd As ADODB.Command
Dim conn As ADODB.CONNECTION
Dim rs As ADODB.Recordset
Set conn = New ADODB.CONNECTION
conn.Open CONNECTION
conn.CommandTimeout = 900
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
If Not conn.State = ADODB.adStateOpen Then GoTo Bugcatcher
Set cmd = New ADODB.Command
cmd.ActiveConnection = CONNECTION
cmd.CommandText = ws.Shapes("TextBox 2").OLEFormat.Object.Text
cmd.CommandType = adCmdText
Set rs = cmd.Execute
ws.Range("A1").CopyFromRecordset rs
Bugcatcher:
Exit Sub
End Sub

Extract values from mySQL database into Excel using VBA

I have installed the mySQL server on my computer and created the Database called Sales consisting of one table called Orders. You can also find the table in the SQL fiddle here:
CREATE TABLE Orders (
OrderID INT,
Customer VARCHAR(255),
Revenue VARCHAR(255)
);
INSERT INTO Orders
(OrderID, Customer, Revenue)
VALUES
("1", "Customer A","400"),
("2", "Customer A","200"),
("3", "Customer B","600"),
("4", "Customer C","150"),
("5", "Customer C","800"),
("6", "Customer C","300");
Then I created an Excel file and activated Microsoft ActiveX Data Objects 2.8 Library.
Now I wanted to connect to the Database above and extract data from it using the following VBA script:
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
Sheet1.Range("A1").Value = rs
End Sub
However, when I run this VBA I get runtime error 3704. As far as I can tell this error is probably caused by these lines:
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
because if I delete them the VBA runs without the error.
What do I need to change in my code to extract the Data from the mySQL database?
your connection is not open
try this
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
conn.open
Set rs = New ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM sales.orders;")
Sheet1.Range("A1").Value = rs
End Sub
Don't use Execute - that is for running a command on the database, not for returning a recordset.
Sub ConnectDB()
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Sales; UID=root; PWD=mypassword; OPTION=3"
conn.Open
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM sales.orders;", conn
Sheet1.Range("A1").Value = rs
End Sub
And if your string fields return what looks like garbage, you are going to have to do a little more than that too.
Try it like
Dim oConn As ADODB.Connection
Then
Private Sub ConnectDB()
Set oConn = New ADODB.Connection
Dim str As String
str = "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=XXX.XXX.XXX.XXX replace with your IP address" & ";" & _
"PORT=replace with the port you are using, usually 3306" & ";" & _
"DATABASE=replace with the name of your databese" & ";" & _
"USER=replace with the username you are using to connetc yourself to the databes" & ";" & _
"PASSWORD=replace with password you are using to connect to the databse" & ";" & _
"Option=3"
oConn.Open str
End Sub
And Finally
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectDB
Requete = "SELECT * FROM sales.orders;"
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
oConnect.Close
Set Rs = Nothing
End Sub
Assuming you are using Excel 2000 or newer there is a surprisingly easy way to do this, and to even get the MySQL column names.
Public Sub insert_data()
Dim dbConn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String
Dim ws As New Excel.Worksheet, cCtr As Long, numFields As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
dbConn.ConnectionString = "[put your connection string here]"
dbConn.Open
sql = "SELECT * FROM sales.orders;"
Set rs = New ADODB.Recordset
Set rs = dbConn.Execute(sql, , adCmdText)
With ws
' Get the number of columns:
numFields = rs.Fields.Count
' Put the column names into the first row of your worksheet:
For cCtr = 1 To numFields
.Cells(1, cCtr).Value = rs.Fields(cCtr - 1).name
Next cCtr
' Put all the recordset data into your worksheet,
' starting from the worksheet's second row:
.Cells(2, 1).CopyFromRecordset rs
End With
dbConn.Close
End Sub

Trying to connect a mysql database to an excel sheet using visual basics

I feel like this is a simple problem but i cant seem to figure it out. I am trying to establish a connection between my excel sheet and my mysql server but keep getting the error "Run-time error '-2147467259 (80004005)':
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified" I have the necessary drivers installed so i am unsure where to go from here, this is the code i have so far
Dim conn As New ADODB.Connection
Dim TableName As String
Dim sqlstr As String
Dim rs As ADODB.Recordset
Dim CRow As Long, Trow As Long
Dim Column1 As Integer, Column2 As Integer
Set conn = New ADODB.Connection
conn.Open ("DRIVER = {MySQL ODBC 5.3 Unicode Driver}" _
& ";SERVER=127.0.0.1" _
& ";DATABASE=tmi_stock" _
& ";UID=root" _
& ";PWD=MyRoot2018")
Set rs = New ADODB.Recordset
sqlstr = "INSERT INTO tester VALUE(1, 2)"
rs.Open sqlstr, conn, adOpenStatic
Set rs = Nothing
conn.Close
Set conn = Nothing

Run Time Error "424" Object Required / Ms Access VBA ./ Objects are declared but still the error Could some one spot the error?

Private Sub method3_Click()
Dim conn1 As ADODB.Connection
Dim recSet As ADODB.Recordset
mySQL = "Select * from Contact"
Set conn1 = New ADODB.Connection
conn1.Provider = "Microsoft.ACE.OLEDB.12.0"
'ERROR WHEN PROGRAM REACHES THE LINE BELOW
conn1.Open (Server.Mappath("G:\Data\StudentDB.accDB"))
Set recSet = New ADODB.Recordset
recSet.Open mySQL, conn1, adOpenDynamic, adLockOptimistic
mobile = recSet.Field(3)
recSet.Close
conn1.Close
Set conn = Nothing
Set recSet = Nothing
End Sub
Server is not defined at that exact line.
You can use SET Conn1 = CurrentProject.Connection to avoid having to create a new connection from scratch.

MySQL query error (ODBC 3.51)

I'm trying to execute query in a VB6 app.
Here is my code:
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Driver={MySQL ODBC 3.51 Driver}; Server=***; Database=***; Username=***; Password=***; Option=3"
con.Open
Dim cmd As New ADODB.Command
With cmd
.ActiveConnection = con
.CommandText = "SELECT COD_CONFIG FROM FDT_CONFIG"
.CommandType = adCmdText
End With
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockOptimistic
I've hidden some information in the connection string but in my app I'm using the correct values.
I can successfully open the connection, but when I try to execute the query I get:
"Execution error '2147467259 (800004005)' : unspecified error"
Can someone tell me where I'm going wrong?
If you want to assign a Command object's ActiveConnection to an existing Connection object, you must use Set:
With cmd
Set .ActiveConnection = con
....
End With
It's a little confusing because you can also assign a string to the ActiveConnection property and ADO will create an ad-hoc connection for you. In that case, you wouldn't use Set because you're just assigning a value to an intrinsic type (string):
With cmd
.ActiveConnection = "Driver={MySQL ODBC 3.51 Driver}; Server=***; Database=***; Username=***; Password=***; Option=3"
...
End With
So the property can be used multiple ways. In your scenario, however, since you're assigning an object reference, you'll need to use the Set keyword.