Access - Recorrer registros en un subformulario

   
Vista:

Recorrer registros en un subformulario

Publicado por Pablo (6 intervenciones) el 10/12/2010 14:40:57
Hola a quien me pueda ayudar. Paso a explicar:

Tengo un form el cual se nutre de la base Paciente
Este tiene a su vez un subform que se nutre de la base Muestra, con una casilla de verificacion que marca y desmarca la muestra.

Este subform tiene un boton para desmarcar todas las muestras que se hallan marcado con anterioridad...
Pero el problema es que solo me desmarca la muestra que esta en pantalla y no me recorre toda la base muestras para poner False en el campito de seleccion de la muestra.

Cabe destacar que si yo abro el subformulario por separado (o sea fuera del form principal) la rutina la hace perfecto.
El codigo que uso es el sig.:
Private Sub Borrar_Click()
DoCmd.GoToRecord , , acFirst
Dim Reg As DAO.Recordset
Set Reg = Me.Recordset

Do While Not Reg.EOF
Seleccion.Value = False
'DoCmd.GoToRecord , , acNext
Reg.MoveNext
Loop

End Sub
Mil gracias.
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

RE:Recorrer registros en un subformulario

Publicado por William Alexander (23 intervenciones) el 10/12/2010 18:06:25
No creo haber entendido completamente.
¿La accion del boton debe establecer el valor F en el campo X (T/F) de todos los registros de la tabla donde almacenas la muestras?

si es así, porque no usar

DoCmd.SetWarnings False
DoCmd.RunSql "UPDATE tblSamples SET FieldX = false"
DoCmd.SetWarnings True

y a continuacion refrescas el contenido del subformulario si es necesario.

Justo ahora no tengo access delante... escribi aqui directamente y de memoria.
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

RE:Recorrer registros en un subformulario

Publicado por Pablo (6 intervenciones) el 10/12/2010 18:16:04
Hola..
gracias por la respuesta...

pero esta parte: "UPDATE tblSamples SET FieldX = false"

"tblSamples" vendria a ser la consulta que yo tengo para abrir el subform?
o "tblSamples" es el nombre de la tabla, que en mi caso se llama Muestra?
y en mi caso: deberia poner Set Seleccion=false
Seleccion es el nombre del campo en la tabla muestras.

Trato de aprender un poco mas con esto, disculpá si no entiendo mucho....
Gracias nuevamente.
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

RE:Recorrer registros en un subformulario

Publicado por William Alexander (23 intervenciones) el 10/12/2010 18:26:29
Exactamente como dices. El string es el comando SQL que correspondería a una consulta de actualizacion, y si le puse arbitrariamente a la tabla el nombre tblSamples y al cmapo booleano FieldX.

Creo que si, como te indican, creas la consulta de actualizacion usando el diseñador de consultas y en lugar de guardarla te cambias para la vista SQL ahi tendras la cadena bien formada y sin errores, la copias de ahí y se la pegas en el codigo y listo. No es necesario que guardes la consulta que generabas.

No es necesario disculparse.
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

RE:Recorrer registros en un subformulario

Publicado por pepe (67 intervenciones) el 10/12/2010 18:17:05
Creo que tienes un pequeño lío montado. Usas 2 opciones entremezcladas.

OPCION1
-------------
DoCmd.GoToRecord , , acFirst
Do While Not IsNull(CampoClave)
Seleccion.Value = False
DoCmd.GoToRecord , , acNext
Loop

OPCION2
-------------
Dim Reg As DAO.Recordset
Set Reg = Me.Recordset
Do While Not Reg.EOF
Seleccion.Value = False
Reg.MoveNext
Loop

Estas opciones tienen el problema de que se puede ver en el formulario como pasan rapidamente todos los registros y es muy feo.

La opción correcta es utilizar SQL:

Private Sub Borrar_Click()
DoCmd.RunSQL("UPDATE Muestra SET Seleccion=False WHERE ....")
Me.Requery
End Sub

Si no conoces SQL, diseña la consulta en el asistente de Access y copia el texto SQL desde la vista SQL.
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

RE:Recorrer registros en un subformulario

Publicado por Pablo (6 intervenciones) el 10/12/2010 18:34:18
mira:

SELECT Muestra.rndcode, Muestra.CodMedico, Muestra.CodServicio, Muestra.CodigoMuestra, Muestra.CodMu, Muestra.Fecha, Muestra.Caja, Muestra.Freezer, Muestra.Estante, Muestra.Organizador, Muestra.Columna, Muestra.PosCaja, Muestra.Archivero, Muestra.CajonArchivero, Muestra.PosCajon, Muestra.Seleccion FROM Muestra;

esto me aparece en Origen de Registro cuando le hago click en el subformulario (en el cuadro de propiedades estoy hablando....)

es decir no hay una consulta HECHA para alimentar ese subformulario.
Tendré que hacerla??
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

RE:Recorrer registros en un subformulario

Publicado por William Alexander (23 intervenciones) el 10/12/2010 18:51:00
No es necesario hacerla. El subform se alimenta de los registros que genera la instruccion que arriba posteas.

Si creas la consulta no esta mal, pero despues en el valor de la propiedad Origen de Registros, seleccionarias el nombre de la consulta que acabas de crear. Pero esto no cambiaria gran cosa de lo que tienes hecho hasta ahora.

Lo mismo pasa con el codigo anterior que establecia en falso el campo Seleccion (¿es este verdad?) a Falso. Puedes crear desde la ventana de la base de datos (desde Access, no Visual Basic Editor, presiona F11) una nueva consulta, en el timpo de consulta seleccionar de actualizacion, añadir la tabla Muestra y seleccionar el campo Seleccion y en el valor ponerle Falso. Al guardar la consulta le pones un nombre descriptivo, por ejemplo cmdUnCheckAllSamples

Este nombre es el que usarias en el codigo. O sea:

DoCmd.RunSQL("cmdUncheckAllSamples").

Para evitar los mensajes donde te previenen de la cantidqad de filas que vas a actualizar usa antes y despues el metodo SetWarnings del objeto DoCmd

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

RE:Recorrer registros en un subformulario

Publicado por Pablo (6 intervenciones) el 10/12/2010 18:46:22
O sea que seria algo asi?

Private Sub Borrar_Click()
DoCmd.RunSQL("UPDATE Muestra SET Seleccion=False WHERE SELECT Muestra.rndcode, Muestra.CodMedico, Muestra.CodServicio, Muestra.CodigoMuestra, Muestra.CodMu, Muestra.Fecha, Muestra.Caja, Muestra.Freezer, Muestra.Estante, Muestra.Organizador, Muestra.Columna, Muestra.PosCaja, Muestra.Archivero, Muestra.CajonArchivero, Muestra.PosCajon, Muestra.Seleccion FROM Muestra; ")
Me.Requery
End Sub

O es una tremenda burrada????
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

RE:Recorrer registros en un subformulario

Publicado por Pablo (6 intervenciones) el 10/12/2010 18:50:02
No se como agradecerles...
me han salvado!!!!

con esto simplemente:

Private Sub Borrar_Click()
DoCmd.RunSQL("UPDATE Muestra SET Seleccion=False")
Me.Requery
End Sub

Mil gracias a todos los que colaboraron.!
Siempre se arende algo!
SAludos y buen finde!!!
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