Access - Modo escritura recordset

 
Vista:

Modo escritura recordset

Publicado por malena (4 intervenciones) el 20/04/2006 05:33:29
Una consulta tengo el siguiente codigo

Set rs = CurrentDb.OpenRecordset("SELECT SUM(Congresista.suma_votos) as sum_cong,Congresista.id_partido FROM Congresista, Partido WHERE Congresista.id_departamento=" & h & " and Partido.id_partido=Congresista.id_partido and Partido.flag = 1 GROUP by Congresista.id_partido")

y luego quiero utilizar la funcion

rs.delete

pero me sale error en que dicho objeto es solo de lectura como hago para hacer que sea de escritura porfavor me responen
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:Modo escritura recordset

Publicado por Enrique (1299 intervenciones) el 20/04/2006 10:15:14
Malena, prueba abriendo en Recordset como Dynaset, porque si no lo pones, por defecto lo abre como Snapshot (no actualizable):

.......by Congresista.id_partido", DbOpenDynaset)

Saludos
Enrique
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:Modo escritura recordset

Publicado por malena (4 intervenciones) el 20/04/2006 16:50:03
Hola Enrique mira he probado con lo que me dices y pues sigue saliendome el error de que es solo de escritura, tienes otra idea de lo que puede ser

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:Modo escritura recordset

Publicado por Enrique (1299 intervenciones) el 20/04/2006 18:26:10
Hola Malena:
Pués creo que si sé lo que pasa; no me habia fijado que dentro de la sentencia SQL tienes un SUM(Congresitas.suma_votos). Es lo mismo que si intentas actualizar una consulta de agrupamiento porque ese tipo de consultas no son actualizables aunque en tu caso lo hagas por medio de un Recordset. Como no entiendo exactamente que es lo que quieres borrar y en cuantas tablas, ahora no se qué decirte, pero podrías probar a abrir un Recordset distinto por cada tabla, filtrando con Where los registros a eliminar y hacer un rs.Delete por cada una, en lugar de actuar sobre el conjunto. Me parece observar que son dos tablas las que intervienen: Partidos y Congresistas. Pienso tambien (aunque puedo equivocarme) que si se trata de eliminar ¿ que importa si los campos están sumados o sin sumar ?

De todas formas cuando lo pruebes pon siempre al final el DbOpenDynaset. Recuerda que para usar rs.Delete con diferentes Recordset, antes de abrir el siguiente tienes que cerrar el primero con rs.Close.

Ya me diras si lo consigues así.

Saludos
Enrique
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:Modo escritura recordset

Publicado por malena (4 intervenciones) el 20/04/2006 19:02:05
Hola Enrique

Todas estas consultas es para hallar el metodo de la cifra repartidora cuando hay elecciones de congresistas entonces yo puse esta consulta dentro de un for
debido a que queria saber la suma de votos por departamento y por partido politico y hacer pues el procedimiento de la cifra repartidora, pero antes de recorrer el recordset con
While Not rs.EOF
puse la condicion
If Not rs.NoMatch Then para que se ejecute solo si existia una registro en el recordset ya que si no existe quiere decir que no existe postulantes en ese partido y por lo tanto no debe ingresar.
Y como veras en la primera vez pues normal cumple ya que el recordset esta vacio pero para el siguiente departamento asi no exista postulantes en dicho partido entra ya que el recordset ya no esta vacio y pues al recorrer con not rs.EOF pues me sale el error de no existe registro

y pues por eso queria utilizar el rs.delete para q se elimine y pues funcione la funcion rs.NoMatch
Pero segun lo que me comentas no funcionaria entonces estaba pensando si el recordset en este caso de nombre rs puede ser un vector y pues asi decirle que son recordset distintos

Espero me entiendas
y gracias por tu respuesta
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:Modo escritura recordset

Publicado por Enrique (1299 intervenciones) el 20/04/2006 19:58:33
Hola Malena:
Pues te iva entendiendo más o menos hasta que has nombrado la palabra Vector, ahí ya me he perdido poque no sé lo que tu entiendes por vector. Yo creo que podrías usar la consulta sql completa para detectar si existe o no registro aunque no sea actualizable, pero luego para eliminar deberás actuar independientemente sobre cada una de las tablas, no veo otra solución, claro que tampoco termino de comprenderlo.

Saludos
Enrique
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:Modo escritura recordset

Publicado por malena (4 intervenciones) el 21/04/2006 05:41:29
Hola enrique

mira yo me referia a que podia utilizar el rs que seria un recordset como una variable de tipo vector (matriz) es decir declarar
dim rs(100) as recordset
como si fuera que he declarado 100 variables de tipo recordset por el problema q te comentaba q dicha consulta esta dento de un for y pues necesariamente necesito utilizar dicha consulta

He probado de esta forma y pues parece que si funciona lo digo asi porque he verificado con algunos departamentos nada mas

Gracias por tu ayuda
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