error 3027 No se puede actualizar. Base de datos u objeto de solo lectura
Publicado por Visor (74 intervenciones) el 22/04/2015 16:10:41
Estimados amigos por favor alguien me puede ayudar. He tomado un codigo creado por Jefferson Jimenez, es muy bueno el codigo pero parece que el lo aplica en acceso 2007 y yo tengo access 2010. El codigo es para activar todas las casillas de verificacion de los registros de un campo, con un solo boton de alternar. el codigo es el siguiente. He intentado pedirla al autor mismo la solucion pero parece que el ya no esta por estas paginas pues no me ha contestado.
Mi tabla es ASISTENCIA y el campo es Chkb1. El codigo es el siguiente:
formulario al activar registro:
Boton alternar, al hacer click:
Modulo 1:
Espero respuestas
Gracias
Mi tabla es ASISTENCIA y el campo es Chkb1. El codigo es el siguiente:
formulario al activar registro:
1
2
3
4
5
6
7
8
9
Private Sub Form_Current()
If MiRecordset(Consultar, "ASISTENCIA", "1", "1", -1) Then
BtnAlternar.Caption = "DesMarcar"
BtnAlternar.Value = True
Else
BtnAlternar.Caption = "Marcar"
BtnAlternar.Value = False
End If
End Sub
Boton alternar, al hacer click:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub BtnAlternar_Click()
Select Case BtnAlternar
Case -1
MiRecordset Actualizar, "ASISTENCIA", "1", , , -1
MsgBox "Ud selecciono " & _
MiRecordset(Cuenta, "ASISTENCIA", "1", "1", BtnAlternar) & " Casillas"
BtnAlternar.Caption = "DesMarcar"
Case 0
MiRecordset Actualizar, "ASISTENCIA", "1", , , 0
MsgBox "Ud quito la seleccion de " & _
MiRecordset(Cuenta, "ASISTENCIA", "1", "1", BtnAlternar) & " Casillas"
BtnAlternar.Caption = "Marcar"
End Select
Me.Refresh
End Sub
Modulo 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
Espero respuestas
Gracias
Valora esta pregunta


0