• Viernes 29 de Marzo de 2024, 10:20

Autor Tema:  Error "94" en tiempo de ejecucion: Uso no valido de Null  (Leído 10683 veces)

Zakyo

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Error "94" en tiempo de ejecucion: Uso no valido de Null
« en: Miércoles 15 de Septiembre de 2010, 16:19 »
0
Hola a todos, estoy siguiendo un manual de vb 6.0 para aprender a usar bases de datos, en uno de los ejercicios me solicitan que en un formulario coloque:

5 Etiquetas
5 TextBox
7 Botones(Primero, Anterior, Siguiente, Ultimo, Actualizar, Agregar y Salir)

El objetivo del ejercicio es lograr movernos agilmente en un base de datos, ya sea agregando actualizando o leyendo registros. El problema comienza en el boton "Agregar" Pues al ejecutar el programa me sale este error "Error "94" en tiempo de ejecucion: Uso no valido de Null". Mi codigo es el siguiente:

Código: Visual Basic
  1. Dim cn As New ADODB.Connection                 'Creamos el objeto Connection.
  2. Private WithEvents rs As ADODB.Recordset    'Creamos el Recordset con soporte de eventos.
  3.  
  4. Private Sub Command1_Click()
  5. 'Movemos al primer registro del Recordset.
  6. rs.MoveFirst
  7.  
  8. End Sub
  9.  
  10. Private Sub Command2_Click()
  11. 'Verificamos si no estamos antes del principio del Recordset.
  12. If rs.BOF = False Then
  13.     rs.MovePrevious  'Movemos al registro anterior.
  14. End If
  15.  
  16. End Sub
  17.  
  18. Private Sub Command3_Click()
  19. 'Verificamos si no estamos después del último elemento del Recordset.
  20. If rs.EOF = False Then
  21.     rs.MoveNext 'Movemos al siguiente registro.
  22. End If
  23.  
  24. End Sub
  25.  
  26. Private Sub Command4_Click()
  27. 'Movemos al último registro del Recordset.
  28. rs.MoveLast
  29.  
  30. End Sub
  31.  
  32. Private Sub Command5_Click()
  33.  
  34. rs.Close    'Cerramos el Recordset.
  35. cn.Close    'Cerramos la conexión.
  36.  
  37. 'Salimos de la aplicación.
  38. End
  39.  
  40. End Sub
  41.  
  42. Private Sub Command6_Click()
  43. rs.Update Array("nombre", "apellido", "telefono", "direccion", "correo"), _
  44.           Array(Text1.Text, Text2.Text, Text3.Text, Text4.Text, Text5.Text)
  45.  
  46. rs.Update  'Actualizamos el registro.
  47.  
  48. 'Verificamos si no ocurrió ningún problema.
  49. If rs.State = 1 Or rs.State = 0 Then
  50. MsgBox ("El registro se ha actualizado con éxito.")
  51. Else
  52. MsgBox ("Ha ocurrido un error al actualizar el registro.")
  53. End If
  54.  
  55. End Sub
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. Private Sub Command7_Click()
  65.  
  66. rs.AddNew
  67. rs("nombre") = Text1.Text
  68. rs("apellido") = Text2.Text
  69. rs("telefono") = Text3.Text
  70. rs("direccion") = Text4.Text
  71. rs("correo") = Text5.Text
  72. rs.Update
  73.  
  74.  
  75.  
  76.  
  77.  
  78. End Sub
  79.  
  80. Private Sub Form_Load()
  81. Set rs = New ADODB.Recordset    'Activamos el Recordset.
  82.  
  83. 'Abrimos la base de datos "agenda.mdb"
  84. cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:UsersRafaelDocumentsAccessagenda.mdb"
  85.  
  86. 'Especificamos la fuente de datos. En este caso la tabla "contactos".
  87. rs.Source = "contactos"
  88. rs.CursorType = adOpenKeyset        'Definimos el tipo de cursor.
  89. rs.LockType = adLockOptimistic        'Definimos el tipo de bloqueo.
  90.  
  91. 'Abrimos el Recordset y lo llenamos con una consulta SQL.
  92. rs.Open "select * from contactos", cn
  93.  
  94. rs.MoveFirst    'Nos movemos al principio del Recordset.
  95.  
  96. 'Cargamos los datos en las cajas de texto.
  97. Text1.Text = rs.Fields("Nombre")     'Ponemos el nombre del registro actual.
  98. Text2.Text = rs.Fields("Apellido")     'Ponemos el apellido del registro actual.
  99. Text3.Text = rs.Fields("Telefono")    'Ponemos el teléfono del registro actual.
  100. Text4.Text = rs.Fields("Direccion")   'Ponemos la dirección del registro actual.
  101. Text5.Text = rs.Fields("Correo")       'Ponemos el correo del registro actual.
  102.  
  103.  
  104.  
  105. End Sub
  106. Private Sub rs_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
  107.  
  108. 'Si estamos antes del principio del Recordset.
  109. If rs.BOF = True Then
  110.     rs.MoveFirst    'Movemos al principio del Recordset.
  111.    
  112. 'Si estamos después del ultimo elemento del Recordset.
  113. ElseIf rs.EOF = True Then
  114.     rs.MoveLast     'Movemos al final del Recordset.
  115. Else
  116. 'Si se cambio del registro actual del Recordset a otro.
  117. Text1.Text = rs.Fields("Nombre")    'Ponemos el nombre del registro actual.
  118. Text2.Text = rs.Fields("Apellido")   'Ponemos el apellido del registro actual.
  119. Text3.Text = rs.Fields("Telefono")  'Ponemos el teléfono del registro actual.
  120. Text4.Text = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.
  121. Text5.Text = rs.Fields("Correo")    'Ponemos el correo del registro actual.
  122. End If
  123.  
  124. End Sub
  125.  


Text1.Text = rs.Fields("Nombre")    'Ponemos el nombre del registro actual.   <<< Esta es la linea que me marca vb cuando depuro el error. Espero puedan ayudarme gracias de antemano.

ksc_

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Error "94" en tiempo de ejecucion: Uso no valido de Null
« Respuesta #1 en: Viernes 5 de Noviembre de 2010, 17:58 »
0
modifica esto al codigo


        Text1.Text = rs.Fields("Nombre") & ""
        Text2.Text = rs.Fields("Apellido") & ""
        Text3.Text = rs.Fields("Telefono") & ""
        Text4.Text = rs.Fields("Direccion") & ""
        Text5.Text = rs.Fields("Correo") & ""


se le agrega el signo de and en ingles (creo que no se ve bien con este codigo) y dos comillas.

saludos.

diego del cid

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re:Error "94" en tiempo de ejecucion: Uso no valido de Null
« Respuesta #2 en: Lunes 5 de Diciembre de 2011, 23:54 »
0

buen dia tengo un error 94 uso no valido de null
tengo dos option button un texbox dos comand button y un mshflexgrid
el primer option es detalle y el otro es juego
tengo un comand buscar y catalogo
y el textbox se llama txtbusca

se supone que si presiono cualquiera de los dos option y le doy en mi boton catalogo
tendira que aparecer mi tabla que yo seleccione,ya que antes habia enlazado una base de datos
y me da ese error
despues con los  option presiono cualquiera de los dos  , en  el txtbusca pongo un codigo que este en la tabla que yo seleccione
le doy en el boton buscar y tendria que aparecer la tabla selecionada con solo el codigo que yo ingrese en el texbox pero me da ese error de nuevo

este es el codigo
Private Sub catalogo_Click()
txtbusca.Text = ""
If Option1 = True Then
Call detalle
ElseIf Option2 = True Then
Call juego
End If
End Sub
Public Sub numero()
Dim n As Integer
For n = 0 To 1
MSHFlexGrid1(n).Visible = False
Next n
End Sub
Private Sub buscar_Click()
Dim z As String
Dim GT As ADODB.Recordset
Call numero
If Option1 = True Then
MSHFlexGrid1(0).Visible = True
MSHFlexGrid1(0).FormatString = "^cod_juego|^nombre_juego|^descripcion_juego|^precio_unitario|^fecha_entrada|^fecha_salida"
z = " select *from detalle where cod_juego = (" & txtbusca.Text & ") "
Set GT = New ADODB.Recordset
Set GT = conexion.Execute(z)
MSHFlexGrid1(0).Rows = 1
While Not GT.EOF
   MSHFlexGrid1(0).AddItem (Str(GT!cod_juego) + vbTab + GT!nombre_juego + vbTab + GT!descripcion_juego + vbTab + Str(GT!precio_unitario) + vbTab + Str(GT!fecha_entrada) + vbTab + Str(GT!fecha_salida))
   GT.MoveNext
Wend
ElseIf Option2 = True Then
MSHFlexGrid1(1).Visible = True
MSHFlexGrid1(1).FormatString = "^cod_juego|^fecha_entrada|^fecha_salida|^precio|^nombre_juego|^descripcion"
z = "select *from juego where cod_juego = (" & txtbusca.Text & ") "
Set GT = New ADODB.Recordset
Set GT = conexion.Execute(z)
MSHFlexGrid1(1).Rows = 1
While Not GT.EOF
    MSHFlexGrid1(1).AddItem (Str(GT!cod_juego) + vbTab + Str(GT!fecha_entrada) + vbTab + Str(GT!fecha_salida) + vbTab + Str(GT!precio) + vbTab + GT!nombre_juego + vbTab + GT!descripcion)
   GT.MoveNext
Wend
End If
End Sub

Private Sub Form_Load()
Call conecta
Label1.Caption = "ingrese codigo registro de la tabla a buscar"
End Sub
Public Sub juego()
Dim z As String
Dim GT As ADODB.Recordset
Call numero
MSHFlexGrid1(0).Visible = True
MSHFlexGrid1(0).FormatString = "^cod_juego|^fecha_entrada|^fecha_salida|^precio|^nombre_juego|^descripcion"
z = " select *from juego "
Set GT = New ADODB.Recordset
Set GT = conexion.Execute(z)
MSHFlexGrid1(0).Rows = 1
While Not GT.EOF
   MSHFlexGrid1(0).AddItem (Str(GT!cod_juego) + vbTab + Str(GT!fecha_entrada) + vbTab + Str(GT!fecha_salida) + vbTab + Str(GT!precio) + vbTab + GT!nombre_juego + vbTab + GT!descripcion)
   GT.MoveNext
Wend
End Sub
Public Sub detalle()
Dim z As String
Dim GT As ADODB.Recordset
Call numero
MSHFlexGrid1(1).Visible = True
MSHFlexGrid1(1).FormatString = "^cod_juego|^nombre_juego|^descripcion_juego|^precio_unitario|^fecha_entrada|^fecha_salida"

z = "select *from detalle"
Set GT = New ADODB.Recordset
Set GT = conexion.Execute(z)
MSHFlexGrid1(1).Rows = 1
While Not GT.EOF
   MSHFlexGrid1(1).AddItem (Str(GT!cod_juego) + vbTab + GT!nombre_juego + vbTab + GT!descripcion_juego + vbTab + Str(GT!precio_unitario) + vbTab + Str(GT!fecha_entrada) + vbTab + Str(GT!fecha_salida))
   GT.MoveNext
Wend
End Sub
ayudenme por favor