Codificación: Ejecutando procedimientos en frmPedidos

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

< Creación de nueva pantalla para mantenimiento de grupos de firmas


Planteamiento inicial

Volvemos a la pantalla de pedidos para añadir la funcionalidad necesaria a la botones que creamos tanto en el grid como en la botonera principal.


Formulario de Pedidos


Firmar línea (botón en grid)

En el punto anterior hemos creado un botón en el grid "grdLineas", accesible mediante su menú contextual, para firmar líneas de forma individual.


Firmar una única línea podríamos hacerlo mediante codificación SQL dentro de la llamada del propio botón, no obstante, como nuestra finalidad es crear un proceso que pueda firmar una o todas las líneas. llamaremos a un procedimiento almacenado que previamente hemos creado y, en función de nuestras necesidades, le pasaremos uno u otro parámetro. El ejemplo del procedimiento almacenado que usaremos se puede encontrar en el fichero adjunto pPers_FirmaPedidos.sql. Dicho procedimiento valida una línea, si se le pasa ésta como parámetro, o el pedido completo en caso contrario. Si las líneas están validadas elimina dicha validación y comprueba si están todas las líneas validadas para realizar una completa de todo el pedido.


 IMPORTANTE: Es aconsejable que la ejecución de los procesos de actualización en base de datos se realice siempre por procedimiento almacenado


Como hemos creado el menú sólo tendremos que capturar el evento del grid MenuAfterExecute, más información aquí, y pasarle los parámetros correspondientes.


  If aGrid.name = "grdLineas" Then
    ' Si estamos situados en una línea...    
    If CLng(aGrid.getValue("IdLinea")) >= 1 Then 
    
      If aMenuItem.Name = "Pers_mnuFirmar" Then
        Set Params = gCn.DameNewCollection
        Params.Add CLng(gcn.IdEmpleado)
        Params.Add CLng(gForm.Controls("IdPedido").Text)
        Params.Add CLng(aGrid.getValue("IdLinea"))
        
        retVal = gcn.EjecutaStoreCol("pPers_FirmaPedidos", params)
        If Not retVal Then 
		MsgBox "Error firmando la línea de pedido",vbCritical,"Error Firma"
	  Else
		aGrid.Refrescar
		gForm.Controls("Pers_GrdHcoFirmas").Refrescar
		gForm.Controls("EObjeto").Refresh
		
		If gForm.Controls("EObjeto").ObjGlobal.Propiedades("Pers_Validado") Then
                  gForm.Controls("mnuMain").Tools("mnuAlbaran").visible = True
                Else
                  gForm.Controls("mnuMain").Tools("mnuAlbaran").visible = False
                End If
		
        End If    
      End If
      
    End If
    
  End If


Firmar línea (botón en formulario)

Puesto que hemos codificado la lógica necesaria para firmar pedidos en nuestro procedimiento haremos lo mismo para el botón principal desde el evento AfterExecute de la Botonera, omitiendo el parámetro "IdLinea" al que hemos dado un valor por defecto de "0" que determina el pedido completo, más información sobre el evento en el siguiente documento.


  If aBoton.name = "Pers_ValidarPedido" Then
	Set Params = gCn.DameNewCollection
     	Params.Add CLng(gcn.IdEmpleado)
     	Params.Add CLng(gForm.Controls("IdPedido").Text)
        
     	retVal = gcn.EjecutaStoreCol("pPers_FirmaPedidos", params)
     	If Not retVal Then 
	  MsgBox "Error firmando el pedido",vbCritical,"Error Firma"
	Else
	  gForm.Controls("grdLineas").Refrescar
	  gForm.Controls("Pers_GrdHcoFirmas").Refrescar
	  gForm.Controls("EObjeto").Refresh
	  If gForm.Controls("EObjeto").ObjGlobal.Propiedades("Pers_Validado") Then
            gForm.Controls("mnuMain").Tools("mnuAlbaran").visible = True
          Else
            gForm.Controls("mnuMain").Tools("mnuAlbaran").visible = False
          End If

      End If
  End If

Con esto tenemos el formulario de Pedidos casi listo. No obstante podemos comprobar como el grid del histórico no está cargando nada porque no tenemos aún la lógica de grabación codificada; para ello crearemos un  trigger personalizado en la tabla Conf_Pedidos_Cli_Linea que traspasará los valores al histórico. Más información de los mismos en el siguiente documento. El ejemplo de creación del trigger lo podemos encontrar en el fichero adjunto Pers_Conf_Pedidos_Lineas_UDTrig.sql.


El código con el ejemplo completo hasta el momento del formulario lo podemos ver en el fichero frmPedidos_3.txt.


Finalizando - Seguridad en controles y grids >

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo