Programación General > Bases de Datos
Error "94" en tiempo de ejecucion: Uso no valido de Null
(1/1)
Zakyo:
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 ---Dim cn As New ADODB.Connection 'Creamos el objeto Connection.Private WithEvents rs As ADODB.Recordset 'Creamos el Recordset con soporte de eventos. Private Sub Command1_Click()'Movemos al primer registro del Recordset.rs.MoveFirst End Sub Private Sub Command2_Click()'Verificamos si no estamos antes del principio del Recordset.If rs.BOF = False Then rs.MovePrevious 'Movemos al registro anterior.End If End Sub Private Sub Command3_Click()'Verificamos si no estamos después del último elemento del Recordset.If rs.EOF = False Then rs.MoveNext 'Movemos al siguiente registro.End If End Sub Private Sub Command4_Click()'Movemos al último registro del Recordset.rs.MoveLast End Sub Private Sub Command5_Click() rs.Close 'Cerramos el Recordset.cn.Close 'Cerramos la conexión. 'Salimos de la aplicación.End End Sub Private Sub Command6_Click()rs.Update Array("nombre", "apellido", "telefono", "direccion", "correo"), _ Array(Text1.Text, Text2.Text, Text3.Text, Text4.Text, Text5.Text) rs.Update 'Actualizamos el registro. 'Verificamos si no ocurrió ningún problema.If rs.State = 1 Or rs.State = 0 ThenMsgBox ("El registro se ha actualizado con éxito.")ElseMsgBox ("Ha ocurrido un error al actualizar el registro.")End If End Sub Private Sub Command7_Click() rs.AddNewrs("nombre") = Text1.Textrs("apellido") = Text2.Textrs("telefono") = Text3.Textrs("direccion") = Text4.Textrs("correo") = Text5.Textrs.Update End Sub Private Sub Form_Load()Set rs = New ADODB.Recordset 'Activamos el Recordset. 'Abrimos la base de datos "agenda.mdb"cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:UsersRafaelDocumentsAccessagenda.mdb" 'Especificamos la fuente de datos. En este caso la tabla "contactos".rs.Source = "contactos"rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo. 'Abrimos el Recordset y lo llenamos con una consulta SQL.rs.Open "select * from contactos", cn rs.MoveFirst 'Nos movemos al principio del Recordset. 'Cargamos los datos en las cajas de texto.Text1.Text = rs.Fields("Nombre") 'Ponemos el nombre del registro actual.Text2.Text = rs.Fields("Apellido") 'Ponemos el apellido del registro actual.Text3.Text = rs.Fields("Telefono") 'Ponemos el teléfono del registro actual.Text4.Text = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.Text5.Text = rs.Fields("Correo") 'Ponemos el correo del registro actual. End SubPrivate Sub rs_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) 'Si estamos antes del principio del Recordset.If rs.BOF = True Then rs.MoveFirst 'Movemos al principio del Recordset. 'Si estamos después del ultimo elemento del Recordset.ElseIf rs.EOF = True Then rs.MoveLast 'Movemos al final del Recordset.Else'Si se cambio del registro actual del Recordset a otro.Text1.Text = rs.Fields("Nombre") 'Ponemos el nombre del registro actual.Text2.Text = rs.Fields("Apellido") 'Ponemos el apellido del registro actual.Text3.Text = rs.Fields("Telefono") 'Ponemos el teléfono del registro actual.Text4.Text = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.Text5.Text = rs.Fields("Correo") 'Ponemos el correo del registro actual.End If End Sub
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_:
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:
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
Navegación
Ir a la versión completa