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