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

vincular archivos .dbf a access

Estas en el tema de vincular archivos .dbf a access en el foro de Bases de Datos General en Foros del Web. Hola, He importado archivos .dbf a una base de datos en access y se hace correcto, ahora a mi me gustaria que de manera automática, ...
  #1 (permalink)  
Antiguo 21/08/2014, 11:47
 
Fecha de Ingreso: noviembre-2007
Mensajes: 533
Antigüedad: 17 años
Puntos: 1
vincular archivos .dbf a access

Hola,

He importado archivos .dbf a una base de datos en access y se hace correcto, ahora a mi me gustaria que de manera automática, cuando esa base de datos se abra, se actualizara automáticamente.

¿Se puede realizar ese procedimiento con algún código en Visual ?

Quedo a la espera de respuesta.

Gracias.
  #2 (permalink)  
Antiguo 07/10/2014, 23:16
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: vincular archivos .dbf a access

Hola mira lo que yo hago es borrar la tabla y despues vincularla nuevamente, lo que ya no entendi es lo hiciste desde access o por programacion, tambien se me ocurre que podrias hacer un update si ya vincluaste la tabla y no la quieres borrar.

El problema radicara en que si tienes nuevos registros, acces no acepta la instruccion Inser or Update.

Te paso algo de codigo que yo utilize para vincular una tabla de paradox a acces.

cn es mi conexion a la BD de datos de Acces (ADODB.Connection)
Rs es mi RecordSet

Set Rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
Rs.MoveFirst

xNum = 0

'recorro mi coleccion de tablas de la BD

Do Until Rs.EOF
Select Case UCase(Rs("TABLE_NAME"))
Case Is = "TIRA"
cn_Ensambles.Execute _
"DROP TABLE TIRA"
xNum = xNum + 1

End Select

'Si encuentro la tabla salgo, no tiene caso recorrer toda la coleccion
If xNum >= 1 Then
Exit Do
End If

Rs.MoveNext

Loop

'Ya que la borre la vinculo nuevamente

cn.Execute _
"SELECT * INTO TIRA FROM " & _
"[Paradox 5.x; " & _
"DATABASE=" & Trim(pDatosSAE) & _
"].[INVE" & Trim(pEmpresaSae) & "#DB] "

Espero te sirva

Saludos
  #3 (permalink)  
Antiguo 26/10/2014, 06:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 533
Antigüedad: 17 años
Puntos: 1
Respuesta: vincular archivos .dbf a access

Hola,

Me explico mejor, yo lo hice a mano, para hacer una serie de consultas, pero claro, estas consultas se han muchas veces , y las tablas van teniendo registros nuevos, columnas nuevas no, pero si van a tener filas nuevas, entonces la idea es cada vez que se ejecute ese procedimiento, que borre las tablas y las actualice , son entre 4-5 tablas siempre.

tengo una serie de dudas en tu código

Set Rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))

table es el nombre de la tabla, si la tabla se llama "apellidos", pondría apellidos? , y los demás parámetros estarían en empty?

y tambien

Select Case UCase(Rs("TABLE_NAME")) , aqui tendría que hacer un case para cada tabla?


Quedo a la espera para implementarlo
  #4 (permalink)  
Antiguo 27/10/2014, 12:34
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: vincular archivos .dbf a access

Set Rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))

Lo tienes que dejar tal cual, para que te muestre la coleccion de tablas.


Select Case UCase(Rs("TABLE_NAME"))

Pongo el UCase para que el nombre de la tabla que es "TABLE_NAME" me lo de en mayusculas y hacer la comparacion en el Case Is, que tendria que ser uno para cada tabla

Select Case UCase(Rs("TABLE_NAME"))
Case Is = "TABLA01"
cn_Ensambles.Execute _
"DROP TABLE TABLA01"
xNum = xNum + 1

Case Is = "TABLA02"
cn_Ensambles.Execute _
"DROP TABLE TABLA02"
xNum = xNum + 1

Case Is = "TABLAxx"
cn_Ensambles.Execute _
"DROP TABLE TABLAxx"
xNum = xNum + 1

End Select

Saludos

Etiquetas: access, dbf, vincular
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 08:05.