Access - Insertar un valor Null en Access con VS 2002

   
Vista:

Insertar un valor Null en Access con VS 2002

Publicado por sinosuke (1 intervención) el 13/01/2008 14:00:12
Tengo un programa que trabaja sobre access 2007. Y tengo varias consultas de inserción y actualización de datos y todas funcionan bien excepto en el supuesto en el que dejo algun campo de la tabla en blanco.
No se por qué, porque dentro de la configuración de la tabla en access tengo todos los campos como "no requeridos" y "permitir longitud cero". Pero cuando intento añadir alguna fila, en la que existe uno o mas campos vacios, siempre me salta el mismo error.

No se si el error se da en access, o en visual studio, pero me esta volviendo loco, porque no encuentro la solucion, he posteado este problema en varios foros de visual basic, y nadie ha sabido responderme.

Espero que puedan ayudarme, o darme una explicación de por qué ocurre esto.

Muchas gracias por anticipado
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

RE:Insertar un valor Null en Access con VS 2002

Publicado por Victoria (1530 intervenciones) el 13/01/2008 16:15:13
Hola:

Algo se me escapa, porque, he hecho pruebas y funciona perfectamente la anexion o actualizacion de datos si el campo es NULL o EMPTY.

Victoria
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

RE:Insertar un valor Null en Access con VS 2002

Publicado por sinosuke (2 intervenciones) el 13/01/2008 17:09:51
Gracias por responder Victoria, pues no lo entiendo, a lo mejor es error en el codigo, pero es que me resulta raro porque tengo hechas como 20 consultas o mas en ese programa, realizadas de una en una, sin copiarlas, y en todas me da el mismo error.

Esta es una de las consultas a realizar en la BD:

Dim cmd As New OleDbCommand("UPDATE DATOS_GENERALES SET Nombre_Empresa=@Nombre_Empresa, CIF=@CIF, Direccion=@Direccion, Poblacion=@Poblacion, Cod_Postal=@Cod_Postal, Provincia=@Provincia, Telefono=@Telefono, Fax=@Fax, Movil=@Movil, eMail=@eMail, Sitio_Web=@Sitio_Web, NRS=@NRS", cn)

Y aqui es donde introduzco los datos una vez pasados por una clase a parte para validarlos.

cmd.Parameters.Add("@Nombre_Empresa", OleDbType.LongVarWChar).Value = opersona.Nombre

cmd.Parameters.Add("@CIF", OleDbType.LongVarWChar).Value = opersona.CIF

cmd.Parameters.Add("@Direccion", OleDbType.LongVarWChar).Value = opersona.Direccion

cmd.Parameters.Add("@Poblacion", OleDbType.LongVarWChar).Value = opersona.Poblacion

cmd.Parameters.Add("@Cod_Postal", OleDbType.LongVarWChar).Value = opersona.CodPostal

cmd.Parameters.Add("@Provincia", OleDbType.LongVarWChar).Value = opersona.Provincia

cmd.Parameters.Add("@Telefono", OleDbType.LongVarWChar).Value = opersona.Telefono

cmd.Parameters.Add("@Fax", OleDbType.LongVarWChar).Value = opersona.Fax

cmd.Parameters.Add("@Movil", OleDbType.LongVarWChar).Value = opersona.Movil

cmd.Parameters.Add("@eMail", OleDbType.LongVarWChar).Value = opersona.eMail

cmd.Parameters.Add("@Sitio_Web", OleDbType.LongVarWChar).Value = opersona.Web

cmd.Parameters.Add("@NRS", OleDbType.LongVarWChar).Value = opersona.NRS

cmd.ExecuteNonQuery()
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

RE:Insertar un valor Null en Access con VS 2002

Publicado por Victoria (1530 intervenciones) el 13/01/2008 18:21:09
Hola:

No conozco ese código, así que, no puedo decir nada sobre él.

Lo único que se me ocurre es que trabajes directamente con Access y veas lo que te he dicho y luego trabajes con tu código, pero, con menos campos.

Si como dices no te funciona en esos casos de nulo o vacio, tal vez podrías filtrarlo de forma que si el campo es nulo te lo trasforme antes en vacio

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

RE:Insertar un valor Null en Access con VS 2002

Publicado por sinosuke (2 intervenciones) el 15/01/2008 20:02:55
Hola Victoria!

Te muestro el error que me devuelve cuando intento cargar los datos desde la tabla al programa, y existe un campo que esta vacio

La conversión del tipo 'DBNull' al tipo 'String' no es válida.

Y esta es la forma en la que leo los datos de la tabla:

Dim cmd As New OleDbCommand("SELECT * FROM DATOS_GENERALES", cn)
Dim dr As OleDbDataReader
Dim cadena As String
Dim x As Integer

cn.Open()
dr = cmd.ExecuteReader
Do While dr.Read
Me.txtempresa.Text = dr.GetString(0)
Me.txtcif.Text = dr.GetString(1)
Me.txtdireccion.Text = dr.GetString(2)
.......

Loop
cn.close()

Estaba haciendo algo parecido a lo que me indicabas en tu post, cuando el usuario dejaba un campo vacio, automaticamente por codigo, lo convertia en un espacio en blanco que guardaba en la BD, para evitar ese error, aunque ese espacio nunca se lo mostraba al usuario en los textbox, no se si me entiendes.
Pero es que no entiendo por qué no me acepta los registros nulos.

Espero que puedas ayudarme!
Muchas gracias por dedicarme tu tiempo
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

RE:Insertar un valor Null en Access con VS 2002

Publicado por Mike (1 intervención) el 17/05/2008 03:14:31
yo tengo el mismo problema que el compa sinosuke, estoy usando visual y access 2003. Si dejo un campo del formulario en blanco me marca error, tengo que llenarlos todos, pero en ciertas ocaciones ne3cesito dejar en blanco esos campos. ¿cual sera la solucion a este problema? Tambien tengo especificados los campos no requeridos en la base de datos.

Espero que alguien pueda ayudar
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

RE:Insertar un valor Null en Access con VS 2002

Publicado por Ariel (2 intervenciones) el 02/02/2010 13:32:10
También estaba buscando la solución. En mi caso lo resolví utilizando la función nz en el parámetro que pasaba a la consulta, definiendo así que deseo insertar Null.
Saludos

Set rs = db.OpenRecordset(cadenaSQL)

With rs
Do Until .EOF

cadenaSQL2 = "insert into AULAS (id_local, id_tipo_grado, id_grado, id_turno, seccion, id_especialidad)" & _
" VALUES ('" & Nz(rs!id_local, "Null") & "', " & Nz(rs!id_tipo_grado, " Null") & ", " & Nz(rs!id_grado, "Null") & ", " & Nz(rs!id_turno, "Null") & ", '" & Nz(rs!seccion, "Null") & "', " & Nz(rs!id_especialidad, "Null") & ")"
DoCmd.RunSQL cadenaSQL2
.MoveNext

Loop
End With
rs.Close
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