Listbox alterar cód...
 
Notifications
Clear all

Listbox alterar código pela descrição

Página 1 / 2

NERI S
Posts: 213
Registered
Topic starter
(@neri-s)
Estimable Member
Entrou: 5 anos atrás

Utilizo o codigo abaixo quando tenho Lisview e funciona. 

Agora preciso utilizar Listbox e não sei as alterações a fazer. Alguém me ajuda?

Explicando:

1) A planilha dos dados chama-se OS. Ao salvar a mesma ao invés de salvar o nome do cliente, salvo o código (caso haja alguma alteração). Por este motivo no Select faço referencia a planilha Clientes.

2) Na parte do From informo as planilhas base de onde são extraídos os dados, neste caso planilha OS e clientes;

3) Ao montar a Where do cliente, vai até a planilha OS e pega o código do cliente. Após isto ele substitui o codigo pelo nome que está registrado lá em clientes.

Private Sub PopulaListBox()

On Error GoTo TrataErro

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
Dim sqlWhere As String
Dim sqlOrderBy As String
Dim i As Integer
Dim campo As Field
Dim myArray() As Variant

Set conn = New ADODB.Connection
With conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
.Open
End With

sql = "SELECT [OS$].[Codigo] ,[OS$].[Statusservico],[Clientes$].[Cliente] "

sql = sql & "FROM [OS$], [Clientes$]" 'Nome das Planilhas da procura nome

sql = sql & "WHERE [OS$].[Statusservico] = [OS$].[Statusservico] "
sql = sql & "AND [OS$].[Cliente] = [Clientes$].[Codigo] "

'monta a cláusula WHERE
Call MontaClausulaWhere(txtCliente.Name, "[Clientes$].[Cliente]", sqlWhere)
Call MontaClausulaWhere(txtResumoServicos.Name, "[OS$].[ResumoServicos] ", sqlWhere)
Responder
8 Respostas
NERI S
Posts: 213
Registered
Topic starter
(@neri-s)
Estimable Member
Entrou: 5 anos atrás

Esta abaixo no texto. Vou colocar aqui abaixo como texto :


sql = "SELECT [OS$].[Codigo] ,[OS$].[Statusservico],[Clientes$].[Cliente] "

sql = sql & "FROM [OS$], [Clientes$]" 'Nome das Planilhas da procura nome

sql = sql & "WHERE [OS$].[Statusservico] = [OS$].[Statusservico] "
sql = sql & "AND [OS$].[Cliente] = [Clientes$].[Codigo] "

'monta a cláusula WHERE
Call MontaClausulaWhere(txtCliente.Name, "[Clientes$].[Cliente]", sqlWhere)
Call MontaClausulaWhere(txtResumoServicos.Name, "[OS$].[ResumoServicos] ", sqlWhere)

 

Responder
NERI S
Posts: 213
Registered
Topic starter
(@neri-s)
Estimable Member
Entrou: 5 anos atrás

O inicio está escrito PopulaListbox o que na verdade deveria ser PopulaListview.

Responder
NERI S
Posts: 213
Registered
Topic starter
(@neri-s)
Estimable Member
Entrou: 5 anos atrás

Anderson, Quanto ao preenchimento eu estou conseguindo. O que eu me referi acima é pegar o código que está na Planilha OS (referente ao cliente) e ir na planilha Cliente e trazer o nome correto. 

Mas tranquilo, ainda não consegui. Mas vou procurar.

 

Responder
1 Responder
Mauro Coutinho
Moderator
(@coutinho)
Entrou: 2 anos atrás

Estimable Member
Posts: 102

@neri-s não sei se compreendi e até onde me recordo a rotina PopulaListbox foi feita para popular um Listbox pelo menos acredito que as que postou são as que saõ utilizadas no modelo cadastro do Tomaz Vasques e eu cheguei a fazer as adaptações para ListView, se for isso, ou mesmo não sendo, dá uma olhada no link abaixo e tera as rotinas utilizadas em ListBox, veja se consegue refazer as alerações, lembrando que o ListBox é bem limitado qto as configurações.

 

http://www.tomasvasquez.com.br/blog/modelo-de-aplicativo-de-cadastro-em-vba-no-microsoft-excel/

Responder
NERI S
Posts: 213
Registered
Topic starter
(@neri-s)
Estimable Member
Entrou: 5 anos atrás

@coutinho é do exemplo do Tomaz Vasques que eu adaptei para utilizar. Sempre utilizo Listview, porém tem um amigo que só usa 64bits na máquina e eu estou querendo ajudá-lo. Por este motivo que estou a procura. Já vou olhar o link postado acima.

Mas em resumo ele faz o seguinte: Quando tenho uma Ordem de Serviço, ao invés de salvar o cliente, eu salvo o código. Faço isto para que, se houver alterações no nome do cliente, os dados estejam corretos. 

Como salvo o código, ele deve pegar o código do cliente que está na OS e ir até a planilha "Cliente" e ver quem é o cliente de tal código, e retornar o nome. Só isto. Faço com o Listview, porém no Listbox eu não consegui. 

Gosto muito dos exemplos do Tomaz e por isto utilizo-os. São práticos e fáceis. 

Muito obrigado por me ajudar também.

 

Responder
1 Responder
Mauro Coutinho
Moderator
(@coutinho)
Entrou: 2 anos atrás

Estimable Member
Posts: 102
Postado por: @neri-s

@coutinho é do exemplo do Tomaz Vasques que eu adaptei para utilizar. Sempre utilizo Listview, porém tem um amigo que só usa 64bits na máquina e eu estou querendo ajudá-lo. Por este motivo que estou a procura. Já vou olhar o link postado acima.

Mas em resumo ele faz o seguinte: Quando tenho uma Ordem de Serviço, ao invés de salvar o cliente, eu salvo o código. Faço isto para que, se houver alterações no nome do cliente, os dados estejam corretos. 

Como salvo o código, ele deve pegar o código do cliente que está na OS e ir até a planilha "Cliente" e ver quem é o cliente de tal código, e retornar o nome. Só isto. Faço com o Listview, porém no Listbox eu não consegui. 

Gosto muito dos exemplos do Tomaz e por isto utilizo-os. São práticos e fáceis. 

Muito obrigado por me ajudar também.

 

Então Nery, se não me engano ja cheguei a responder algumas solicitações la no Forum do Tomaz, mas a questão é que não sei de qual versão você fez as alterações, veja que no Modelo V3 ainda é utilizado ListBox, na V 3.5 eu adaptei para ListView, e como o colega Anderson falou, as linhas que colocou não são as que preenchem o ListView, a não ser que tenha feito outros tipos de adaptação.

Na V3 para preecher o ListBox no formulário de pesquisa é feito a chamada a rotina :

Private Sub btnFiltrar_Click()
Call PopulaListBox(txtNomeEmpresa.Text, txtNomeContato.Text, txtEndereco.Text, txtTelefone.Text, txtRegiao.Text)
End Sub

E cortando as linhas só pra ilustrar, na PopulaListbox chamamos a Function PreencheRcordsert

Set rst = PreecheRecordSet(NomeEmpresa, NomeContato, Endereco, Telefone, Regiao)

e então a MontaClausulaWhere e depois voltamos para a PopulaListBox e preenchemos.

 

Ou seja, não tem como identificar só pelo que pediu e o que postou onde não está de acordo, e mais uma vez lembrando, que trocar ListView pelo Listbox as propriedades são bem diferentes e o ListBox é bem limitado.

O ideal seria anexar o seu modelo para com o tempo tentarmos analisar melhor.

Responder
Página 1 / 2