Visual Basic - crear mdb diario con fechas a partir del existente

Life is soft - evento anual de software empresarial
 
Vista:

crear mdb diario con fechas a partir del existente

Publicado por jaime chambi (8 intervenciones) el 09/07/2010 18:20:33
holas programadores en visual basic... saludos
ttengo un ploblem..

quiero generar bases de datos con sus respectivas tablas y registros a partir de uno existente como patron...
pero las tablas se deben crear automaticamente cada dia con nombre diferente o sea con la fecha del dia....

he intentado hacerlo con CopyFile, auque he guardado en una variable la fecha del dia como texto y luego utilizar como nombre...
pero el nombre de destino no puedo extraer el valor de esa variable al copair el archivo patron con CopyFile..
porfa una ayuda...
de antemano les agradezco..
atte.. jaime chambi [email protected]
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:crear mdb diario con fechas a partir del existe

Publicado por Jimmy Torres (134 intervenciones) el 09/07/2010 19:11:31
Un ejemplo de creación de una base de datos y una tabla dentro de ella:

Pasos a seguir:

1) Agrega una referencia a Microsoft ADO Ext. 2.x for DDL and Security, desde el menu Proyecto --> Referencias.

2) Haz un nuevo proyecto y agregas un CommandButton y de nombre le pones: btnCrear.

3) Agrega este código al form y estudia como funciona para que lo adaptes a lo que deseas.

Option Explicit

Private Sub CrearBaseDatos(ByVal NombreBase As String)
Dim MiBase As ADOX.Catalog

Set MiBase = New ADOX.Catalog

MiBase.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & NombreBase & _
";Jet OLEDB:Engine Type=5;"
' Engine Type=5 = Access 2000
' Engine Type=4 = Access 97

Set MiBase = Nothing
End Sub

Private Sub btnCrear_Click()
Dim NombreBase As String

NombreBase = "C:\MiBase.mdb"

CrearBaseDatos NombreBase
CrearTabla NombreBase

MsgBox "La base de datos ha sido creada.", vbInformation, "Base de Datos Creada"
End Sub

Sub CrearTabla(ByVal NombreBase As String)

Dim BaseDatos As ADOX.Catalog
Dim tabla As ADOX.Table
Set BaseDatos = New ADOX.Catalog


BaseDatos.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & NombreBase

Set tabla = New ADOX.Table
tabla.Name = "Contactos"

Dim col As ADOX.Column
Set col = New ADOX.Column

With col
.ParentCatalog = BaseDatos
.Type = adInteger
.Name = "ID"
.Properties("Autoincrement") = True
.Properties("Description") = " Descripcion " & _
"de la columna"
End With
tabla.Columns.Append col

With tabla
With .Columns
.Append "Columna", adInteger
.Append "Nombre", adVarWChar
.Append "Apellido", adVarWChar
.Append "Telefono", adVarWChar
.Append "Notas", adLongVarWChar
End With

Dim adColNullable

adColNullable = 2
With .Columns("Nombre")
.Attributes = adColNullable
End With
End With

BaseDatos.Tables.Append tabla
Set col = Nothing
Set tabla = Nothing
Set BaseDatos = Nothing
End Sub

Saludos!! ;)
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: Esto es mi Ejemplo

Publicado por JAIME CHAMBI (8 intervenciones) el 11/07/2010 22:28:36
Holas, Tu ayuda es vacan mano... pero lo que quisiera que me ayudes es un poco en esto:
Mira ve, ya tengo una Base de Datos con 2 tablas y con sus respectivos registros, estos me serviran de
patron, es decir a partir de esta informacion debe el programa crear automáticamente y diariamente
otra Base de datos con las mismas tablas y registros que contiene, cada día con un nombre que lleve la fecha
del día, para registrar la asistencia (hora) de ingreso y salida del personal

Ejemplo: ya tengo la base de datos (basedatos.mdb)
el dia de hoy se debe crear, otra base de datos con (Dia_11_07_2010)
para mañana será otra base de datos, asi: (Dia_12_07_2010)
y asi sucesivamente, pero a partir del existente (basedatos.mdb)

he tratado de hacer así... al hacer click en el boton del Command12 se debe crear automáticamente, primero debe
buscar si ya existe ese archivo, de no ser asi debe crear de manera automatica en la carpeta SISTEMCONTROL

Luego se debe abrir la base de datos y conectar a un grid una de sus tablas, igual con la fecha actual

Private Sub Command12_Click()

Dim ArchOrigen, ArchDestino

Dim xdia, xdia1, xmes, xanio, archi, xmes1

xdia1 = Trim(Str(Day(Date)))

xmes = Trim(Str(Month(Date)))

xanio = Trim(Str(Year(Date)))

xdia = IIf(Val(xdia1) < 10, "0" + xdia1, xdia1)

xmes1 = IIf(Val(xmes) < 10, "0" + xmes, xmes)

archi = "Dia" + "_" + xdia + "_" + xmes1 + "_" + xanio 'Ej. Dia_07_07_2010

'Falta comprobar la existencia del archivo del dia

ArchOrigen = "C:\SISTEMCONTROL\basedatos.mdb" 'aqui esta la mdb con tablas y sus registros

ArchDestino = "C:\SISTEMCONTROL\DIAS\archi.mdb " 'el nombre lo guardé en (archi),NO LO PUEDO SACAR su valor

FileCopy ArchOrigen, ArchDestino 'aqui al copiarse se copia dentro de la carpeta DIAS, con nombre archi.mdb
'eso no quiero, debe copiarse con Dia_11_07_2010

MsgBox "Base de datos nuevo fue creado: " & archi & ", Gracias", vbInformation, "Sistema de Control I. E. JG 2010"

'Falta abrir la base de datos
'Falta conectar a MSFlexGrid 1, 2 sus tablas respectivamente.

End Sub

mi proble está en que no se como estraer el valor de la variable (archi), que contiene el nombre nuevo dela base de datos
con sus tablas.
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: Esto es mi Ejemplo

Publicado por Jimmy Torres (134 intervenciones) el 12/07/2010 15:47:05
jajaja que mal que entendi bueno tan facil como esto:

CORRECTO:
ArchDestino = "C:\SISTEMCONTROL\DIAS\" & archi & ".mdb " 'Aqui incluyes el valor de archi

INCORRECTO:
ArchDestino = "C:\SISTEMCONTROL\DIAS\archi.mdb " 'Aqui incluyes la palabra archi

Entonces lo que debes hacer es truncar la cadena hasta este punto:

"C:\SISTEMCONTROL\DIAS\"

luego le añades el valor de archi asi:

& archi &

y sigues con lo demas:

".mdb "

Mira es exactamente lo mismo que haces aqui, concatenación de cadenas de texto:

MsgBox "Base de datos nuevo fue creado: " & archi & ", Gracias", vbInformation, "Sistema de Control I. E. JG 2010"

Lo que sucede es que estabas incluyendo la palabra archi dentro del valor que le ibas a dar a ArchDestino, o sea el nombre archi (no su valor) lo tomabas como parte de la cadena de texto.

Errorcillos que a veces se nos van verdad? jeje :)

Saludos!!
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

jajaj gracias

Publicado por JAIME CHAMBI (12 intervenciones) el 17/07/2010 15:49:04
jajajajajaja
gracias mano por hacerme ver mi error hasta otro dia...
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