Funciones

Iniciado por TheGhost(Z), 8 Julio 2010, 15:27 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola Queria saber como puedo hacer que una funcion devuelva un variable de Type

Enum eDatos
  IDdocumento
  Nombre
  Apellidos
End Enum

Type Tdatos
  IDdocumento As Long
  Nombre As String
  Apellidos As String
End Type

Function Cliente (eDatos) As Tdatos
    Select Case eDatos
    Case IDdocumento
        Cliente = 1
    Case Nombre
        Cliente = "Pedro"
    Case Apellidos
        Cliente = "Sánchez"
    End Select
End Function



Lo que deseo con la funcion es que pasando algun opcion del eDatos me devuelva la informacion con su respectiva variable Type. Osea si elijo IDdocumento me devuela un long y si selecciono Nombre o Apellidos me devuelva un String.

Como de vincularle a que devulvea un Long o un String??

BlackZeroX

#1
Código (Vb) [Seleccionar]


Option Explicit

Private Type TDatos
 IDdocumento As Long
 Nombre As String
 Apellidos As String
End Type
private/public/global DatosCliente As TDatos ' //  Public y Global en un modulo .Bas los demas en general

Private Sub Form_Load()
   With DatosCliente
       .IDdocumento = 12
       .Apellidos = "Ortega A."
       .Nombre = "Miguel Angel"
   End With
   
   With DatosCliente
       Call Interaction.MsgBox(.IDdocumento)
       Call Interaction.MsgBox(.Apellidos)
       Call Interaction.MsgBox(.Nombre)
   End With
End Sub



otra forma!¡.

Código (Vb) [Seleccionar]


Option Explicit

Private Type TDatos
 IDdocumento   As Long
 Nombre        As String
 Apellidos     As String
End Type
Private Priv_DatosCliente As TDatos ' //  Public y Global es un modulo .Bas los demas en general
'   //  Friend permite tener acceso a Typos de una clase o datos que no esten estandarisados!¡.
Friend Property Let Datoscliente(ByRef Datos As TDatos)
   Priv_DatosCliente = Datos
   Debug.Print "Guardando Datos"
End Property
Friend Property Get Datoscliente() As TDatos
   Datoscliente = Priv_DatosCliente
   Debug.Print "Leyendo Datos"
End Property

Private Sub Form_Load()
Dim LocalData As TDatos
   With LocalData
       .IDdocumento = 12
       .Apellidos = "Ortega A."
       .Nombre = "Miguel Angel"
   End With
   Datoscliente = LocalData
   With Datoscliente
       Call Interaction.MsgBox(.IDdocumento)
       Call Interaction.MsgBox(.Apellidos)
       Call Interaction.MsgBox(.Nombre)
   End With
End Sub



Sangriento Infierno lunar!¡.
The Dark Shadow is my passion.

TheGhost(Z)

Lo que deseo es que la información a devolver se genere en la Función no localmente..y me sale declarando la la Funcion a de volver como VARIANT. se dice que ocupa mucho más recursos pero es lo que hay, no?

Ejemplo:

Enum eDatos
  IDdocumento
  Nombre
  Apellidos
End Enum


Function Cliente (eDatos) As Variant
    Select Case eDatos
    Case IDdocumento
        Cliente = 1
    Case Nombre
        Cliente = "Pedro"
    Case Apellidos
        Cliente = "Sánchez"
    End Select
End Function



Msgbox Cliente(IDdocumento) ' = 1 = Long
Msgbox Cliente(Nombres) ' = Pedro = String
Msgbox Cliente(Apellidos) ' = Sánchez = Strig