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