USANDO O COMBOBOX
Help me!
Estou usando o VB 2008 com SQL Server.
Tenho um combobox Loja e um outro combobox Vendedores
Gostaria de buscar o vendedor conforme a loja selecionada.
Tabela: SA3010
Campos: Código (a3_cod) e Nome (a3_nome)
Tenho que vincular da seguinte forma:
Seleciono a Loja numa combo e aparece os vendedores dela;
Seleciono os vendedor e quando clicar no botão, listar os clientes aniversariantes. (já consigo listar os aniversariantes, conforme ajuda dos colegas do VBMania)
Desde já, agradeço pela ajuda.
Estou usando o VB 2008 com SQL Server.
Tenho um combobox Loja e um outro combobox Vendedores
Gostaria de buscar o vendedor conforme a loja selecionada.
Tabela: SA3010
Campos: Código (a3_cod) e Nome (a3_nome)
Tenho que vincular da seguinte forma:
Seleciono a Loja numa combo e aparece os vendedores dela;
Seleciono os vendedor e quando clicar no botão, listar os clientes aniversariantes. (já consigo listar os aniversariantes, conforme ajuda dos colegas do VBMania)
Desde já, agradeço pela ajuda.
Vai ser mais ou menos assim:
No evento lostfocus do combobox loja voce coloca isso:
using comando as new sqlcommand([Ô]SELECT NOME_FUNCIONARIO FROM TABELA_FUNCIONARIO WHERE CODIGO_LOJA = (SELECT CODIGO_LOJA FROM TABELA_LOJA [Ô] _
& [Ô]WHERE NOME_LOJA = [ô][Ô] & COMBOBOX_LOJA.TEXT & [Ô][ô])[Ô],CONEXAO)
Using oDR as DataReader = Comando.executeReader()
If(oDR.hasRow) then
While oDR.Read()
COMBOBOX_FUNCIONARIO.Items.Add(oDR.GetString(0))
Loop
Else
msgbox([Ô]Erro ao obteros dados[Ô])
End If
End Using
End Using
Vai adaptando o controle e o select de acordo com os campos da sua seleção.
O segredo desse retorno é uma subquery.
No evento lostfocus do combobox loja voce coloca isso:
using comando as new sqlcommand([Ô]SELECT NOME_FUNCIONARIO FROM TABELA_FUNCIONARIO WHERE CODIGO_LOJA = (SELECT CODIGO_LOJA FROM TABELA_LOJA [Ô] _
& [Ô]WHERE NOME_LOJA = [ô][Ô] & COMBOBOX_LOJA.TEXT & [Ô][ô])[Ô],CONEXAO)
Using oDR as DataReader = Comando.executeReader()
If(oDR.hasRow) then
While oDR.Read()
COMBOBOX_FUNCIONARIO.Items.Add(oDR.GetString(0))
Loop
Else
msgbox([Ô]Erro ao obteros dados[Ô])
End If
End Using
End Using
Vai adaptando o controle e o select de acordo com os campos da sua seleção.
O segredo desse retorno é uma subquery.
O exemplo abaixo foi escrito em linguagem C# com LINQ to SQL, mas a idéia dele serve para você construir uma solução em VB.NET.
http://sites.google.com/site/programacaoonline/family-blog/c/alimentar-dois-controles-combobox-com-linq-to-sql-em-c
http://sites.google.com/site/programacaoonline/family-blog/c/alimentar-dois-controles-combobox-com-linq-to-sql-em-c
Nada resolvido! Alguma ajuda aÃ?
Você consegue carregar a combo Loja? Como vocÊ está fazendo? Que evento você usa para carregar a combobox?
Depois que carrega a combobox Loja, Carrega a outra combo fazendo um select
Depois que carrega a combobox Loja, Carrega a outra combo fazendo um select
voce tentou a minha solução?
se sim e deu erro,qual foi?
Creio que oque eu passei pra voce,resolve o seu problema
se sim e deu erro,qual foi?
Creio que oque eu passei pra voce,resolve o seu problema
Desculpa a minha ignorância amigos, ainda não consegui fazer funcionar. Abaixo, segue a minha linha de programação
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Data
-----------------------------------------------------------------------------------
Public Class Form1
Dim sql As String
Dim con As New SqlConnection
[ô]con.ConnectionString = [Ô]Data Source=atisource;Initial Catalog=BillingSys;Persist Security Info=True;User ID=sa;Password=D!N!Z123[Ô]
Dim connStr As String = [Ô] Data Source=##.#.#.##;Initial Catalog=PRODUCAO;User Id=**;Password=******;[Ô]
-----------------------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
[ô]define a string de conexao
Dim connStr As String = [Ô] Data Source=##.#.#.##;Initial Catalog=PRODUCAO;User Id=**;Password=*******;[Ô]
[ô]define a instrução sql
sql = [Ô]SELECT a1_cod, a1_nome,A1_TEL,A1_XCEL, RIGHT(RTRIM(a1_dtnasc), 2) + [ô]/[ô] + SUBSTRING(a1_dtnasc, 5, 2) + [ô]/[ô] + LEFT(a1_dtnasc, 4) AS NewData [Ô]
sql = sql & [Ô] FROM sa1010 where Day(a1_dtnasc)=[ô][Ô] & Mid(CDataInicial.Text, 1, 2) & [Ô][ô] and Month(a1_dtnasc)=[ô][Ô] & Mid(CDataFinal.Text, 4, 2) & [Ô][ô][Ô]
[ô]define os objetos connecton, command e dataadapter
Dim conn As SqlConnection = New SqlConnection(connStr)
Dim comm As SqlCommand = New SqlCommand(sql, conn)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
[ô]define o dataset
Dim ds As DataSet = New DataSet()
Try
[ô]---abre a conexao---
conn.Open()
[ô]---preenche o dataset---
dataadapter.Fill(ds, [Ô]sa1010[Ô])
[ô]---fecha a conexao---
conn.Close()
[ô]---vincula o dataset ao DataGridView---
DataGridView1.DataSource = ds [ô]ou ds.tables(0)
[ô]---define a tabela a ser exibida---
DataGridView1.DataMember = [Ô]sa1010[Ô]
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub[txt-color=#0000f0] [/txt-color]
Dessa forma, eu consigo colocar entre data no meu formulário e visualizar numa grid os aniversariantes.
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Data
-----------------------------------------------------------------------------------
Public Class Form1
Dim sql As String
Dim con As New SqlConnection
[ô]con.ConnectionString = [Ô]Data Source=atisource;Initial Catalog=BillingSys;Persist Security Info=True;User ID=sa;Password=D!N!Z123[Ô]
Dim connStr As String = [Ô] Data Source=##.#.#.##;Initial Catalog=PRODUCAO;User Id=**;Password=******;[Ô]
-----------------------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
[ô]define a string de conexao
Dim connStr As String = [Ô] Data Source=##.#.#.##;Initial Catalog=PRODUCAO;User Id=**;Password=*******;[Ô]
[ô]define a instrução sql
sql = [Ô]SELECT a1_cod, a1_nome,A1_TEL,A1_XCEL, RIGHT(RTRIM(a1_dtnasc), 2) + [ô]/[ô] + SUBSTRING(a1_dtnasc, 5, 2) + [ô]/[ô] + LEFT(a1_dtnasc, 4) AS NewData [Ô]
sql = sql & [Ô] FROM sa1010 where Day(a1_dtnasc)=[ô][Ô] & Mid(CDataInicial.Text, 1, 2) & [Ô][ô] and Month(a1_dtnasc)=[ô][Ô] & Mid(CDataFinal.Text, 4, 2) & [Ô][ô][Ô]
[ô]define os objetos connecton, command e dataadapter
Dim conn As SqlConnection = New SqlConnection(connStr)
Dim comm As SqlCommand = New SqlCommand(sql, conn)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
[ô]define o dataset
Dim ds As DataSet = New DataSet()
Try
[ô]---abre a conexao---
conn.Open()
[ô]---preenche o dataset---
dataadapter.Fill(ds, [Ô]sa1010[Ô])
[ô]---fecha a conexao---
conn.Close()
[ô]---vincula o dataset ao DataGridView---
DataGridView1.DataSource = ds [ô]ou ds.tables(0)
[ô]---define a tabela a ser exibida---
DataGridView1.DataMember = [Ô]sa1010[Ô]
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub[txt-color=#0000f0] [/txt-color]
Dessa forma, eu consigo colocar entre data no meu formulário e visualizar numa grid os aniversariantes.
Salve Salve amigos do VBMania, consegui fazer da seguinte forma:
Dim connStr As String = [Ô] Data Source=**.*.*.**;Initial Catalog=PRODUCAO;User Id=****;Password=********;[Ô]
Dim strSQL As String = [Ô]SELECT DISTINCT L1_FILIAL FROM sl1010[Ô]
Dim da As New System.Data.SqlClient.SqlDataAdapter(strSQL, connStr)
Dim ds As New DataSet
da.Fill(ds, [Ô]sl1010[Ô])
With Me.CboLoja
.DataSource = ds.Tables([Ô]sl1010[Ô])
.DisplayMember = [Ô]l1_filial[Ô]
.ValueMember = [Ô]l1_filial[Ô]
.SelectedIndex = 0
End With
Agradeço pela ajuda daqueles que dispuseram em me ajudar.
Dim connStr As String = [Ô] Data Source=**.*.*.**;Initial Catalog=PRODUCAO;User Id=****;Password=********;[Ô]
Dim strSQL As String = [Ô]SELECT DISTINCT L1_FILIAL FROM sl1010[Ô]
Dim da As New System.Data.SqlClient.SqlDataAdapter(strSQL, connStr)
Dim ds As New DataSet
da.Fill(ds, [Ô]sl1010[Ô])
With Me.CboLoja
.DataSource = ds.Tables([Ô]sl1010[Ô])
.DisplayMember = [Ô]l1_filial[Ô]
.ValueMember = [Ô]l1_filial[Ô]
.SelectedIndex = 0
End With
Agradeço pela ajuda daqueles que dispuseram em me ajudar.
Vou usar um exemplo mais simples para vcs me ajudarem.
Pessoal, eu tenho as seguintes tabelas:
Tb_Clientes - campos:(idcli, idcliente)
Tb_Vendedores - campos(idven, vendedor)
Tb_Vendas - campos (idcli, idcliente, idven, vendedor)
Gostaria do apoio para fazer da seguinte forma: usar um combo para selecionar o vendedor da tabela Tbl_Clientes e na próxima combo, aparecer o nome do cliente deste vendedor.
Grato pela ajuda!
Pessoal, eu tenho as seguintes tabelas:
Tb_Clientes - campos:(idcli, idcliente)
Tb_Vendedores - campos(idven, vendedor)
Tb_Vendas - campos (idcli, idcliente, idven, vendedor)
Gostaria do apoio para fazer da seguinte forma: usar um combo para selecionar o vendedor da tabela Tbl_Clientes e na próxima combo, aparecer o nome do cliente deste vendedor.
Grato pela ajuda!
Tente isso:
using comando as new sqlcommand([Ô]SELECT A.IDCLIENTE FROM TB_CLIENTES A INNER JOIN TB_VENDAS B ON A.IDCLI = B.IDCLI [Ô] _
& [Ô]INNER JOIN TB_VENDEDORES C ON C.IDVEN = B.IDVEN ORDER BY A.IDCLIENTE[Ô],CONEXAO)
Using oDR as DataReader = Comando.executeReader()
If(oDR.hasRow) then
While oDR.Read()
COMBOBOX_FUNCIONARIO.Items.Add(oDR.GetString(0))
Loop
Else
msgbox([Ô]Erro ao obteros dados[Ô])
End If
End Using
End Using
using comando as new sqlcommand([Ô]SELECT A.IDCLIENTE FROM TB_CLIENTES A INNER JOIN TB_VENDAS B ON A.IDCLI = B.IDCLI [Ô] _
& [Ô]INNER JOIN TB_VENDEDORES C ON C.IDVEN = B.IDVEN ORDER BY A.IDCLIENTE[Ô],CONEXAO)
Using oDR as DataReader = Comando.executeReader()
If(oDR.hasRow) then
While oDR.Read()
COMBOBOX_FUNCIONARIO.Items.Add(oDR.GetString(0))
Loop
Else
msgbox([Ô]Erro ao obteros dados[Ô])
End If
End Using
End Using
PHOENIX209E, Obrigado pela atenção!
Eu coloquei esta linha no Button Click da Combo Vendedores.
Só que aparece estes dois erros:
hasRow[ô] is not a member of [ô]System.Data.SqlClient.SqlDataReader[ô]
[ô]Loop[ô] must be preceded by a matching [ô]Do[ô]
Eu coloquei esta linha no Button Click da Combo Vendedores.
Só que aparece estes dois erros:
hasRow[ô] is not a member of [ô]System.Data.SqlClient.SqlDataReader[ô]
[ô]Loop[ô] must be preceded by a matching [ô]Do[ô]
Tópico encerrado , respostas não são mais permitidas