Grabar textbox en una bd acces2007

en un programa con visual basic 2010 como puedo grabar en una base de datos access 2007, los datos de unos textbox y que los vacíos no me de error. Me graba bien cuando todos los campos tienen datos, pero si no introduzco datos me da error.

gracias de antemano. Un saludo

1 respuesta

Respuesta
1

Cuando defines la base de datos de access debes especificar que los campos puedan contener valor null, si te da error es porque no has especificado que puedan ser null, por lo que si le pasas un valor null da error.

tengo puesto en la bd valor requerido = no y permitir longitud cero = si en todos los campos menos en uno que siempre tiene texto.

¿te refieres a eso?

asi me da error.

un saludo

Si, a eso me refería. Me harían falta mas datos del mensaje de error en concreto y como vinculas el textbox a la base de datos.

Private Sub Btnguardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnguardar.Click
If Btnguardar.Text = Guardar Then
Dim comandoguardar As New OleDbCommand( insert into clientes values (' & TextBox2.Text & ',' & TextBox21.Text & ',' & TextBox3.Text & ',' & TextBox1.Text & ', ' & TextBox4.Text & ',' & TextBox6.Text & ',' & TextBox5.Text & ',' & TextBox7.Text & ', ' & ComboBox1.Text & ',' & TextBox8.Text & ',' & TextBox9.Text & ',' & TextBox10.Text & ', ' & TextBox12.Text & ',' & TextBox13.Text & ',' & TextBox14.Text & ',' & TextBox15.Text & ', ' & ComboBox2.Text & ',' & ComboBox3.Text & ', ' & TextBox28.Text & ',' & TextBox26.Text & ', ' & TextBox27.Text & ') , conexión)
conexión.Open()
comandoguardar.ExecuteNonQuery()
conexión.Close()
MsgBox( REGISTRO GRABADO )
comandoguardar = Nothing
Else
Dim comandomodificar As New OleDbCommand( update clientes set cod_cli=' & TextBox2.Text & ', nombre_fiscal_cli=' & TextBox21.Text & ', nif_cli=' & TextBox3.Text & ', nombre_cli=' & TextBox1.Text & ', direccion_cli=' & TextBox4.Text & ', cod_postal_cli=' & TextBox6.Text & ', localidad_cli=' & TextBox5.Text & ', provincia_cli=' & TextBox7.Text & ', pais_cli=' & ComboBox1.Text & ', telefono_cli=' & TextBox8.Text & ', fax_cli=' & TextBox9.Text & ', movil_cli=' & TextBox10.Text & ', contacto_cli=' & TextBox12.Text & ', contacto_adm_cli=' & TextBox14.Text & ', mail_cli=' & TextBox13.Text & ', mail_adm_cli=' & TextBox15.Text & ', forma_pago_cli=' & ComboBox2.Text & ', vencimiento_cli=' & ComboBox3.Text & ', banco_cli=' & TextBox28.Text & ', dia_pago_1_cli=' & TextBox26.Text & ', dia_pago_2_cli=' & TextBox27.Text & ' where nombre_cli=' & TextBox1.Text & ' , conexión)
conexión.Open()
comandomodificar.ExecuteNonQuery()
conexión.Close()
MsgBox( REGISTRO MODIFICADO )
comandomodificar = Nothing
End If

da este error

No coinciden los tipos de datos en la expresión de criterios.

cuando graba todos los campos con texto, no da problemas, solo cuando los va a grabar y uno de ellos esta vacío

gracias

Realmente no se porque no te esta aceptando la base de datos los valores vacíos, pero sabiendo que en los valores null es donde esta el error, para corregir el fallo, comprueba que los textbox no tengan un valor null:

if isnull(textbox1.text) then textbox1.text = 0

El error que me indicas te esta diciendo que el valor del textbox no es compatible con el tipo de valor especificado en tu base de datos access, tal vez el tipo de datos indicado en la base de datos no acepta el tipo null, puede variar dependiendo de la version de access utilices

lo curioso de todo , es que cuando voy a modificar, si borro lo que esta en la caja de texto y modifico, no me da ningún error y sin embargo si ese mismo campo lo intento grabar vacio la primera vez, si me da error

lo curioso de todo , es que cuando voy a modificar, si borro lo que esta en la caja de texto y modifico, no me da ningún error y sin embargo si ese mismo campo lo intento grabar vacío la primera vez, si me da error

¿Has probado a darle a los textbox un valor = "" al cargar el formulario?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas