Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda

Estas en el tema de Ayuda en el foro de Visual Basic clásico en Foros del Web. Buenas amigos programadores en visual basic: Lo que pasa es q me genera una aplicacion el siguiente error error '3021' en tiempo de ejecucion: El ...
  #1 (permalink)  
Antiguo 09/02/2009, 09:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 15
Antigüedad: 15 años, 3 meses
Puntos: 0
Ayuda

Buenas amigos programadores en visual basic:

Lo que pasa es q me genera una aplicacion el siguiente error

error '3021' en tiempo de ejecucion:

El valor de BOF o EOF es true, o el actual registro se elimino; la operacion solicitada requiere un registro actual

Por favor necesito ayuda urgente nose que hacer ni porque lo genera, espero su ayuda pronto que esten muy bien.
  #2 (permalink)  
Antiguo 09/02/2009, 10:12
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Ayuda

Cita:
Iniciado por SYakoS Ver Mensaje
Buenas amigos programadores en visual basic:

Lo que pasa es q me genera una aplicacion el siguiente error

error '3021' en tiempo de ejecucion:

El valor de BOF o EOF es true, o el actual registro se elimino; la operacion solicitada requiere un registro actual

Por favor necesito ayuda urgente nose que hacer ni porque lo genera, espero su ayuda pronto que esten muy bien.
Pero... si no pones el código es casi imposible que te podamos ayudar!

  #3 (permalink)  
Antiguo 09/02/2009, 10:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 15
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ayuda

Bueno hay les posteo el codigo

If Validacion.State = 1 Then Validacion.Close
Validacion.Open cadena
cadena = "INSERT into MAESTROURBANO ("
cadena = cadena & " CONSECUTIVO, CONCEPTO, ESTADO, BENEFICIARIO, PAISORIGEN,"
cadena = cadena & " PAISDESTINO, DPTOORIGEN, DPTODESTINO, CIUDADORIGEN, CIUDADDESTINO, FACTURA,"
cadena = cadena & " PUNTO, RAZONSOCIALDESTINO, TELEFONODESTINO, DETALLE, DIRECCIONDESTINO, FECHAESTADO)"
cadena = cadena & " VALUES ( " & Validacion("GUIA_urbana") & ", 'UR', 0, 520520127,"
cadena = cadena & " 1, 1, 26, " & IIf(Len(Validacion("DPTO")) = 0, 0, Validacion("DPTO")) & ", 1, " & IIf(Len(Validacion("CIUDAD")) = 0, 0, Validacion("CIUDAD")) & ", "
cadena = cadena & " 0, 0, '" & Mid(Validacion("RAZONSOCIAL"), 1, 50) & "',"
cadena = cadena & "'" & Mid(Validacion("TELEFONO"), 1, 20) & "', 'ENTREGA FACTURA ',"
cadena = cadena & "'" & Mid(Validacion("DIRECCION"), 1, 150) & "', GETDATE())"

QMovimiento.ActiveConnection = cnurbano
QMovimiento.CommandText = cadena
QMovimiento.Execute


Y el error que me genera es en la linea que aparece en rojo espero me puedan ayudar porq no encuentro solucion a este problema
  #4 (permalink)  
Antiguo 09/02/2009, 13:14
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Ayuda

Qué tal?

El primer error que veo en el código es que invocas al método Open y no sabemos si en ese momento la variable cadena contiene algo y es válido.

De todas formas, el código de error significa que el recordset está vacío; para evitar el mensaje, debes, o bien comprobar la propiedad RecordCount (que en tu ejemplo seguramente te devolverá cero o -1), o bien poner una comprobación:

Código:
If Validacion.EOF Or Validacion.BOF Then
    ' No hay ningún registro activo
Else
    ' Todo va bene
End If
Si EOF (End Of ¿File? - Fin de ¿fichero?)es Verdadero, significa que el recordset apunta a la última fila del recordset (ejecutar MoveNext elevaría un error interceptable). Si BOF (Beginning of F. - Principio de lo que sea) significa que el recordset apunta al registro anterior al primero, es decir, al aire. En este caso, ejecutar MovePrevious es lo que generaría el error. Como puedes deducir, si ambos son verdaderos, es que algo pasa .

Te recomiendo la segunda forma de comprobación, ya que hay engines de bases de datos que por ODBC siempre devuelven -1 en RecordCount aunque el recordset esté poblado.

Pon siempre un mecanismo de comprobación de este tipo para ahorrarle al usuario mensajes que no va a entender, pero revisa también que la instrucción SQL se concatena correctamente y devuelve al menos una fila.

Y como consejo final, comprueba el estado del recordset así:

If Validacion.State = adStateOpen Then ...

es más legible y eficaz
__________________
wile sona li mute e sona
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.