elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6  (Leído 3,566 veces)
digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« en: 3 Septiembre 2018, 10:04 am »

Buenos días.
Soy nueva en elhacker, así que disculpadme si algo no hago bien.

Se me presenta un problema a la hora de obtener datos de una base situada en un servidor para pasarlos a otra base de otro servidor.

El código es el siguiente:

    On Error Resume Next
    strConexion1 = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=zz.zzz.zzz.zz;DATABASE=NombreBase;USER=Usuario;PASSWORD=Psw"
    strConexion2 = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=xx.xxx.xxx.xx;DATABASE=NombreBase;USER=Usuario;PASSWORD=Psw"
    Dim cAbantisDB As New ADODB.Connection
    Dim cABDat As New ADODB.Connection
    cABDat.open strConexion1
    cAbantisDB.open strConexion2
    If Err.Number <> 0 Then
     'error
     Exit Sub
    End If   
    cABDat.Execute "INSERT INTO Tabla SELECT * FROM cAbantisDB.dbo.Tabla"
    Debug.Print Err.Description

Devuelve error:
[MySQL][ODBC 3.51 Driver][mysqld-5.1.73]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.tbAccesos2' at line 1

Sé que el problema lo tengo al llamar a cAbantisDB, pero no sé cómo incluirlo dentro de la consulta sql.
He mirado el manual, he buscado por la web, pero no consigo dar con la solución.

Alguien podría echarme una mano?


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #1 en: 3 Septiembre 2018, 14:18 pm »

bueno así a primera vista lo que veo es que tienes 2 BD, llamémoslas BD1 y BD2
...y tienes una conctrinoString para cada una, llamemoslas cs1 y cs2...

Sin embargo, me pregunto si luego las cruzas...
bd1.open cs2
bd2.open cs1
No tendría más importancia salvo si luego una operación que debe ser realizada a una se hace a la otra...


El caso es como no atrapas correctamente el error, no queda claor donde se genera...
Hazlo mejor así:
Código
  1.    ' Hay que atrapar el error en el momento en que se produzca... no ya cuando resulte imposible seguir...
  2.    on local error goto ErrorBd  ' esta línea debe remplazar a tu ' on error resume next'
  3.    ' todo tu código... aquí
  4.  
  5.  
  6.     strConexion1 = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=zz.zzz.zzz.zz;DATABASE=NombreBase;USER=Usuario;PASSWORD=Psw"
  7.    strConexion2 = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=xx.xxx.xxx.xx;DATABASE=NombreBase;USER=Usuario;PASSWORD=Psw"
  8.    Dim cAbantisDB As New ADODB.Connection ' <---- pon un "punto de interrupción en esta línea tecla F9
  9.    ' y a partir de aquí vamos paso a paso (tecla F8 con cada línea),
  10.    ' así vmeos que línea falla exactamente, porque el mensaje de error refiere línea 1, y refiere '.tbAccesos2', que no aparece por ninguna parte en tu código... probablemente sea el nombdre de una tabla... pero (yo), no hay forma de saber de qué BD.
  11.    Dim cABDat As New ADODB.Connection
  12.    cABDat.open strConexion1
  13.    cAbantisDB.open strConexion2
  14.  
  15.    cABDat.Execute "INSERT INTO Tabla SELECT * FROM cAbantisDB.dbo.Tabla"
  16.    '... hay más código, pués ponlo debajo?
  17.  
  18.    ' al final del código en dicha sub/function
  19.    exit sub ' o function según sea el caso
  20.  
  21. errorBD:
  22.    debug.print err.Description  
  23.    ' Si se puede corregir el error aquí, entonces
  24.    resume next  
  25.    ' si no parar y arreglarlo...
  26. end sub /function
  27.  



Por otro lado, porqué no separas la lógica... ???
1 - Por un lado primero obtener un recordset de la BD1  
2 - por el camino, si hay diferencias entre las tablas, antes de la inserción debes adaptarlo, y si es copia fidedigna, debería aceptarlo bien.
3 - y luego insertas ese recordset en la BD2...

Separando claramente los pasos, puedes atajar y atacar mucho mejor cualquier problema que se presente, sobretodo porque sabrás donde sucede el error, en la BD1, en la BD2 ???


« Última modificación: 3 Septiembre 2018, 14:29 pm por NEBIRE » En línea

digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #2 en: 3 Septiembre 2018, 15:09 pm »

Si hago un recordset de cada fila y la voy insertando a la otra base de datos, se me eterniza, porque hay muchos datos a pasar.
Por eso creí que haciando una copia de un servidor a otro, la operación sería bastante más rápida, no te parece?
En línea

digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #3 en: 3 Septiembre 2018, 15:13 pm »

Es un procedimiento que se va a usar sólo en el caso de que se acaben de crear las bases de datos vacías y, de esa forma, se llenen las tablas que tienen que tener una serie de datos por defecto.
Si no me explico bien te ruego me disculpes, pero lo que necesito es que, al abrir el sistema, si se han tenido que crear las tablas porque no existen, además de crear las tablas que tienen que estar vacías, copie las que tienen que estar llenas desde otro servidor.
Y eso es lo que no consigo, porque registro a registro ya lo tengo, pero es muy muy muy lento.
Gracias.
En línea

digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #4 en: 3 Septiembre 2018, 15:16 pm »

Por ejemplo, la tabla clientes se creará vacía, pero la tabla tipos de cliente tiene que estar llena, y la tabla plan de cuentas también, y la tabla forma de pago, plazos de pago, etc. tienen que estar llenas y no vacías como la de clientes.
Como en otro servidor, tengo esas tablas llenas, pues la idea era copiar la tablas, en vez de pegar los registros uno a uno.
En línea

digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #5 en: 3 Septiembre 2018, 15:19 pm »

y tbaccesos2 se refiere a la tabla de la segunda conexión, es que había cambiado los nombres de las tablas para que fuera más claro y al final ha resultado que no he liado.
No hay más instrucciones, da error al ejecutar la consulta, porque lo que no le gusta es la sintaxis de cómo llamo a la tabla de la segunda base para importarla a la primera.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #6 en: 3 Septiembre 2018, 15:36 pm »

Si hago un recordset de cada fila y la voy insertando a la otra base de datos, se me eterniza, porque hay muchos datos a pasar.
Por eso creí que haciando una copia de un servidor a otro, la operación sería bastante más rápida, no te parece?
Si estamos hablando de Terabytes... sí... si hablamos de unos pocos cientos de Megabytes... pués no.

Por otro lado si la copia es completamente idéntica, o casi (y no solo copiar algunas tablas o ciertos registros de algunas tablas como inicialmente uno supone), poque no la comprimes entera y la trasladas al otro servidor (si no tienes habilitado nada al respecto (ftp por ejemplo), súbelo cifrado a algun site de descargas y luego la descargas desde el otro lado y allí la descomprimes y listo... esto es aún más rápido...


Leyendo otro mensaje... Si la BD debe ser creada con tablas y valores por defecto... hazlo en local en tu equipo, la comprimes y luego cuando se deba recrear en otro lado, la descargas allí, la descomprimes y aplicas los pocos cambios que precisara al momento...
« Última modificación: 3 Septiembre 2018, 15:39 pm por NEBIRE » En línea

digimaribel23

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #7 en: 3 Septiembre 2018, 15:44 pm »

Pues creo que tienes razón.
Voy a probarlo.
Muchas gracias por tu ayuda, a veces se bloquea uno y no ve bien el camino.
Gracias de nuevo y un saludo.
En línea

PirSys

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Consulta sql para conectar dos bases de datos de distinto servidor, desde VB6
« Respuesta #8 en: 29 Agosto 2019, 20:19 pm »

Código:
Sub main()

With BaseL
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;DATA Source=" & App.Path & "\MDB\PirSys1.mdb;Persist Security Info=False"
 
End With

With BaseI
.CursorLocation = adUseClient
.Open "Driver={MySQL ODBC 3.51 Driver};Server=127.0.0.1;charset=UTF8;Database=pirsys;User=root;Password=21048912 **;Option=3;"""
End With

ControlRs

If RsControl.RecordCount = 0 Then
PrimeraEjecucion.Show
Else
InicioDiario.Show
End If

End Sub


esto tengo cargado en mi modulo de sentencias, fijate si te es de ayuda para que tomes el ejmplo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines