Visual Basic - Novato + VB + Access2002 = SOS

Life is soft - evento anual de software empresarial
   
Vista:

Novato + VB + Access2002 = SOS

Publicado por Ylodis (8 intervenciones) el 24/04/2009 22:05:34
Hola,

Intento crear un subprograma que al pulsar un botón cree una copia de una tabla leyendo todos los registros de la 1º y a la vez vaya grabando en la 2ª.
Cuando llego a la instrucción en Set TB1 = BDD.OpenRecordset(SQL),
al intendar definir la 1ª Tabla tengo un "error '13' en tiempo de ejecucion : No coinciden los tipos ".
Aclaro que soy novato en VB6 y puede que el problema sea muy básico.

Private Sub Command3_Click()
Dim BDD As Database 'Objeto para manejar la base de datos
Dim TB1 As Recordset 'Objeto para manejar la Tabla
Dim TB2 As Recordset 'Objeto para manejar la Tabla
Set BDD = OpenDatabase("D:Mis documentosMisProgBases de Datosd1.mdb") 'Abre la base de datos
Dim SQL As String 'Declarar una variable para almacenar sentencia SQL

SQL = "SELECT * FROM datos"
Set TB1 = BDD.OpenRecordset(SQL) 'Define Tabla 1

SQL = "SELECT * FROM datosCopia"
Set TB2 = BDD.OpenRecordset(SQL) 'Define Tabla 1

TBL.MoveFirst 'nos posicionamos en el primer registro de la tabla
Do Until TB1.EOF
SQL = "INSERT INTO datosCopia (nombre,nif,direccion,telefono,cp,poblacion) VALUES(datos.nombre,datos.nif,datos.direccion,dato s.telefono,datos.cp,datos.poblacion)"
TB1.MoveNext 'leer siguiente
Loop

TBL.Close 'cierra tabla
BDD.Close 'cierra base de datos
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Novato + VB + Access2002 = SOS

Publicado por P3L30N2009 (701 intervenciones) el 25/04/2009 09:01:22
El problema, seguramente es que tienes un conflicto de referencias con ADO y DAO.

Declara los recordsets así:

Dim TB1 As DAO.Recordset
Dim TB2 As DAO.Recordset

De todas formas es una manera muy primitiva para copiar los registros de una tabla a otra. Prueba así (con DAO):

Dim BDD As Database
Set BDD = OpenDatabase("D:\Mis documentos\MisProg\Bases de Datos\bd1.mdb")
BDD.Execute "INSERT INTO datosCopia SELECT datos.* FROM datos"

Nota: Si estás empezando con el acceso a bases de datos con VB, te recomiento (al igual que MS) que te olvides de DAO y comiences con ADO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Novato + VB + Access2002 = SOS

Publicado por Ylodis (8 intervenciones) el 25/04/2009 09:59:48
Hola,

Gracias por tu ayuda, parece que ahora va mejor aunque no graba nada en la tabla gemela, tengo que mirar porque.

Lo de que es una forma primitiva de copiar tablas, lo sé. Era sólo un ejercicio. Quiero llegar a unir 2 tablas en una 3ª condicionalmente, lo cual sólo se puede hacer por programa.

En efecto soy novato y no distingo entre DAO y ADO ¿ Que tengo que hacer para usar ADO? ¿ Sabes de algún manual donde explique paso a paso lo que intento hacer ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Novato + VB + Access2002 = SOS

Publicado por P3L30N2009 (701 intervenciones) el 25/04/2009 11:01:58
Bueno, no graba nada en la tabla porque no estás ejecutando la consulta, sólo se la asignas a la variable SQL y nada mas.
Después de asignar la consulta tienes que ejecutarla:

BDD.Execute SQL

Aún así, dudo que la consulta funcione ya que le estás intentando asignar valores de una tabla "datos" que no está abierta (lo que tienes abierto es un recordset "TB1", y sus registros son los valores que tienes que insertar).

Por otra parte, el recordset TB2 no tiene sentido crearlo, pues no se utiliza para nada.

Sobre ADO, la ayuda de VB trae muchos ejemplos, escribe en la busqueda "ADO" y verás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Novato + VB + Access2002 = SOS

Publicado por Ylodis (8 intervenciones) el 25/04/2009 23:59:59
Hola,

De nuevo gracias.

En cuanto a la ayuda de VB, no la tengo, parece que en origen eran 2 CD y sólo he localizado e instalado el primero. Agradeceria cualquier forma de localizar el 2º CD o manuales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar