Guardar Datos Rápido en tabla access

Tengo un botón para guardar en un formulario Access, el cual valida que los campos estén llenos antes de guardar en la tabla y funciona perfectamente en mi computadora, tarda alrededor de 1 segundo en guardar, el problema está en que este Access lo tengo en una carpeta en Red y lo usan en otras computadoras un poco antiguas y en estas compus el guardar tarda hasta 5 segundos para cada registro.

He tratado de buscar en internet como optimizar el guardar pero no tengo idea como hacerlo.

Si alguno de ustedes sabe cómo puedo puede hacer para que el guardar sea más rápido se lo agradezco de antemano

El código del botón es el siguiente:

Private Sub BtnGuardar_Click()

Dim db As Database

Dim rs As Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("tblConversation")

    Dim msg As String, estilo, title As String

    estilo = vbCritical + vbOKOnly

    title = "Error en la inserción por falta de datos"

Msg = "No se han podido crear los registros solicitados por no existir ninguna entrada en el campo "

    If IsNull(Me.txt_Num_Identificacion) Then

        msg = msg & "Identificación."

        MsgBox msg, estilo, title

        Me.txt_Num_Identificacion.SetFocus

        Exit Sub

    End If

    If IsNull(Me.txt_NOMBRE_COMPLETO) Then

        msg = msg & "No has buscado al Paciente."

        MsgBox msg, estilo, title

        Exit Sub

    End If

    If IsNull(Me.txtTipo) Then

        msg = msg & "No has buscado el Tipo de Documento."

        MsgBox msg, estilo, title

        Me.txtTipo.SetFocus

        Exit Sub

    End If

    If IsNull(Me.TxtCodigoEspecialidad) Then

        msg = msg & "Código de la Especialidad."

        MsgBox msg, estilo, title

        Me.TxtCodigoEspecialidad.SetFocus

        Exit Sub

    End If

    If IsNull(Me.txtNom_Esp) Then

        msg = msg & "Nombre de la Especialidad."

        MsgBox msg, estilo, title

        Me.txtNom_Esp.SetFocus

        Exit Sub

    End If

rs.AddNew

rs!Conversation1 = fOSUserName() & " "

rs!Num_Identificacion = " " & txt_Num_Identificacion

rs!Paciente = " " & txt_NOMBRE_COMPLETO

rs!Consulta = "" & txtNom_Esp

rs!Tipo = "" & txtTipo

rs!Observaciones = "" & txtObservaciones

rs.Update

rs.Close

db.Close

txt_Num_Identificacion.SetFocus

txt_Num_Identificacion = Null

txtNom_Esp = Null

txtTipo = Null

txtObservaciones = Null

txt_NOMBRE_COMPLETO = Null

End Sub

2 respuestas

Respuesta
1

Yo todas las inserciones las hago con CurrentDb.execute como en el video.

https://www.youtube.com/watch?v=zmSLysmFpF0&t=87s 

Y antes de inserta valido los campo por ejemplo

 If IsNull(Me.Nombre) Or IsNull(Me.Apellidos) Or IsNull(Me.Edad) Or IsNull(Me.EstadoCivil) Then
        MsgBox "FALTAN CAMPOS DE LLENAR" & vbLf & vbLf & "Verifique.", vbInformation, "Aviso"
 Else
         CurrentDb.Execute "INSERT INTO TblCrud(Id,Nombre,Apellidos,Edad,EstadoCivil,Fecha)VALUES(" & Me.Id & ",'" & Me.Nombre & "', '" _
                          & Me.Apellidos & "'," & Me.Edad & ", " & Me.EstadoCivil & ", #" _
                          & Format(Me.Fecha, "mm/dd/yyyy hh:nn:ss") & "# )", dbFailOnError
End If
Respuesta
1

¿Has probado a poner en la tabla esos campos simplemente como requeridos?. Ya se encarga el sistema de decirte que campo te has dejado en blanco.

Y para guardar el registro basta con poner simplemente

Docmd. Runcommand accmdsaverecord

¡Gracias!

No había pensado en el Requerido pero es buena tu idea la tomare en cuenta !

Con Docmd. Runcommand accmdsaverecord me da problemas por eso prefiero utilizar los INSERT.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas