Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   AYUDA 3 Capas vb.net (http://www.forosdelweb.com/f29/ayuda-3-capas-vb-net-658854/)

vicman029 03/01/2009 16:29

AYUDA 3 Capas vb.net
 
Buen dia señores aqui otro tema:

Tengo en vb.net 2005 una aplicación con una solución con 3 proyectos (3 capas).
consegui el ejemplo de un profesor mio hace como 2 años.

bueno al grano:

CAPA DE DATOS:
TENGO AQUI TODO LO REFERENTE A LA CONECCION CON LA BD

CAPA NEGOCIO
AQUI HAY LO SIGUIENTE:

Public Function fx_USUARIO(ByVal USUARIO As String, ByVal CLAVE As String) As DataTable
fx_USUARIO = New DataTable
fx_USUARIO = cls.TraerDataset("USP_USUA", USUARIO, CLAVE).Tables(0)
End Function


USUARIO Y CLAVE SON LOS PARAMETROS QUE MANDO DESDE UNOS TEXBOX PARA MI STORE USP_USUA

O ESTA FUNCION SIN PARAMETROS..

Public Function fx_traer_Cliente() As DataTable
fx_traer_Cliente = New DataTable
fx_traer_Cliente = cls.TraerDataset("Usp_DETALLE").Tables(0)
End Function
DONDE ME MUESTRA TODOS LOS CLIENTES EN UN DATAGRIDVIEW ASI COMO LA ANTERIOR FUNCION

Y EN LA CAPA PRESENTACION DONDE ESTAN LOS FORMS CON SUS RESPECTIVOS CONTROLES COMO EL DATAGRIDVIUW MENCIONADO, DONDE LLAMO A MIS FUNCIONES DE LA CAPA NEGOCIO DE LA SIGUIENTE MANERA:

Sub cargar_datos()
Me.Dgdatos.DataSource = obj.fx_traer_Cliente
Me.Dgdatos.Columns(0).Width = 50
Me.Dgdatos.Columns(0).HeaderText = "Código"
Me.Dgdatos.Columns(1).Width = 190
Me.Dgdatos.Columns(1).HeaderText = "Cliente"
Me.Dgdatos.Columns(2).Width = 80
Me.Dgdatos.Columns(2).HeaderText = "RUC"


End Sub

AQUI VIENE LA PREGUNTA, HASTA AHORA SOLO PUEDO TRAER LO DATOS A LOS DATAGRIDVIUW, PERO COMO HAGO PARA TRAER O ENLAZAR A UN COMBOBOX POR EJEMPLO DONDE ME MUESTRE LOS DISTRITOS U OTRAS COSAS O A UN TEXBOX CON UN SOLO DATO LOGICAMENTE O POR ULTIMO QUE SE ALMACENE EN UNA VARIABLE.

EN EL COMBOBOX HICE LO SIGUIENTE:
Me.ComboBox1.Items.Add(obj.fx_traer_lugar)

PERO NO ME TRAE NADA... ALGUIEN POR FAVOR ME PUEDE AYUDAR.. GRACIAS

normandos 03/01/2009 21:10

Respuesta: AYUDA 3 Capas vb.net
 
Si queres cargar el combo "a mano" te doy un ejemplo de como lo hago yo a partir de un array, si traes un dataset es similar.... espero te sirva el ejemplo.

Sub CargarComboAct()

'Dimensionamos el arraylist y lo creamos
Dim Victor As New ArrayList

'Le asigno al nuevo array el resultado de la funcion CargarComboAct (que se encarga de ir a buscar los datos y devuelve un arraylist)
Victor = Me.unaCon.CargarComboAct

'Lo ordeno
Victor.Sort()

'Dimensiono una variable local i
Dim i As Integer

'Limipio el combo
Me.cboAct.Items.Clear()

'Recorro el arrylist
For i = 0 To Victor.Count - 1

'Voy llenando el combo con cada item del arryalist
Me.cboAct.Items.Add(Victor.Item(i))

Next

'Dejo seleccionado el primer item
cboAct.SelectedIndex = 0
End Sub




Con un dataset seria algo asi:

Dim i As Integer

For i = 0 To unDs.Tables(0).Rows.Count
Me.ddlMarca.Items.Add(CStr(unDs.Tables(0).Rows(i). Item(1)))
Next

Saludos

vicman029 03/01/2009 22:47

Respuesta: AYUDA 3 Capas vb.net
 
Bueno me diste una idea... ya llene mis combos asi:

he creado una funcion
Public Shared Function Cargar_Combobox(ByVal dt As DataTable, ByRef cbx As Windows.Forms.ComboBox)
If dt.Rows.Count > 0 Then
cbx.DataSource = dt
cbx.ValueMember = dt.Columns(0).ToString() ' AQUI ESTAN LOS ID
cbx.DisplayMember = dt.Columns(1).ToString() 'AQUI ESTAN LOS NOMBRES
cbx.Text = ""
End If
Return Nothing
End Function

y lo llene con

Me.Cargar_Combobox(obj.fx_traer_ACTIVIDAD, ComboBox4)

me salio bien....

Pero ahora como podria hacerlo esta vez pero a una variable donde mi datable solo me arroja un valor y este valor asignada a esa variable podria compararla luego con otra en mi codigo... gracias

normandos 03/01/2009 23:47

Respuesta: AYUDA 3 Capas vb.net
 
No entiendo bien esto ultimo que quieres hacer, que tu DT te arroje un valor significa que tiene una sola columna? eso quieres decir?

vicman029 03/01/2009 23:53

Respuesta: AYUDA 3 Capas vb.net
 
bueno si porque en mi store que recibe 2 parametros (usuario y pass) luego de una combinacion de selecs y comparaciones solo me muestra un codigo predefinido en el store ( es para mi inicio de sesion) ahora si ese codigo que se almacena en un DT por estar en 3 capas en mi codigo de VB lo quiero capturar en una variable para compararlo con otra y asi pueda acceder o negar el acceso al siguiente form.. no se si me deje entender??

vicman029 03/01/2009 23:55

Respuesta: AYUDA 3 Capas vb.net
 
hasta ahora lo que hago es recibir mi DT en un datagridview que esta oculto luego me voy a la primera fila lo capturo almacenandola en una variable string y de ahi hago mi comparacion..

normandos 04/01/2009 00:07

Respuesta: AYUDA 3 Capas vb.net
 
A ver si entiendo, tu dataset trae una columna y por lo que veo una sola fila? O sea en definitiva un solo campo?

Bueno si fuera así y quieres comparar ese campo con una variable que tienes en tu clase supongo que sería algo así:

Funcion en mi capa de presentacion que recibe un dataset (unDs)

If unDs.Tables(0).Rows.Count >0 then

If VariableString = CStr(unDs.Tables(0).Rows(0). Item(0)) then

Return true

else

Return False

End if

No se si es lo que buscas...

vicman029 04/01/2009 00:22

Respuesta: AYUDA 3 Capas vb.net
 
Biennnnnnnnnnnnnnnnn...
Lo Hice asi:

Dim VariableString As String
If obj.fx_USUARIO(Me.UsernameTextBox.Text, Me.PasswordTextBox.Text).Rows.Count > 0 Then

VariableString = CStr(obj.fx_USUARIO(Me.UsernameTextBox.Text, Me.PasswordTextBox.Text).Rows(0).Item(0))
Me.TextBox1.Text = VariableString


End If

Lo coloque en un texbox1 para ver si era el codigo y si es... muchas gracias... te debo una...
Gracias

normandos 04/01/2009 00:36

Respuesta: AYUDA 3 Capas vb.net
 
Me alegro haberte sido de ayuda.
Luego si nos ponemos un poco "puristas" podriamos "pulir" un poco ese código.
Por ejemplo si lo que buscas en tu BD es "un solo campo" en lugar de un dataset deberías buscar una variable string...


Luego tu código (suponiendo que aún buscas un dataset)

Dim VariableString As String
If obj.fx_USUARIO(Me.UsernameTextBox.Text, Me.PasswordTextBox.Text).Rows.Count > 0 Then

VariableString = CStr(obj.fx_USUARIO(Me.UsernameTextBox.Text, Me.PasswordTextBox.Text).Rows(0).Item(0))
Me.TextBox1.Text = VariableString


End If

Puliéndolo un poco podría verse así:

Dim VariableString As String
Dim sNombre As String= Trim(Me.UsernameTextBox.Text)
Dim sPass as String= Trim(Me.PasswordTextBox.Text)
Dim unDs as new Dataset 'Estoy en duda si aquí va o no el 'new' :neurotico

unDs =obj.fx_USUARIO(sNombre, sPass)

If unDs.tables(0).Rows.Count >0 then
VariableString = Cstr(unDs.tables(0).Rows(0).Item(0))
Me.TextBox1.Text = VariableString

'O directamente si no existiera VariableString sería así:
Me.TextBox1.Text = Cstr(unDs.tables(0).Rows(0).Item(0))

End if


La zona horaria es GMT -6. Ahora son las 19:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.