Foros del Web » Programación para mayores de 30 ;) » Programación General »

copiar estructura de una tabla a otra en VB6

Estas en el tema de copiar estructura de una tabla a otra en VB6 en el foro de Programación General en Foros del Web. Saludos Necesito realizar una aplicacion en VB6 que me permita comparar la estructura de 2 bases de datos de tipo DBF, la idea es copiar ...
  #1 (permalink)  
Antiguo 22/07/2004, 12:53
 
Fecha de Ingreso: octubre-2003
Ubicación: Mexico
Mensajes: 57
Antigüedad: 21 años, 1 mes
Puntos: 1
copiar estructura de una tabla a otra en VB6

Saludos

Necesito realizar una aplicacion en VB6 que me permita comparar la
estructura de 2 bases de datos de tipo DBF, la idea es copiar los
campos faltantes de la DBF 1 a la DBF 2, las 2 preguntas serian:

1. que driver debo usar si las bases de datos DBF son de clipper ?
2. Que instrucciones me permiten conocer los datos del campo a copiar
(nombre, tipo, tamaño, etc), para copiarlos exactamente igual a la
nueva base de datos ?

Mil gracias por su ayuda !!!
  #2 (permalink)  
Antiguo 22/07/2004, 13:35
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 11 meses
Puntos: 53
hola mira el objeto data, es mas facil de usar y el cual te permite abrir las bases de datos con extencion .DBF, por otro lado tenes que por la siguiente pregunta.

tenes que comparar si existen el mimo numero de registros.

el cual lo hacer con la siguiente instruccion..

Me.Data1.Recordset.RecordCount

bueno y comparamos el resultado de cada base de datos, vos pones la condicion si existen mas en cierta base de datos, despues de esto me imagino que la tabla principal, la que va ha ser por decir asi la muestra para comparar a la otra, guiado con el ID o bien no se que clave principal le hayas puesto, tienes que hacer una busqueda registro a registro en la base que vas a compar. esto lo podes hacer con lo siguiente..
Código:
dim i as integer
for i = 1 to Me.Data1.Recordset.RecordCount ' de uno hasta los registros de la base principal
Data2.Recordset.FindFirst "ID = " & val(Data1.Recordset!registro) ' busqueda registro por registro.
if Data1.Recordset!campo2 = Data2.Recordset!campo2 then ' esto lo haces con los campos que desses
exit sub
else
msgbox "los datos no coinciden en el Campo2 en el registro " & i
Data1.Recordset!campo2 = Data2.Recordset!campo2 ' reparamos el registro
end if
next i
bueno espero te sirva..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 22/07/2004, 23:09
 
Fecha de Ingreso: octubre-2003
Ubicación: Mexico
Mensajes: 57
Antigüedad: 21 años, 1 mes
Puntos: 1
De hecho es de gran ayuda tu codigo y tu consejo sobre el control data, pero quizas me explique mal, la idea de lo que necesito es la siguiente:

digamos que tengo una tabla maestra con los siguientes campos:
id, nombre, domicilio y telefono.
y deseo verificar que la tabla B, tenga la misma estructura, de lo contrario debera agregar los campos que hagan falta en la tabla, por ejemplo

suponiendo que la tabla B solo tiene los campos:
id, nombre y domicilio

necesitare una instruccion para copiar el campo faltante desde la tabla maestra a la tabla B, en este caso "telefono"

ese es mi gran duda

gracias por todo !!!
  #4 (permalink)  
Antiguo 23/07/2004, 06:01
Avatar de lic_dahool  
Fecha de Ingreso: noviembre-2003
Mensajes: 418
Antigüedad: 21 años
Puntos: 0
podes hacer lo siguiente:

for i=0 to Recordset.Fields.Count-1
if Recordset.Fields(i).Name = CampoBuscado Then
.............

La propiedad Fields(indice o nombre de campo entre " ") te permite obtener el nombre del campo, el contenido del mismo, longitud, tipo de datos, etc.

en cuanto a abrir una base dBase, usando DAO podes hacer lo siguiente:

OpenDatabase(NombreBase, False, True, Conexion)

donde Conexion puede ser:

"dBase III"
"dBase IV"
"dBase 5"

Saludos.
__________________
La cantidad total de inteligencia del planeta permanece constante.
La población, sin embargo, sigue aumentando.

COLE


:cool: Los ordenadores no resuelven problemas ... ejecutan soluciones.
Laurent Gasser


Tienes alguna duda :pensando: ? >>> www.google.com :aplauso: <<<
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.