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,
Crecimiento inesperado de la Base de Datos
Re: Crecimiento inesperado de la Base de Datos
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.
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.
Re: Crecimiento inesperado de la Base de Datos
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
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
Re: Crecimiento inesperado de la Base de Datos
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.
¿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.
Re: Crecimiento inesperado de la Base de Datos
Muy buena información, gran aporte al foro.
________________________________________________
Instalo internet en casa
________________________________________________
Instalo internet en casa
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados