Visual Basic - acces, ¿ guardar archivos Cad ?

Life is soft - evento anual de software empresarial
 
Vista:

acces, ¿ guardar archivos Cad ?

Publicado por jordi (2 intervenciones) el 04/03/2007 13:31:09
Espero que algun alma caritativa., me pueda ayudar a resolver un problema que hasta la fecha en ningun foro me han podido resolver.

Bien la pregunta en concreto es: ( a veces es mas dificil expresar el problema, que el mismo problema)
Tengo un programa (vB6) que almacena informacion sobre perfiles metalicos, y por consiguiente existe un dibujo o plano en CAD, pero no SE COMO COLOCAR EL DIBUJO
EN UN CAMPO O REGISTRO DE ACCES, que al momento que se llama salga automaticamente la imagen.
Es decir la pregunta es como colocar en un campo de acces un dibujo de cad u otro formato
Saludos
JJUUVV
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:acces, ¿ guardar archivos Cad ?

Publicado por Luis Prieto (166 intervenciones) el 04/03/2007 15:24:40
Hola!

Mira quizas esa no sea la mejor solución. Yo en mi caso guardaria todos los archivos CAD en una carpeta y desde el programa lo ubicaria por su ruta y lo mostraria.

Pero si quieres guardarlas en la BD, quizas esto es lo que buscas.

Public Sub GuardarFotoBD(rCedula$, Imagen As Object)
Dim SQL$, ADO As ADODB.Recordset
Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, I As Integer
Const ChunkSize As Integer = 16384

Set ADO = New ADODB.Recordset
SQL$ = "SELECT * FROM"
SQL$ = SQL$ & " Estudiante"
SQL$ = SQL$ & " WHERE CedEst = '" & rCedula$ & "'"

ADO.Open SQL$, cPagos, adOpenKeyset, adLockPessimistic

If Not ADO.EOF Then
ADO.Update
DataFile = 1
Open Imagen.Tag For Binary Access Read As DataFile 'ABRE LA RUTA DE LA FOTO PARA ACCEO BINARIO
Fl = LOF(DataFile) 'Devuelve un tipoLong que indica el tamaño, en bytes, de un archivo abierto mediante la instrucción Open.

If Fl = 0 Then Close DataFile: Exit Sub
Chunks = Fl \ ChunkSize 'LE AGISNA ALA VARIABLE Chunks, EL VALOR DE LA DIVISION DEL TAMAÑO DEL ARCHIVO ENTRE EL VALOR DE LA CONSTANTE CHUNKSIZE
Fragment = Fl Mod ChunkSize 'DIVIDE EL TAMAÑO DEL ARCHIVO, POR LA CONSTANTE ChunkSize Y DEVUELVE EL RESTO A LA VARIABLE Fragment
ADO!Foto.AppendChunk Null 'LE AGREGA AL CAMPO FOTO, EL VALOR CHUNK COMO NULO
ReDim Chunk(Fragment) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA VARIABLE Fragment
Get DataFile, , Chunk() 'Lee datos de un archivo de disco abierto (DATAFILE) y coloca la información en una variable (CHUNK())
ADO!Foto.AppendChunk Chunk() 'LE AGREGA AL CAMPO FOTO, EL VALOR DE CHUNK
ReDim Chunk(ChunkSize) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA CONSTANTE ChunkSize
For I = 1 To Chunks
Get DataFile, , Chunk() 'Lee datos de un archivo de disco abierto (DATAFILE) y coloca la información en una variable o arreglo (CHUNK())
ADO!Foto.AppendChunk Chunk() 'LE VA A SIGNANDO AL COMPO FOTO EL VALOR HEXADECIMAL DE LA FOTO
Next I
Close DataFile 'CIERRA EL ARCHIVO ABIERTO
ADO.Update
End If
ADO.Close

Exit Sub
End Sub

Y PARA CARGARLA DE LA BD A UN OBJETO IMAGE ES:
Public Sub CargarFotoBD(rCedula$, Imagen As Object)
Dim SQL$, ADO As ADODB.Recordset
Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, I As Integer, Foto&
Const ChunkSize As Integer = 16384
On Error GoTo ErrorCargarFotoBD

Set ADO = New ADODB.Recordset
SQL$ = "SELECT Foto FROM "
SQL$ = SQL$ & " Estudiante"
SQL$ = SQL$ & " WHERE CedEst = '" & rCedula$ & "'"

ADO.Open SQL$, cPagos, adOpenKeyset, adLockPessimistic

If Not ADO.EOF Then
If Not IsNull(ADO("Foto")) Then
DataFile = 1
Open "pictemp" For Binary Access Write As DataFile

Foto& = 0 'es es numero del fields(campo Photo) que contiene la foto
Fl = ADO.Fields.Item(Foto).ActualSize 'SE LE ASIGNA A F1, EL VALOR DEL TAMAÑO ACTUAL DE LA FOTO
Chunks = Fl \ ChunkSize 'LE AGISNA A LA VARIABLE Chunks, EL VALOR DE LA DIVISION DEL TAMAÑO DEL ARCHIVO ENTRE EL VALOR DE LA CONSTANTE CHUNKSIZE
Fragment = Fl Mod ChunkSize 'DIVIDE EL TAMAÑO DEL ARCHIVO, POR LA CONSTANTE ChunkSize Y DEVUELVE EL RESTO A LA VARIABLE Fragment
ReDim Chunk(Fragment) 'REDIMENSIONA CHUNK, CON EL VALOR DE LA VARIABLE Fragment
Chunk() = ADO!Foto.GetChunk(Fragment)
Put DataFile, , Chunk() 'Escribe en un archivo de disco(DataFile) los datos contenidos en una variable o arreglo (Chunk()).
For I = 1 To Chunks
ReDim Buffer(ChunkSize) 'El argumento buffer señala a un búfer asignado el valor sizeofbuffer que indica el número de caracteres que se pueden escribir en el búfer
Chunk() = ADO!Foto.GetChunk(ChunkSize) 'el metodo GetChunk, Devuelve todo el contenido, o una parte, de un objeto Field de datos de gran tamaño o binarios
Put DataFile, , Chunk() 'Escribe en un archivo de disco(DataFile) los datos contenidos en una variable o arreglo (Chunk()).
Next I
Close DataFile 'cierra el archivo DataFile
Imagen.Tag = "pictemp" 'carga la foto del valor pictemp
Imagen.Picture = LoadPicture("pictemp")
End If
END IF
ADO.Close
Exit Sub
End Sub

P.D: Cualquier duda escribeme a mi correo.

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:acces, ¿ guardar archivos Cad ?

Publicado por quique (17 intervenciones) el 05/03/2007 16:55:00
pero, la raiz del problema es la misma: ¿sí se pueden visualizar archivos de Autocad desde VB?
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