Access - Creación Recordset

   
Vista:

Creación Recordset

Publicado por rambling (149 intervenciones) el 10/05/2013 10:18:10
Estimados amigos, tengo un formulario basado en una tabla en el que en el evento al activar registro me ejecuta lo siguiente:
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
Private Sub Form_Current()
If Recibido = True Then
     Me.AllowEdits = False
 ElseIf Comunicado = False Then
      Me.AllowEdits = True
End If
NumA.Value = 0
NumB.Value = 0
NumC.Value = 0
NumD.Value = 0
NumE.Value = 0
Select Case TXTCARACTER
Case "A"
caracter = 9.5
NumA = NumA + 1
Case "B"
caracter = 8.5
NumB = NumB + 1
Case "C"
caracter = 7.5
NumC = NumC + 1
Case "D"
caracter = 6.5
NumD = NumD + 1
Case "E"
NumE = NumE + 1
caracter = 4
Case "N"
NumD = NumD + 1
caracter = 5
End Select


y asi hasta diecisiete campos. lo que quisiera es que este codigo fuese ejecutado desde un boton que me recorriese toda la tabla, creo que eso se podría hacer mediante un recordset pero mi experiencia con ello es nula por lo tanto solicito ayuda para ello.
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Creación Recordset

Publicado por angelessebas (14 intervenciones) el 10/05/2013 18:01:58
Hola,

Para crear un recordset:

' Definimos las variables:

Dim db as database
Dim rs as recordset

'activamos la BD:

Set db=Currentdb()

'Creamos el recordset:

' 1º.- Si queremos recorrer toda la tabla (Llamaré a la tabla Tebla1):

Set rs=db.OpenRecordset("Tabla1")

' 2º.- Si queremos recorrer una selección de dicha tabla (por ejmplo que un campo codigo sea igual a 1):

Set rs=db.OpenRecordset("Select * from Tabla1 where codigo=1")

' Para recorrer el recordset: Do While ... Loop
' Para saber si hemos llegado al final del recordset: EOF
' Para moverte al siguiente registro: MoveNext
' Cuando se crea el recordset, por defecto, se posiciona en el 1er registro
' Diremos: mientras no sea final de recordset ... hazme:

Do While not rs.EOF
..... aquí pondrías el código que quieres que se repita
rs.MoveNext
Loop

Me cuentas, saludos, Angeles
Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por rambling (149 intervenciones) el 12/05/2013 13:06:23
Si me recorre la tabla pero no me actualiza el registro,creo que para actualizar se debe abrir un tipo de recordset pero no se que tipo.
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
Private Sub Comando0_Click()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("IPEC")
 
Do While Not rs.EOF
 
NumA = 0
NumB = 0
NumC = 0
NumD = 0
NumE = 0
 
Select Case TXTCARACTER
Case "A"
caracter = 9.5
NumA = NumA + 1
Case "B"
caracter = 8.5
NumB = NumB + 1
Case "C"
caracter = 7.5
NumC = NumC + 1
Case "D"
caracter = 6.5
NumD = NumD + 1
Case "E"
NumE = NumE + 1
caracter = 4
Case "N"
NumD = NumD + 1
caracter = 5
End Select
..........mas sentencias y finalizo con:
rs.MoveNext
Loop
 
End Sub

como se actualizan los registros
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por angelessebas (14 intervenciones) el 12/05/2013 16:41:23
Hola,

No sé el campo de la tabla que quieres actualizar, supongo que es el campo caracter, harías:

Select Case TXTCARACTER
Case "A"
rs.edit
rs!caracter = 9.5
rs.update

es decir, editas el recordset, igualas el campo a actualizar al valor que quieres y por último actualizas.

Me cuentas, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por rambling (149 intervenciones) el 13/05/2013 01:35:56
Angeles, lo primero darte las gracias por las molestias.
Lo que pretendo es en función de 17 campos que tengo y en los que introduzco valores desde la A hasta la E me actualize otros tantos con su eqivalente numerico en funcion del valor introducido:
Si en el campo TXTCARACTER he introducido el valor A, me actualize elcampo CARACTER a 9,5 y el campo NumA al valor actual mas 1.
He seguido tus instrucciones y solo me actualiza la primera parte, el resto no.
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("IPEC")
Do While Not rs.EOF

rs.Edit
rs!NumA = 0
rs!NumB = 0
rs!NumC = 0
rs!NumD = 0
rs!NumE = 0
rs.Update

Select Case TXTCARACTER
Case "A"
rs.Edit
rs!caracter = 9.5
rs!NumA = NumA + 1
rs.Update
Case "B"
rs.Edit
rs!caracter = 8.5
rs!NumB = NumB + 1
rs.Update
Case "C"
rs.Edit
rs!caracter = 7.5
rs!NumC = NumC + 1
rs.Update
Case "D"
rs.Edit
rs!caracter = 6.5
rs!NumD = NumD + 1
rs.Update
Case "E"
rs.Edit
rs!NumE = NumE + 1
rs!caracter = 4
rs.Update
Case "N"
rs.Edit
rs!NumD = NumD + 1
rs!caracter = 5
rs.Update
End Select

esto seria para un solo campo, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por Angelessebas (14 intervenciones) el 13/05/2013 12:36:11
Hola,

Si txtCaracter es un cuadro de texto del formulario, tendrás que referirte a el de la forma:

Form!txtCaracter.Value

Me cuentas, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por rambling (149 intervenciones) el 14/05/2013 08:21:52
TXTCARACTER no es un cuadro de texto de un formulario, es un campo de tipo texto y en función del valor de ese campo le asigno un valor a un campo de tipo numerico llamado CARACTER y así en diecisiete campos de tipo texto con sus correspondientes campos de tipo númerico.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por Angelessebas (14 intervenciones) el 14/05/2013 12:49:19
Hola,

Si es un campo de la tabla sobre la que has basado el recrdset, lo tendrás que referir al recordset:

Rs!txtCaracter

*** En access todos los objetos se tienen que referir a dónde pertenecen, por eso te dije que si era un cuadro de texto lo tienes que referir al formulario dónde está ubicado, al ser un campo pue a la tabla o al recordset que la contiene... Etc.

Me cuantas, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación Recordset

Publicado por rambling (149 intervenciones) el 15/05/2013 08:31:06
Funciona perfectamente, hace lo que pretendía.
Muchisimas gracias, Angeles.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar