Visual Basic - error 94 en tiempo de ejecución VB 6.0 usando ADO

Life is soft - evento anual de software empresarial
   
Vista:

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por javier (13 intervenciones) el 07/05/2014 11:33:02
buenas a todos foreros

He estado buscando en varias páginas sobre este error, aun no conseguí resolverlo, por eso escribo esto, a ver si algún alma caritativa puede responderme :D, mi programa es bastante sencillo, consta de dos cuadros de texto, dos listas y cuatro botones, primero describiré visualmente la incidencia y posteriormente os dejo el código, vamos con la descripción visual:

Cuando inicia el programa sale el formulario con sus dos cuadros de texto, dos listas y sus respectivos botones siguiente y anterior y dos botones de búsquedas, la funcionalidad de esto es recorrer mi base de datos y que en los cuadros de texto salgan los campos conforme vamos avanzando, el botón de siguiente y anterior funcionan (es decir, recorre los campos) pero me produce error 94 en tiempo de ejecución siempre al llegar a un campo (sospecho que incluye algún valor nulo), a parte tengo un botón que realiza esta consulta:"select * from PROVEEDORES where PROVEEDOR like '%" & Text1.Text & "%'" y me añade los campos en una lista, este error es 94 también, pero solo se produce por ejemplo si mi búsqueda tiene solo una letra, es decir si busco "a" me da error pero si busco "ac", no me produce error de ningún tipo y el resultado de la consulta es correcto.

Ahora os escribo parte del código, pongo un botón, una lista, un cuadro de texto. El programa funciona, así que omito la conexión con la BD,el rs y el cierre de ambos, os subrayo donde esta el error:

Private Sub Comsiguiente_Click()

Dim varnull As String
varnull = Text2.Text

If IsNull(varnull) Then
Text2.Text = ""

End If

rs.MoveNext
If rs.EOF Then
rs.MoveFirst

End If

Text1.Text = rs.Fields("PROVEEDOR")
Text2.Text = rs.Fields("ARTICULOS QUE COMERCIALIZA")
End Sub

Private Sub Combuscartodos_Click()
rs.Close
rs.Open "select * from PROVEEDORES where PROVEEDOR like '%" & Text1.Text & "%'", db, adOpenDynamic, adLockOptimistic

List1.Clear
List2.Clear

If Not (rs.EOF And rs.BOF) Then

Do Until (rs.EOF Or rs.BOF)
List2.AddItem (rs.Fields("ARTICULOS QUE COMERCIALIZA"))
List1.AddItem (rs.Fields("PROVEEDOR"))
rs.MoveNext
Loop

Else
Text1.Text = "No se encontró registro"
List1.Clear

End If
rs.Close
rs.Open "select * from PROVEEDORES", db, adOpenDynamic, adLockOptimistic
End Sub


Espero haber realizado bien la pregunta y alguno de ustedes pueda responderme, muchas gracias a todos por vuestro tiempo
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

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por javier (13 intervenciones) el 08/05/2014 12:07:22
Hola de nuevo, he realizado otro proyecto igual pero con diferente tabla y campos y me funciona perfectamente, así que el error viene dado porque algunos de los campos tienen valores nulos, el problema es que este if que le puse no funciona porque me sigue dando el error 94 en tiempo de ejecución. ¿alguien sabe por que?.

If IsNull(varnull) Then
Text2.Text = ""
End If

Gracias de antemano.
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

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por Juan Gilberto (277 intervenciones) el 08/05/2014 17:11:38
Ejecuta el proyecto en tiempo de diseño y dinos en que linea especificamente se detiene el programa

Ahora...
Para evitar problemas con el valor nulo en campos de las tablas, lo que se tiene que hacer es proteger la escritura o grabacion de datos contra valores nulos
O si el diseño de tu proyecto te pide que uses valores nulos entonces antes de utilizar cualquier campo se tiene que preguntar si tiene valor nulo

En tu caso solo estas protegiendo el contenido de un textbox lo que es completamente ilogico puesto que un textbox nunca va a tener valor nulo ya que solo puede contener caracteres o estar vacio ("") lo que no significa que es nulo
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

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por javier (13 intervenciones) el 09/05/2014 09:38:49
buenas juan, gracias por responder, me he dado cuenta de que fuiste tu el que respondió a mi anterior pregunta, he estado profundizando bastante mas en mi problema, y creo sinceramente que viene de la BD, te explico por que, intentare describirlo lo mejor que pueda:

Tengo una base de datos access 2010, con 3 tablas, la tabla PROVEEDORES, MARCAS Y GRUPOS DE TRABAJO;
resulta que tengo hecho el programa en la tabla marcas, y va perfecto, no hay ningún error, es decir el programa no tiene ningún fallo, pero resulta que si realizo el mismo programa con la tabla PROVEEDORES, con algunos de los campos me salta el error 94 en tiempo de ejecución, pero OJO digamos que hago el programa con la tabla PROVEEDORES con el campo PROVEEDOR y el campo PROVINCIA, si quito el campo PROVINCIA y dejo solo PROVEEDOR el programa no da error, pero si le pongo algún campo como PROVINCIA, FAX u otros si me lo da.

Este programa es bastante sencillo solo tiene 4 command button dos listas y dos cuadros de texto, con dos botones (anterior y siguiente) recorro la tabla y con los otros dos hago consultas y recojo datos en la lista con rs, en definitiva, no encuentro el error, me imagino que sera por tener algún valor null en algún campos. si necesitais el código lo escribo pero creo que el fallo no esta en el programa ya que funciona igual con otras tablas.

Por cierto juan señale el error en el primer mensaje, subrayando donde me da el problema si hago click en un botón o el otro, por eso estan los dos rs subrayados.

Gracias de nuevo por contestar, a mis preguntas.
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

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por javier javidf92@gmail.com (13 intervenciones) el 09/05/2014 12:18:33
¡¡¡POR FIN!!!

Lo conseguí arreglar, el problema era que algunos campos contenían valores nulos al final me las tuve que ingeniar, y probando y probando al final escribí la sentencia correcta y lo mas importante, solo había que ponerla en el lugar adecuado.
Al principio en el "if is null" declaraba una variable de tipo variant, pero se me ocurrió poner directamente el "rs.fields" y no declarar ninguna variable, gracias a esto el error me dejo de salir, pero repito, hay que ponerla en el lugar adecuado para que no de error:

1
2
3
4
5
6
7
8
If IsNull(rs.Fields("ARTICULOS QUE COMERCIALIZA")) Then
List2.AddItem ("VALOR NULL")
rs.Update
 
Else
List2.AddItem (rs.Fields("ARTICULOS QUE COMERCIALIZA"))
 
End If

Así que nada, pongo esto por si alguno de vosotros tiene este error ,si alguien particularmente necesita saber donde se pone la instrucción para que no de error, me podéis mandar un correo y os resolveré la duda de ESTE sin problema.

Gracias a todos por leer, doy por resuelta la pregunta y espero que esto os ayude a resolver el dichoso "error 94 en tiempo de ejecución".

un saludo a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por xve (178 intervenciones) el 09/05/2014 13:08:48
Gracias por compartirlo Javier!!!
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

error 94 en tiempo de ejecución VB 6.0 usando ADO

Publicado por javier (13 intervenciones) el 09/05/2014 13:32:11
De nada ;) espero que sirva de ayuda.

Un saludo
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