Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como paso este codigo a una funcion?

Estas en el tema de Como paso este codigo a una funcion? en el foro de Visual Basic clásico en Foros del Web. Necesito realizar el mismo procedimiento en varios formularios, lo unico que cambia es cuando el If Ns = 1 se llamara a un funcion diferente ...
  #1 (permalink)  
Antiguo 08/05/2009, 13:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 238
Antigüedad: 15 años
Puntos: 7
Pregunta Como paso este codigo a una funcion?

Necesito realizar el mismo procedimiento en varios formularios, lo unico que cambia es cuando el If Ns = 1 se llamara a un funcion diferente dependiendo el caso.
ó quizas deberia convertirlo en una clase

Código:
Private Sub cmdUpdate_Click()
Dim rs As Recordset
Set rs = cn.Execute("SELECT n_acceso FROM usuario WHERE nomuser='" & Text1.text & "'")

Dim Ns As Integer
If rs(0) = FALSO Then Ns = 0 Else Ns = 1

If Ns = 1 Then 'Si el boolean esta activo
   MsgBox "Consulta SQL realizada satisfactoriamente"
   '###Ejecuto una funcion de mantenimiento###
Else
   MsgBox "No puede realizar la consulta SQL, no tiene permiso"
End If
End Sub
  #2 (permalink)  
Antiguo 08/05/2009, 13:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como paso este codigo a una funcion?

Cita:
Private Sub NombreDeLaFuncion(Ns as integer)
Dim rs As Recordset
Set rs = cn.Execute("SELECT n_acceso FROM usuario WHERE nomuser='" & Text1.text & "'")
If Ns = 1 Then 'Si el boolean esta activo
MsgBox "Consulta SQL realizada satisfactoriamente"
'###Ejecuto una funcion de mantenimiento###
Else
MsgBox "No puede realizar la consulta SQL, no tiene permiso"
End If
'Y aca por ej pones, If Ns=2 Then....blablabla
End Sub
La Funcion se la llama de la siguiente manera: NombreDeLaFuncion(Valor de Ns)
siendo NombreDeLaFuncion, valga la redundancia, el nombre de la funcion y el valor que toma NS entre ()
  #3 (permalink)  
Antiguo 08/05/2009, 14:17
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Como paso este codigo a una funcion?

Cita:
Iniciado por zxs23 Ver Mensaje
Necesito realizar el mismo procedimiento en varios formularios, lo unico que cambia es cuando el If Ns = 1 se llamara a un funcion diferente dependiendo el caso.
ó quizas deberia convertirlo en una clase

Código:
Private Sub cmdUpdate_Click()
Dim rs As Recordset
Set rs = cn.Execute("SELECT n_acceso FROM usuario WHERE nomuser='" & Text1.text & "'")

Dim Ns As Integer
If rs(0) = FALSO Then Ns = 0 Else Ns = 1

If Ns = 1 Then 'Si el boolean esta activo
   MsgBox "Consulta SQL realizada satisfactoriamente"
   '###Ejecuto una funcion de mantenimiento###
Else
   MsgBox "No puede realizar la consulta SQL, no tiene permiso"
End If
End Sub
Hola creo que puedes poner tu funcion en un modulo y usarla en los formularios que quieras, pero tengo una duda la funcion se refiere a un control "cmd_update" en el evento click?

tambien veo que dentro la fude ncion haces referencia al contenido de un textbox, si quieres utilizar la funcion en otros formularios posiblemente los controles no se llamen igual y te de un error.
  #4 (permalink)  
Antiguo 08/05/2009, 17:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 238
Antigüedad: 15 años
Puntos: 7
Respuesta: Como paso este codigo a una funcion?

El valor de Ns no puede ser parametro por que se recupera de la consula sql es decir del campo n_acceso con esta linea de codigo
Dim Ns As Integer
If rs(0) = FALSO Then Ns = 0 Else Ns = 1
El cmdUpdate_Click() es un command
En todos los formularios existira el Text1 asi que no es necesario utilizarlo como parametro.

Como recuperaria el valor de Ns al ejecutar esta funcion?
Código:
Private Sub Mi_funcion() 
Dim rs As Recordset
Set rs = cn.Execute("SELECT n_acceso FROM usuario WHERE nomuser='" & Text1.text & "'")
Dim Ns As Integer
If rs(0) = FALSO Then Ns = 0 Else Ns = 1
'Aqui como hago para que al llamar a la funcion se recupere el valor de Ns?
End Sub

Private Sub cmdUpdate_Click()
'Aqui haria la comprobacion dependiendo del valor que puede ser 1 ó 0
If Mi_funcion  = 1 Then 
   MsgBox "Consulta SQL realizada satisfactoriamente"
Else
   MsgBox "No puede realizar la consulta SQL, no tiene permiso"
End If
End Sub
  #5 (permalink)  
Antiguo 08/05/2009, 20:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Como paso este codigo a una funcion?

Private Function Mi_funcion()
Dim rs As Recordset
Set rs = cn.Execute("SELECT n_acceso FROM usuario WHERE nomuser='" & Text1.text & "'")
Dim Ns As Integer
If rs(0) = FALSO Then Ns = 0 Else Ns = 1
Mi_funcion = Ns
End Sub

Tendrias que declararla como function y no como Sub que es un procedimiento, para retornar el valor solo sería:
Mi_funcion = Ns
Saludos.
  #6 (permalink)  
Antiguo 08/05/2009, 20:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 238
Antigüedad: 15 años
Puntos: 7
Respuesta: Como paso este codigo a una funcion?

si funciono pero tengo otra consulta es posible pasarle como parametro otra funcion por ejemplo para ejecutar hago esto
Código:
Private Sub cmdUpdate_Click()
If Mi_funcion  = 1 Then 
   MsgBox "Consulta SQL realizada satisfactoriamente"
   'Llamo a otra funcion
Else
   MsgBox "No puede realizar la consulta SQL, no tiene permiso"
End If
End Sub
Se puede pasar un parametro que ejecute otra funcion de esta manera
call Mi_funcion(Otra_funcion) y el parametro de esta manera Private Function Mi_funcion(f as function), lo hize asi pero me sale error en el parametro.

Por otro lado si no se puede eso, como haria que la condicion If Mi_funcion = 1 Then ... quede dentro de la funcion por eso se me ocurrio pasarle un parametro as function.
El motivo de esto es tratar de reducir la redundancia de codigo para que sea mas facil de entender
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:06.