Tema: Error 3021?
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/12/2007, 10:21
Avatar de juancho24
juancho24
 
Fecha de Ingreso: octubre-2007
Mensajes: 101
Antigüedad: 16 años, 6 meses
Puntos: 1
Pregunta Re: Error 3021?

Cita:
Iniciado por rahd_rr Ver Mensaje
hola...

según yo el problema esta en que estas asignando al recordset el valor del calendar a un registro que aun no agregas(cuando la tabla esta vacia) esto en cada click del calendar ...osea que no estas dando al
rs un addnew ya que cada vez que asignes al rs un valor debes tener listo el nuevo registro (addnew) registro abierto en espera de datos o bien el RS debe de estar apuntado a un registro existente(tabla no vacia)

por ejemplo si te das cuenta en la parte del codigo

1 rs.AddNew
2 Call Asignar_Datos
3 rs.Update

1 primero abres el registro nuevo, registro abierto en espera de datos(si la tabla esta vacia o no se crea un registro y ahora el RS apunta el este)
2 llamas la función que asigna los valores al rs que esta abierto(llenas el registro nuevo)
3 das update al registro que esta abierto
entonces al momento que das Clcik al Calendar tratas de asignar su valor a un registro que no no existe(tabla vacía)...

por lo tanto debes de validar que exista al menos un registro en la tabla (que no este vacía)...
if Not rs.BOF and Not rs.EOF then
rs.("fecaha") = valor
end if

con esto modifica el valor de la fecha en del registro al que apunta el rs en cada click del calendar obviamente no se modfica hasta que des el update

ademas date cuenta que el la función ..

Private Sub Asignar_Datos()
.....
....
rs("fecha") = Calendar1.Value
....
....
End Sub

ya asignas el valor del calendar al rs .....

ahora ... el por que solo cuando la tabla esta vacia te da ese error...
en el Load del form abres la conección y traes la consulta y la pones o guardas o se la asigans al RS (recodset) si la consulta te devuelve como resultado uno o mas registro el recordset se coloca en el primer registro (si no mal recuerdo ). por lo tanto estando en el primer registro o en cualquiera tu puedes acceder a los datos borrarlos o modificarlos etc ...
por lo tanto en cualquier momento tu puedes asignar un valor al registro en el que esta posicionado el RS esto es

rs("campo")= valor

y en caso que la consulta no te regrese ningún registro(tabla vacia) el RS esta Posicionado en el Principio(BOF) del RS y a su vez en el Final(EOF) y no tiene algún registro existente para asignar los datos, no apunta a ingun registro y si tratas de asignar o sacar un valor
rs("campor")=valor
variable=rs("campo")
te pinta el error...

espero te haya sido de ayuday espero haberme explicado claramente y no haberte confundido..

saludos.....

.... rahd rr

Hola

Mira la verdad estoy enredado con esto, mira valide que exista un registro en la tabla con lo que me dijiste, que era esto

if Not rs.BOF and Not rs.EOF then
rs("fecha") = Calendar1.value
end if


pero sigo teniendo el problema, no entendi que mas tenia que modificar,
porfavor me puedes responder k es lo que exactamente tengo que modificar

gracias

saludos