Insertar datos vía formulario independiente error conversión de datos

De antemano te agradezco si decides darte un tiempo para responder a mi interrogante, bueno sin más paso a explicar esta.

Sucede que decidí trabajar en una formulario independiente, en el ingrese varias pestañas las cuales poseen diversos textbox y combobox, así como botones etc. Cada pestaña trabaja con una tabla diferente, todas relacionadas en la base de datos, el problema surge cuando deseo ingresar datos a través de un botón llamado "ingresar", te dejo el código:

Private Sub Ingresar_Click()
On Error GoTo Err_Ingresar_Click
If IsNull(Me.N_SERIE.Value) Or IsNull(Me.FECHA_INGRESO.Value) = False Then
Dim Rst As DAO.Recordset
'Abrimos la tabla que queremos...
Set Rst = CurrentDb.OpenRecordset("Select * FROM COMPONENTE")
'Añadimos un registro...
Rst.AddNew
'Rellenamos los campos...
Rst("N_SERIE") = N_SERIE.Value
Rst("DESCRIPCIÓN") = DESCRIPCION_COM.Value
Rst("MARCA") = MARCA.Value
Rst("MODELO") = MODELO.Value
Rst("FRAME") = FRAME.Value
Rst("CANTIDAD") = IIf(IsNull(Form!CANTIDAD.Value), 0, Form!CANTIDAD)
Rst("POTENCIA") = POTENCIA.Value
Rst("COD_REPARABLE") = IIf(IsNull(Form!CR.Value), 0, Form!CR)
Rst("VALOR_NUEVO") = IIf(IsNull(Form!VALOR_NUEVO.Value), 0, Form!VALOR_NUEVO)
Rst("COD_STOCK") = CODIGO_STOCK.Value
Rst("F_ING_COMP") = FECHA_INGRESO.Value
'Grabamos los datos...
Rst.Update
Rst.Close
Set Rst = Nothing
Else
MsgBox "Debe ingresar n° de Serie o una fecha válida", vbInformation + vbOKOnly, "A V I ES O"
End If
Exit_Ingresar_Click:
Exit Sub
Err_Ingresar_Click:
MsgBox Err.Description
Resume Exit_Ingresar_Click
End Sub

Con el primer registro lo inserta sin problemas, luego para poder borrar todos los campos implementé un botón llamado "Limpiar", su código:

Me.N_SERIE = ""
Me.DESCRIPCION_COM = ""
Me.MARCA = ""
Me.MODELO = ""
Me.FRAME = ""
Me.CANTIDAD = ""
Me.POTENCIA = ""
Me.CR = ""
Me.VALOR_NUEVO = ""
Me.CODIGO_STOCK = ""
Me.FECHA_INGRESO = ""

El problema se da cuando presiono el botón limpiar para poder ingresar en una segunda oportunidad, ya que me dice que hay problemas de conversión de datos, me he fijado que ese problema se da porque un campo es de tipo entero y no acepta nulos, y también me fije que al presionar el botón limpiar el código no se vuelve a recorrer completo, ya que no ejecuta los If(IsNull) y estos me hacen nulos los campos si es que no se ha ingresado nada, los cuales SI funcionan cuando ingreso pro primera vez los registros y también cuando borro los campos manualmente.

Te agradezco muchísimo, espero me puedas ayudar con mi problema ya que bastante tiempo me ha tenido buscando una solución.

1 Respuesta

Respuesta
1

El problema es porque a los campos les asignas un valor de texto ("" que es una cadena vacía) en vez de un valor nulo.

Puedes hacer lo siguiente en el botón limpiar:

Me.N_SERIE = Null
Me.DESCRIPCION_COM = Null
Me.MARCA = Null
Me.MODELO = Null
Me.FRAME = Null
Me.CANTIDAD = Null
Me.POTENCIA = Null
Me.CR = Null
Me.VALOR_NUEVO = Null
Me.CODIGO_STOCK = Null
Me.FECHA_INGRESO = Null

Gracias maestro me ha funcionado, pero tomé la decisión de realizar formulario dependientes y vincularlos con tablas,ya que trabajar con formularios independientes es más complejo, ahora si me permites abusar un poco de tu amabilidad me gustaría si me tienes por ahí un ejemplo de formularios, un formulario que contenga varios formularios y que estéticamente se vea bien.

Te agradezco muchísimo por tu respuesta, pocas personas se dan el tiempo de ayudar a los demás.

Saludos

Desgraciadamente, no puedo pasarte ejemplos, me dedico profesionalmente a la programación con Access, y lo que tengo es propiedad de las empresas para las que los he desarrollado, pero te puedo dar unas pautas básicas pero que te funcionarán siempre.

Fíjate cómo están hechos los programas del paquete Office y en general los programas de Microsoft; fondos en gris claro; fuentes de letras claras (Arial, Times New Roman o Tahoma), en color negro y un tamaño entre 8 y 10 puntos para el texto normal y de hasta 18 - 20 para los títulos. No abuses de la negrita ni la cursiva.

No utilices colores chillones, a la larga cansan la vista.

Si puedes utiliza el ajuste automático de los formularios, y puedes poner el centrado automático también.

No sobrecargues los formularios con muchos controles, tampoco pongas los controles excesivamente juntos ni demasiado separados. Un formulario con muchos controles tardará más en cargarse.

Aunque lo veas más complicado, siempre es mejor tener los formularios independientes de las tablas, cargando los datos a medida de que los necesites por medio de consultas, y haz las actualizaciones de datos por medio de VBA y SQL.

Mucha suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas