Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.Hosting, seguramente los mejores precios de alojamiento

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

06/jun/2006
REPETIMOS: Por favor, por favor, por favor... no repitas mensajes en varios foros.
Lo único que consigues con ello es confundir a la gente y dar más trabajo a los que responden mensajes. Gracias.

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 58111 - Bloquear opciones de ComboBox segun ID de usuario
IDAsuntoFechaNick 
58111 Bloquear opciones de ComboBox segun ID de usuario08/11/16 20:50Ziany   
Hola, tengo una duda la cual e tratado de resolver y e buscado mucha información la cual no me ha ayudado.

Estoy desarrollando una aplicación de contratos, ordenes de servicio y facturas en Visual Basic; en la cual debo lograr que según sea el usuario registrado, se le asignen uno o mas contratos. Por ejemplo, tengo los usuarios admin1 con ID 1 y admin2 con ID 2; creo un contrato y se lo asigno a admin1. Tengo un Form para que puedan añadir las ordenes y facturas de ese contrato, en el cual tengo un ComboBox en el cual se muestran los contratos existentes; lo que quiero es que si admin2 se registra y quiere añadir una factura a otro contrato asignado a él, no se le muestren los contratos asignados a admin1 para que no pueda editarlo.
Mis tablas en SQL son estas

--tabla usuarios
create table usuarios(
CEDULA bigint not null,
NOMBRE char (30) not null,
PRIMER_APELLIDO char (30) not null,
SEGUNDO_APELLIDO char (30) not null,
TIPO_DE_USUARIO VARCHAR (20) NOT NULL,
CORREO_ELECTRONICO varchar (30) not null,
CONTRASEÑA varchar (30) not null
constraint pk_usuarios primary key (CEDULA)
)
 
--tabla contratos
create table contrato(
NUMERO_DE_CONTRATO BIGINT not null,
PROVEEDOR varchar (30) not null,
CEDULA_JURIDICA BIGINT not null,
USUARIO_ADMINISTRADOR VARCHAR (30) NOT NULL,
CEDULA bigint NOT NULL,
ARCHIVOS IMAGE,
constraint pk_contrato primary key (NUMERO_DE_CONTRATO),
constraint fk_contrato foreign key (CEDULA) references usuarios(CEDULA)
)


Asi lleno el combobox con los datos de la base de datos:

''CARGAR COMBOBOX CON SQL
conectar()
sql = "select * from contrato"
da = New SqlClient.SqlDataAdapter(sql, coneccion)
Dim dt As New DataTable
da.Fill(dt)
combocontrato.DataSource = dt.DefaultView
combocontrato.DisplayMember = "NUMERO_DE_CONTRATO"
combocontrato.ValueMember = "NUMERO_DE_CONTRATO"
combocontrato.Text = ""
conexion.Close()

Ese combo lo usaria para elegir el contrato al que le quiero agregar una factura u orden.

Espero puedan ayudarme,
Saludos!
IDAsuntoFechaNick 
58114 Re: Bloquear opciones de ComboBox segun ID de usuario (Resp: 58111)09/11/16 14:34sistemas   
vale, en lugar de asignar directamente al combo la tabla debes crear una vista así:

Dim bind1 As New DataView
bind1 = Tutabla.DefaultView

luego a dicha vista le puedes agregar un filtro que es como la opción del "where" de una querry pero sin el where:

bind1.RowFilter = "Usuario='admin'"

Y luego al data source del combo le asignas el bind1 en lugar de la tabla


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
58115 Re: Bloquear opciones de ComboBox segun ID de usuario (Resp: 58111)09/11/16 14:43Ziany   
Hola, gracias por responder.
Donde pones "Tutabla" e puesto el nombre de mi tabla en este caso contratos, pero marca error, no se si deba ir entre comillas, si es así podrías indicarmelo.
Y donde pones bind1.RowFilter = "Usuario='admin'" son varios usuarios, no se si se pueda hacer que con el nombre de usuario que ingresa en el textbox cuando se loquea sea con el que se crea el filtro, si se pudiera por favor indícame como


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
58116 Re: Bloquear opciones de ComboBox segun ID de usuario (Resp: 58111)09/11/16 16:05Ziany   
Hola de nuevo,
Lo hice de esta manera:


conectar()
        sql = "select * from contrato"
        da = New SqlClient.SqlDataAdapter(sql, coneccion)
        Dim dt As New DataTable
        da.Fill(dt)
        Dim bind1 As New DataView
'ESTA LINEA MARCA EL ERROR
        bind1 = dt.DefaultView.Sort = ("NUMERO_DE_CONTRATO")

        bind1.RowFilter = "USUARIO_ADMISTRADOR=@usuario"
        Dim comando As New SqlClient.SqlCommand(sql, coneccion)
        combocontra.DataSource = bind1
        combocontra.DisplayMember = ("NUMERO_DE_CONTRATO")
        combocontra.ValueMember = ("NUMERO_DE_CONTRATO")
        combocontra.Text = ""
        comando.Parameters.AddWithValue("@usuario",
             LoginForm1.UsernameTextBox.Text)
        coneccion.Close()


Pero me manda este error en la linea que he comentado:
El valor de tipo boolean no se puede convertir en DataView.
Espero su ayuda.

Saludos!,


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
58117 Re: Bloquear opciones de ComboBox segun ID de usuario (Resp: 58111)09/11/16 17:27Ziany   
Ya he solucionado el problema, de todas formas muchas gracias.
Dejo el código aquí por si alguien tiene un problema parecido.

Try
    conectar()
    Dim sql = "select NUMERO
        _DE_CONTRATO from Tabla where USUARIO_ADMINISTRADOR = @usuario Order By NUMERO_DE_CONTRATO
         ASC"

    Dim da As New SqlClient.SqlDataAdapter(sql, coneccion)
    da.SelectCommand.Parameters.AddWithValue("@usuario",
         LoginForm1.UsernameTextBox.Text)

    Dim dt As New DataTable
    da.Fill(dt)

    ComboBox.DataSource = dt
    ComboBox.DisplayMember = "NUMERO_DE_CONTRATO"
    ComboBox.ValueMember = "NUMERO_DE_CONTRATO"
    coneccion.Close()
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

[Editado: Ziany, 09/11/2016 17:28:17]
[Ziany, 09/11/2016 17:30:09]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 117 - App. iniciada: 18/08/2017 14:33:09 GMT - La hora GMT del servidor es: 18/08/2017 18:21:43 GMT