Control de errores e interacción entre formularios

Nos había quedado pendiente evitar que nos quedaran campos vacíos en nuestra base,vamos a crear la rutina que controle esto. Busqué de muchas maneras, incluso posteé en el foro, pero la única solución que encontré fue la siguiente. Capaz que es un poco “traída de los pelos”, pero funciona. Primero creé una función que controla que los comboboxes contengan un valor no nulo y le asigna un valor a una variable que llamaremos justamente  valor. Como la vamos a necesitar en más de un procedimiento o función, la vamos a declarar en el principio del formulario con la siguiente sintaxis:

Private  valor as integer

Luego vamos a crear la función que revisa los comboboxes:

Private Function Control(cb As ComboBox)

If cb.Current.text = “” Then
valor = valor + 1

Endif
End

Luego el procedimiento al que le pasamos como parámetros lños seis comboboxes:

Private Sub controla_datos()
valor = 1
Control(cbxactor2)
Control(cbxactor)
Control(cbxactriz2)
Control(cbxactriz)
Control(cbxdirector)
Control(cbxgenero)

End

Finalmente, vamos a modificar el código de btnaceptar_Click para intercalar esta rutina, además de un sencillo if para controlar que el título sea escrito, que es aún más importante, pues su valor nunca puede ser Null.

If txttitulo.text = “” Then
Message(“Debe escribir el título”)
txttitulo.SetFocus
Else
controla_datos()
If valor <> 1 Then
Message(“Debe insertar todos los datos”)

Else
…..

Resumiendo, la función, cuando encuentra un combobox vacío  suma 1 unidad a la variable valor, esta valdrá uno solo cuando todos los combos están llenos.  Mientras valor<>(diferente) a 1 nos mostrará el mensaje de que faltan datos y no podremos guardar hasta llenar todo. No nos preocupa controlar el valuebox ni el datachooser, ya que ambos siempre tienen un valor  por defecto que se guardará en la base de datos.

En este momento el programa es totalmente utilizable para cargar las distintas tablas, su función primera, esla hora de comenzar a crear las distintas consultas para verlas por pantalla o imprimirlas . Y aquí, en la cantidad de posibles consultas es donde se complica la cosa.

A continuación, el código de los 7 procedimientos para consulta por pantalla:

Public Sub poractor()

Dim filtro As String
Dim clave As String

cargartabla

filtro = cbxactor.Current.text
hresul = hconn.Exec(“Select * from films  where actoruno like ‘” & filtro & “‘or actor2 like ‘” & filtro & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub poractriz()

Dim filtro As String
Dim clave As String

cargartabla

filtro = cbxactriz.Current.text
hresul = hconn.Exec(“Select * from films  where actrizuno like ‘” & filtro & “‘or actriz2 like ‘” & filtro & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub porambos()

Dim filtro As String
Dim filtro2 As String

cargartabla

filtro = cbxactriz.Current.text
filtro2 = cbxactor.Current.text
hresul = hconn.Exec(“Select * from films  where actrizuno or actriz2 like ‘” & filtro & “‘ AND  actoruno or actor2 like ‘” & filtro2 & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub portodos()

Dim filtro As String
Dim filtro2 As String
Dim filtro3 As String

cargartabla

filtro = cbxactriz.Current.text
filtro2 = cbxactor.Current.text
filtro3 = cbxdirector.Current.Text

hresul = hconn.Exec(“Select * from films  where actrizuno  like ‘” & filtro & “‘ AND  actoruno like ‘” & filtro2 & “‘ AND  director like ‘” & filtro3 & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub poranio()

Dim filtro As String

cargartabla

filtro = vbxanio.Value
hresul = hconn.Exec(“Select * from films  where anio like ‘” & filtro & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub portitulo()

Dim filtro As String

cargartabla

filtro = txtfilm.text
hresul = hconn.Exec(“Select * from films  where titulo like ‘” & filtro & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End

Public Sub pordirector()

Dim filtro As String

cargartabla

filtro = cbxdirector.Current.text
hresul = hconn.Exec(“Select * from films  where director like ‘” & filtro & “‘”) ‘consulta sql”
If hresul.Available = False Then
message(“no hay resultados que coincidan con su búsqueda”)
Else
Endif
mostrar

End
Siete procedimientos similares deberemos crear para sacar los reportes por pantalla. Lo veremos en un próximo post.

Anuncios
Esta entrada fue publicada en programación y etiquetada , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s