Al dar una nueva alta en formulario, poder insertar valor .

Tengo un formulario independiente (FrmDatosPersonales), el cual utilizo para dar altas, todo me funciona bien. Lo que me ocurre y no sé cómo arreglarlo, es lo siguiente:

Resulta que tengo las siguientes instrucciones en los campos Arena, cboEstadovehiculo y cboImplicado, (al perder el enfoque), para cuando no hay datos me los rellené, con ---- como dije todo me funciona bien, al dar las altas.

Private Sub Arena_LostFocus()

If IsNull(Arena) Then

 Arena.Value = "-------------------"

End If

End Sub

Private Sub cboEstadovehiculo_LostFocus()

If IsNull(cboEstadovehiculo) Then

 cboEstadovehiculo.Value = "-------------------"

End If

End Sub

Private Sub cboImplicado_LostFocus()

If IsNull(cboImplicado) Then

 cboImplicado.Value = "-------------------"

End If

End Sub

Una vez rellenados todos los campos, he puesto un mensaje donde digo si deseo guardar los datos, una vez aceptados, me vuelve a salir otro mensaje donde digo los datos han sido guardados y si deseo dar una nueva alta. Pero aquí es cuando me sucede lo siguiente, cuando intento dar de alta otro nuevo registro, una vez borrados todos los datos del formulario, y si deseo dar un alta y no existen datos en los tres campos mencionados anteriormente no me los rellena, con ------.

Diré que cuando borro los datos del formulario para dar nuevas altas uso la siguiente instrucción:

With Forms!FrmDatosPersonales

………

!Arena2 = ""

!cboImplicado = ""

!cboEstadovehiculo = ""

End With 

Como podría solucionarlo, para que cuando desee dar una nueva alta me funcione lo anteriormente expuesto.

3 respuestas

Respuesta
1

Veo una contradicción dice "... Todo me funciona bien..." pero después dice .."no sé cómo arreglarlo"...

El formulario Forms! ¿FrmDatosPersonales lo llama desde otro formulario?

Para asignar un formulario a una variable debe establecerlo mediante la sentencia SET

Algo como:

    Dim miForm As Form
    Set miForm = Forms!FrmDatosPersonales
    With miForm
     .Arena2 = Null
     .cboimplicado = Null
     .cboEstadovehiculo = Null
    End With

Esto es una idea 

Respuesta
1

Un formulario independiente tiene muy 'poca 'memoria' y un cuadro de texto (que admite cualquier cosa como valor) si se le asigna una cadena vacía ... ya no es un NULL (cuando se abre el formulario todos los campos se inician con el valor NULL).

Pregunta: ¿Por qué se le asigna una cadena vacía si se le puede asignar un NULL?.

Respuesta
1

No sé si he entendido bien la pregunta, pero por lo que dices, el formulario es independiente. Vamos a suponer que es así. Si tengo la tabla Copia como

Y tengo un formulario donde por comodidad le he puesto los mismo nombres que los campos

Escribo un nombre de cliente y pulso el botón Guardar

Si le digo Aceptar me rellena esos controles "vacíos" que dices

Y me deja la tabla Copia como

Y si pulso el botón Nuevo Registro, me deja el formulario como

El código del botón Guardar es

Private Sub Comando8_Click()
If MsgBox("Desea guardar los datos", vbOKCancel + vbQuestion, "Luego no te quejes") = vbOK Then
If IsNull([Arena]) Then
Arena = "Mojada"
End If
If IsNull([EstadoVehiculo]) Then
EstadoVehiculo.Value = "Destrozado"
End If
If IsNull([Implicado]) Then
Implicado.Value = "Conductor"
End If
DoCmd. RunSQL "insert into copia(cliente, arena, estadovehiculo, implicado)values(cliente, arena, estadovehiculo, implicado)"
Else
Exit Sub
End If
End Sub

Y el código del botón Nuevo Registro es

Private Sub Comando9_Click()
For Each Control In Form.Controls
If Control.ControlType = acTextBox Or Control.ControlType = acComboBox Then
Control.Value = ""
End If
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas