Crecimiento inesperado de la Base de Datos

Dudas sobre cualquier tema relacionado con Access que no tenga cabida expresa en los otros hilos
arbei
Nivel 2
Mensajes: 29
Registrado: Dom Abr 04, 2021 6:10 am

Crecimiento inesperado de la Base de Datos

Mensajepor arbei » Vie Nov 12, 2021 12:47 am

Hola buenas tardes,

Primero que nada agradezco el apoyo que me han brindado para resolver lso problemas que se me han presentado en el desarrollo de la aplicación que estoy implementando.
Quiero plantear el panorama de lo que hace la aplicación y el problema que se me ha presentado y acudo a ustedes para que me orienten sobre cómo resolverlo:
La aplicación que estoy desarrollando es para un control de salidas y entradas en un Almacén, con la presentación de las fotos de fotos de cada producto así como diferentes estatus durante el proceso, lo que me está sucediento es que de repente el tamaño de la base de datos crece desproporcionadamente solo con la adición de 40 o 50 nuevos registros y la verdad no se como encontrar el proqué y solucionar el problema, sus comentarios sobre el tema serían mucha ayuda.

Saludos,

Avatar de Usuario
Neckkito
Moderador
Mensajes: 1232
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Crecimiento inesperado de la Base de Datos

Mensajepor Neckkito » Vie Nov 12, 2021 7:45 am

Hola:

Si estás añadiendo las imágenes dentro de la base de datos es normal que esto te suceda. Lo que tienes que hacer es guardar esas imágenes fuera de la base de datos. Ahí tienes un ejemplo de cómo puede hacerse:

- Si trabajas con formularios: https://is.gd/xJHuig
- Si trabajas con formularios continuos: https://is.gd/9Seu41
- Si trabajas con infomres: https://is.gd/IX7Gi4

En el fondo verás que, más o menos, la mecánica es bastante parecida en todos los ejemplos.

Saludos.
Access MVP 2017-2022
http://bit.ly/NckAccess

arbei
Nivel 2
Mensajes: 29
Registrado: Dom Abr 04, 2021 6:10 am

Re: Crecimiento inesperado de la Base de Datos

Mensajepor arbei » Vie Nov 12, 2021 5:24 pm

Hola nuevamente Neckkito,

Gracias por tu pronta respuesta, he verificado los ejemplos que amablemente me has enviado y te comento lo siguiente:
-Las fotos no las estoy guardando en la base de datos, tengo un carpeta por separado y cada que se busca un registro, llama a la fotografía con el método que mencionas como "profesional".
-Dentro de la aplicación en el formulario se hacen varias validaciones y busquedas de datos para ir llenando el formulario y al final al guardar el registro se "dispara" el tamaño de la base de datos, te envío el código que estoy usando para ver que me puedes coementar:

ESTE ES EL CODIGO PARA IR LLENANDO LOS CAMPOS DEL FORMULARIO

Private Sub LLAVE_AfterUpdate()

[id1] = DLookup("[ID1]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
[SERIE] = DLookup("[NUMSERIE]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
If SERIE = Null Then GoTo LINE1
[IDAUX] = DLookup("[ID1]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
CALIBRABLE = DLookup("[CALIB]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
[FECHA VENCIMIENTO] = DLookup("[VENCIMIENTO]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
[UOM] = DLookup("[UOM]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
[CANTIDAD] = DLookup("[PZ_EQUIPO_HTA]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
STATUUS = DLookup("[STATUS]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
NO_PIEZAS = DLookup("[PZ_EQUIPO_HTA]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
HTA_LIMPIA = -1
TAPONES = -1
EQ_CALIB = -1
FECHA_PROM_RET = FECHAVALE

VALIDAMPN = DLookup("[MPN]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
If VALIDAMPN = NOPARTE Then GoTo LINE2
DESCRIPCION1 = DLookup("[NOMBRE]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
mySQL = "UPDATE CAPTURA SET DESCRICPCION = '" & Me.DESCRIPCION1 & "' WHERE ID = " & Me.ID
DoCmd.SetWarnings False
DoCmd.RunSQL mySQL
NOPARTE1 = DLookup("[MPN]", "[HERRAMIENTA]", "LLAVE= '" & Me.LLAVE & "'")
mySQL = "UPDATE CAPTURA SET NOPARTE = '" & Me.NOPARTE1 & "' WHERE ID = " & Me.ID
DoCmd.RunSQL mySQL
DoCmd.SetWarnings True
Me.Cuadro_combinado175.SetFocus

LINE2:
On Error GoTo LINE3

Me.Cuadro_combinado175.SetFocus
Exit Sub
LINE1:
MsgBox "NO EXISTE NUMERO DE SERIE", vbInformation, "aviso"
MsgBox "CAPTURE NUEVAMENTE EL REGISTRO", vbInformation
LLAVE = Null
Me.FIND_FOLIO.SetFocus
Me.LLAVE.SetFocus

Exit Sub
LINE3:
Exit Sub


ESTE ES EL CODIGO PARA GUARDAR EL REGISTRO

Private Sub STOP_Click()

If STATUUS = "NO DISPONIBLE" Then GoTo LINE1


Me.ESTATUS_SOLICITUD = "RESERVADO"
STATUS = "PRESTADO"
STATUS1 = STATUS
mySQL = "UPDATE HERRAMIENTA SET STATUS = '" & Me.STATUS & "' WHERE ID1 = " & Me.IDAUX
CurrentDb.Execute mySQL
DoCmd.RunCommand acCmdSaveRecord
MsgBox "ACTUALIZACION CORRECTA... ", vbInformation, "Aviso"
On Error GoTo sol_err
Set prn = Application.Printer
Set Application.Printer = Application.Printers("ALMACEN CENTRAL")


DoCmd.OpenReport "VALE QR", acViewPreview, , "[ID]= Forms![DESPACHO KIOSCO]![ID]", acHidden
DoCmd.OpenReport "VALE QR", , , "[ID]= Forms![DESPACHO KIOSCO]![ID]", acHidden


Set Application.Printer = prn

Salida:

DoCmd.Close acReport, "VALE QR"
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "DESPACHO KIOSCO", acNormal
DoCmd.GoToRecord , , acFirst
DoCmd.RefreshRecord
Exit Sub

sol_err:
If err.Number = 2212 Then
Resume Salida
Else
MsgBox "Se ha producido el error " & err.Number & " " _
& err.Description
End If
GoTo LINE2

LINE1:
DoCmd.RunCommand acCmdSaveRecord
CurrentDb.Execute "insert into CAPTURA_AUX select *from CAPTURA where ID = " & Me.ID & ""
On Error GoTo sol_err1
Set prn = Application.Printer
Set Application.Printer = Application.Printers("ALMACEN CENTRAL")

DoCmd.OpenReport "VALE QR", acViewPreview, , "[ID]= Forms![DESPACHO KIOSCO]![ID]", acHidden
DoCmd.OpenReport "VALE QR", , , "[ID]= Forms![DESPACHO KIOSCO]![ID]", acHidden

Set Application.Printer = prn

Salida1:

DoCmd.Close acReport, "VALE QR"
CurrentDb.Execute "DELETE FROM CAPTURA WHERE ID= " & ID.Value & ""
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "DESPACHO KIOSCO", acNormal
DoCmd.GoToRecord , , acFirst
Exit Sub

sol_err1:
If err.Number = 2212 Then
Resume Salida
Else
MsgBox "Se ha producido el error " & err.Number & " " _
& err.Description
End If
LINE2:

End Sub


ES ES EL CODIGO PARA MOSTAR LA FOTO DEL PRODUCTO

Private Sub Form_Current()

Dim fso As Object, _
Carpeta As Object, _
Archivo, _
Archivos, _
Matriz() As String, _
i As Long

If ID = 132783 Then
Me.visorimagen.Picture = ""
Me.TimerInterval = 0
Exit Sub
End If

On Error GoTo sol_err

Salida:

Set misFotos = New Collection

'strRuta = Application.CurrentProject.Path & "\Imagenes\" & Me.ID
strRuta = Application.CurrentProject.Path & "\FOTOS_HTAS\" & Me.NOPARTE

Set fso = CreateObject("Scripting.FileSystemObject")
Set Carpeta = fso.GetFolder(strRuta)
Set Archivos = Carpeta.Files

' recorro la carpeta indicada, insertando en la coleccion los archivos
' que cumplen con la especificación
For Each Archivo In Archivos
Select Case fso.GetExtensionName(Archivo)
' las extensiones relacionadas aqui, serán las añadidas a la matriz
Case "jpeg", "jpg", "bmp", "gif", "png", "ico", "tif", "emf", "dib", "wmf"
misFotos.Add Archivo.Name
i = i + 1
End Select
Next

Set fso = Nothing
Set Carpeta = Nothing
Set Archivos = Nothing

Me.TimerInterval = 2500
' muestro la primera imagen
Me.visorimagen.Picture = strRuta & "\" & misFotos(1)
'Me.FOTOHTA.Picture = strRuta & "\" & misFotos(1)

Exit Sub

sol_err:
If err.Number = 2212 Then
Resume Salida
Else
MsgBox "Se ha producido el error " & err.Number & " " _
& err.Description
End If

End Sub

Saludos

Arbei

Avatar de Usuario
Neckkito
Moderador
Mensajes: 1232
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Crecimiento inesperado de la Base de Datos

Mensajepor Neckkito » Sab Nov 13, 2021 5:42 pm

Pues si no guardas las fotos en la base de datos no tiene nada que ver, al menos teóricamente, el código que puedas utilizar.

¿Has realizado un compactación de la base de datos? Te paso un enlace a un breve artículo que escribí hace unos años. Aunque quizá el detalle de donde se encuentran las opciones de las versiones de Access que menciono no sean un 100% aplicables a las nuevas versiones, pero el fondo que se explica en dicho artículo es totalmente aplicable a las aplicaciones actuales.

https://is.gd/bC3Ypd

Si ya realizaras compactaciones resulta muy difícil poder decir qué es lo que está pasando en tu aplicación al ser un caso tan concreto.

Saludos.
Access MVP 2017-2022
http://bit.ly/NckAccess

fercHO6
Nivel 3
Mensajes: 66
Registrado: Vie May 03, 2019 6:14 pm

Re: Crecimiento inesperado de la Base de Datos

Mensajepor fercHO6 » Jue Mar 31, 2022 3:30 am

Muy buena información, gran aporte al foro.
________________________________________________
Instalo internet en casa


Volver a “Cajón de sastre”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados