Recordset DAO configurable y/o adaptable Access

Hace días preparando un ejemplo (Control de Almacén) necesitaba echar mano de muchos Recordset para agregar, comparar, actualizar, contar, eliminar muchos datos y debía estar creándolos uno a uno y me fastidia escribir tantas veces lo mismo

Así que pensé en crear una función Recordset que lo llamase y le indicara que deseaba hacer ......!!!! 

Pues nada la publico por si a alguien le gusta, la use...

El Codigo

Option Compare Database
Enum TipoAccion
Agregar = 1
Consultar = 2
Actualizar = 3
Elimina = 4
Cuenta = 5
End Enum

Function MiRecordset(AccioN As TipoAccion, _
                                LaTabla As String, _
                                Optional ElCampo As String, _
                                Optional CampoCriterio As String, _
                                Optional ElCriterio As Variant, _
                                Optional DatoAgrega As Variant) As Variant
On Local Error GoTo VerError
Dim rst As DAO.Recordset
Dim MiBd As Database
If CampoCriterio <> vbNullString Then
 If IsNumeric(ElCriterio) Then
     Set rst = CurrentDb.OpenRecordset("Select " & ElCampo & " from " & LaTabla & " where " & CampoCriterio & "=" & ElCriterio)
 End If
 If IsDate(ElCriterio) Then
      Set rst = CurrentDb.OpenRecordset("Select " & ElCampo & " from " & LaTabla & " where " & CampoCriterio & "=#" & ElCriterio & "#")
 End If
 If Not IsDate(ElCriterio) And Not IsNumeric(ElCriterio) Then
      Set rst = CurrentDb.OpenRecordset("Select " & ElCampo & " from " & LaTabla & " where " & CampoCriterio & "='" & ElCriterio & "'")
 End If

ElseIf ElCampo = vbNullString Then
  Set rst = CurrentDb.OpenRecordset("Select * from " & LaTabla)
ElseIf ElCampo <> vbNullString Then
Set rst = CurrentDb.OpenRecordset("Select " & ElCampo & " from " & LaTabla)
Else
Set MiBd = CurrentDb
MiBd.Execute ("Delete * from " & LaTabla)
Exit Function
End If
                 With rst
                      Select Case AccioN
                        Case 1
                        .AddNew
                         rst(ElCampo) = DatoAgrega
                        .Update
                        Case 2
                         While Not .EOF
                         MiRecordset = rst(ElCampo)
                        .MoveNext
                         Wend
                        Case 3
                        While Not .EOF
                        .Edit
                         rst(ElCampo) = DatoAgrega
                        .Update
                        .MoveNext
                        Wend
                        Case 4
                        If ElCampo <> vbNullString Then
                        .Delete
                        .MoveNext
                        End If
                        Case 5
                        If .EOF Then MiRecordset = 0
                        While Not .EOF
                        .MoveNext
                        MiRecordset = .RecordCount
                        Wend
                       End Select
                  .Close
                 End With
                Set rs = Nothing
          MiRecordset = MiRecordset
       Debug.Print MiRecordset
Exit Function
VerError:
MsgBox "Error #  " & Err.Number & vbCrLf & Err.Description, vbInformation
End Function
SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser
Comments