Formulario Acces con Mysql connexio codigo vb

Tengo una tabla1 en MySQL quiero traer los datos de esta por medio de código VB para usarla en un formulario.
Necesito saber como hago que el DataSource de access me tome esta tabla.
No lo quiero hacer por tablas vinculadas, quiero que se haga con código y que pueda usar tablas de access y mysql simultáneamente por medio de código, es decir que la tabla1 de mysql se actualice con datos de tabla2 de access mediante código
1

1 respuesta

Respuesta
1
Aquí te dejo un ejemplo de como establecer la conexión y acceder a datos en mysql. Ya solo faltaría que lo adaptaras a tu BD.
Private Sub Comando0_Click()
On Error GoTo Err_Comando0_Click
Dim cadena_conexion
Dim consulta As New rdoQuery
Servidor = "MiServidor" 'La ip del Servidor o el nombre
base_de_datos = "MiBaseDeDatos" 'El nombre de la base de datos a la que queremos conectar
Password = "MiPassword" 'El apssword de acceso del usuario de mysql que vamos a utilizar para la conexion
usuario = "MiUsuario" 'El usuario con provolegios sobre la tabla en cuestion
'creamos la cadena de conexión leyendo los valores de los textbox si utilizamos un conector de una version diferente debemos cambiarlo por el que utilizamos
cadena_conexion = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=" & Servidor & "; DATABASE=" & Trim(base_de_datos) & ";PWD=" & Password & "; UID=" & usuario & ";OPTION=3"
Set db = New rdoConnection
'asociamos la cadena de conexión al objeto
db.Connect = cadena_conexion
db.CursorDriver = rdUseServer
'establecemos la conexión
db.EstablishConnection
Set consulta.ActiveConnection = db
Tabla = "USUARIOS"
'creamos la consulta SQL y la ejecutamos
consulta.SQL = "SELECT * FROM " & Trim(Tabla) & ";"
consulta.Execute
Me.Form.RecordSource = consulta.SQL
'asigamos el resultado de la consulta a nuestro objeto resultados (rdoResultset)
Set resultados = consulta.OpenResultset
'recorremos todos los resultados
While Not resultados.EOF
For Each columna In resultados.rdoColumns
contenido_row = contenido_row & resultados(columna.Name) & "; "
Next
'MsgBox contenido_row
'agregamos el contenido de cada registro al listbox
contenido.AddItem contenido_row
contenido_row = ""
resultados.MoveNext
Wend
'cerramos y borramos los objetos
resultados.Close
Set resultados = Nothing
Exit_Comando0_Click:
    Exit Sub
Err_Comando0_Click:
    MsgBox Err.Description
    Resume Exit_Comando0_Click
End Sub
Hola y otengo este código
Dim oConn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql$
Dim a As String
Set oConn = New ADODB.Connection
oConn.Open "Driver={MySQL ODBC 5.1 Driver};" & _
           "Server=localhost;" & _
           "Port=3306;" & _
           "Option=131072;" & _
           "Stmt=;" & _
           "Database=autorizaciones;" & _
           "Uid=root;" & _
           "Pwd=masterkey"
Set rst = New ADODB.Recordset
sql$ = "SELECT Númeroinforme FROM anexo3;"
With rst
.Open sql$, oConn, , , adCmdText
While Not rst.EOF
Texto0 = rst.Fields(0)
rst.MoveNext
Wend
rst.Close
End With
en este  Texto0 = rst.Fields(0) me toma solo el primer registro, lo que yo quiero es que el resultado sea el origen de datos de mi formulario, en el que tu me envia me genera dos errores
Dim consulta As New rdoQuery y aqui Set db = New rdoConnection
por favor colaborame adaptando el que Yo tengo, si le mando un msgbox para ver si lee los registro me recorre toda la base de datos, pero no se como ponerlos en el formulario
Que yo sepa, y hasta donde he podido averiguar, en access no es posible poner como origen de datos de un formulario una tabla o un select de una tabla de mysql.
La única opción que se me ocurre es que crees una tabla temporal con los datos de la tabla de mysql.
Un ejemplo seria así:
Creas una tabla con los campos que quieres traerte de mysql.
Una vez creada el código quedaría así:
Dim oConn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql$
Dim a As String
Set oConn = New ADODB.Connection
oConn.Open "Driver={MySQL ODBC 5.1 Driver};" & _
           "Server=localhost;" & _
           "Port=3306;" & _
           "Option=131072;" & _
           "Stmt=;" & _
           "Database=autorizaciones;" & _
           "Uid=root;" & _
           "Pwd=masterkey"
Set rst = New ADODB.Recordset
sql$ = "SELECT ID_USU, CODUSU, ID_UD,APELLIDOS, NOMBRE, TFNO FROM USUARIOS;"
With rst
.Open sql$, oConn, , , adCmdText
While Not rst.EOF
idusu = rst.Fields(0)
cod_usu = rst.Fields(1)
idud = rst.Fields(2)
Nom = rst.Fields(3)
Apel = rst.Fields(4)
telf = rst.Fields(5)
CurrentDb.Execute ("Delete * from USUARIOS1") 'vaciamos la tabla antes de cargarla
CurrentDb.Execute ("Insert into USUARIOS1 (ID_USU, CODUSU, ID_UD,APELLIDOS, NOMBRE, TFNO) VALUES(" & idusu & ", '" & cod_usu & "', " & idud & ", '" & Apel & "', '" & Nom & "', '" & telf & "');")
Rst. MoveNext
Wend
Rst. Close
End With
Una vez terminado con los datos en vez de borrar cada vez que cargues los datos puedes optar por crear y eliminar la tabla cada vez que se ejecute.
Otra cosa aparte. Si no quieres utilizar tablas vinculadas para que el usuario no pueda tocarlas, puede ponerla en modo oculto, así el usuario no puede verlas pero puedes gestionas los datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas