MANIPULACAO STRING
Estou usando o seguinte codigo para buscar dados em bd e exibir em um dbcombo:
Do While Not PRODUTOS.EOF
CBProduto.AddItem PRODUTOS([Ô]EST_CODIGO[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_NOME[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_PRECO[Ô])
PRODUTOS.MoveNext
Loop
Gostaria de que ao ser selecionado o determinado item no setfocus do cbproduto, ele jogue [Ô]EST_PRECO[Ô] em um textbox.
Do While Not PRODUTOS.EOF
CBProduto.AddItem PRODUTOS([Ô]EST_CODIGO[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_NOME[Ô]) & [Ô] - [Ô] & PRODUTOS([Ô]EST_PRECO[Ô])
PRODUTOS.MoveNext
Loop
Gostaria de que ao ser selecionado o determinado item no setfocus do cbproduto, ele jogue [Ô]EST_PRECO[Ô] em um textbox.
Você pode guardar EST_PRECO:
CBPRODUTO.ITEMDATA(CBPRODUTO.NEWINDEX) = PRODUTOS([Ô]EST_PRECO[Ô])
Ao selecionar na combo, então:
TEXT1.TEXT = CBPRODUTO.ITEMDATA(CBPRODUTO.INDEX)
OOOOUUUUU....
Wdivide = split(CBPRODUTO.TEXT,[Ô] - [Ô])
TEXT1.TEXT = Wdivide[3]
CBPRODUTO.ITEMDATA(CBPRODUTO.NEWINDEX) = PRODUTOS([Ô]EST_PRECO[Ô])
Ao selecionar na combo, então:
TEXT1.TEXT = CBPRODUTO.ITEMDATA(CBPRODUTO.INDEX)
OOOOUUUUU....
Wdivide = split(CBPRODUTO.TEXT,[Ô] - [Ô])
TEXT1.TEXT = Wdivide[3]
Mudei o limitador para [Ô] | [Ô]
e tentei
Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide
Ta dando erro 13
e tentei
Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide
Ta dando erro 13
ele cria uma matriz com o total de limitadores iniciando no zero
nesse caso ficaria
Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide(0)
nesse caso ficaria
Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide(0)
Correto é que você precisa delimitar a posição SPLIT para que o preço seja atribuÃdo no TEXTBOX
LUIZCOMINO Falou:
Lembrasse que a cada ( PIPE | ) que ele encontra é um campo da sua Matriz iniciando do ZERO
No caso do Preço
Tambem não podemos descartar a possibilidade do nosso amigo EDERMIR que ficaria assim
No evento CLICK do COMBOBOX
Espero ter ajudado tambem
LUIZCOMINO Falou:
Citação:ele cria uma matriz com o total de limitadores iniciando no zero
nesse caso ficaria
Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide(0)
Lembrasse que a cada ( PIPE | ) que ele encontra é um campo da sua Matriz iniciando do ZERO
No caso do Preço
Wdivide = Split(CBPRODUTOS.TEXT, [Ô]|[Ô])
txtPreco.Text = Wdivide(3)
Tambem não podemos descartar a possibilidade do nosso amigo EDERMIR que ficaria assim
Do While Not PRODUTOS.EOF
CBProduto.AddItem PRODUTOS([Ô]EST_CODIGO[Ô]) & [Ô] | [Ô] & PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] | [Ô] & PRODUTOS([Ô]EST_NOME[Ô])
CBProduto.ItemData(CBProduto.NewIndex) = PRODUTOS([Ô]EST_PRECO[Ô])
PRODUTOS.MoveNext
Loop
No evento CLICK do COMBOBOX
Public Sub CBProduto_Click()
txtPreco.Text = CBProduto.ItemData(CBProduto.Index)
End Sub
Espero ter ajudado tambem
Apesar dos códigos acimas estarem correto eu teria outra abordagem:
percebi que vc possui classes, e suponho que cada classe possui varios nomes, então o ideal seria usar mais de um combo.
exemplo:
crie uma query que preencha o primeiro combo somente com as classes, e ao se clicar em uma classe outro combo seria preenchido com os nomes, e ao se clicar neste combo exibir o preço.
exemplo
acima seria preenchido o combo produtos no evento click do comboprodutos
e no evento click do combo nomes
percebi que vc possui classes, e suponho que cada classe possui varios nomes, então o ideal seria usar mais de um combo.
exemplo:
crie uma query que preencha o primeiro combo somente com as classes, e ao se clicar em uma classe outro combo seria preenchido com os nomes, e ao se clicar neste combo exibir o preço.
exemplo
Set PRODUTOS = CNN.execute([Ô]FROM est_codigo,est_classe FROM tabela[Ô])
Do While Not PRODUTOS.EOF
CBProduto.AddItem PRODUTOS([Ô]EST_CLASSE[Ô])
CBProduto.ItemData(CBProduto.NewIndex) = PRODUTOS([Ô]EST_CODIGO[Ô])
PRODUTOS.MoveNext
Loop
acima seria preenchido o combo produtos no evento click do comboprodutos
Private Sub CBProdutos_Click()
Set NOMES= CNN.execute([Ô]FROM est_codigo,est_nome FROM tabela WHERE est_codigo =[Ô] & CBProdutos.ItemData(CBProdutos.ListIndex))
Do While Not NOMES.EOF
CBNomes.AddItem NOMES([Ô]EST_NOME[Ô])
CBNomes.ItemData(CBNomes.NewIndex) = NOMES([Ô]EST_CODIGO[Ô])
NOMES.MoveNext
Loop
End Sub
e no evento click do combo nomes
Private Sub CBNomes_Click()
Set PRECO = CNN.execute([Ô]FROM est_codigo,est_preco FROM tabela WHERE est_codigo =[Ô] & CBNomes.ItemData(CBNomes.ListIndex))
If Not (PRECO.EOF = True And PRECO.BOF = True) Then
txtPreco.Text = PRECO([Ô]EST_PRECO[Ô])
End IF
End Sub
Cara Usei o seguinte codigo :
Dim PRODUTOS As New ADODB.Recordset
Set PRODUTOS = New ADODB.Recordset
PRODUTOS.Open [Ô]Select * From EST00[Ô], BANCO
Do While Not PRODUTOS.EOF
CBProdutos.AddItem PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_CODIGO[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_NOME[Ô])
CBProdutos.ItemData(CBProdutos.NewIndex) = PRODUTOS([Ô]EST_PRECO[Ô])
PRODUTOS.MoveNext
Loop
End Sub
Private Sub TxtPreco_GotFocus()
TxtPreco.Text = CBProdutos.ItemData(CBProdutos.Index)
End Sub
Ta dando o seguinte erro
Run time error 343
Objet any on array
Dim PRODUTOS As New ADODB.Recordset
Set PRODUTOS = New ADODB.Recordset
PRODUTOS.Open [Ô]Select * From EST00[Ô], BANCO
Do While Not PRODUTOS.EOF
CBProdutos.AddItem PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_CODIGO[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_NOME[Ô])
CBProdutos.ItemData(CBProdutos.NewIndex) = PRODUTOS([Ô]EST_PRECO[Ô])
PRODUTOS.MoveNext
Loop
End Sub
Private Sub TxtPreco_GotFocus()
TxtPreco.Text = CBProdutos.ItemData(CBProdutos.Index)
End Sub
Ta dando o seguinte erro
Run time error 343
Objet any on array
Não vai virar porque o itemdata deve ser um numero inteiro, ou seja valores como 3,40 ou 7,01 vão gerar erros
use a idéia dos colegas então
ou seja quando clicar em um item do combo o preço vai para o textbox
use a idéia dos colegas então
Dim PRODUTOS As New ADODB.Recordset
Set PRODUTOS = New ADODB.Recordset
PRODUTOS.Open [Ô]Select * From EST00[Ô], BANCO
Do While Not PRODUTOS.EOF
CBProdutos.AddItem PRODUTOS([Ô]EST_CLASSE[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_NOME[Ô]) & [Ô] [Ô] & PRODUTOS([Ô]EST_PRECO[Ô])
CBProdutos.ItemData(CBProdutos.NewIndex) =PRODUTOS([Ô]EST_CODIGO[Ô])
PRODUTOS.MoveNext
Loop
Private Sub CBProdutos_Click()
Dim wDivide() As String
wDivide = Split(CBProdutos.List(CBProdutos.ListIndex), [Ô] [Ô])
TxtPreco.Text =wDivide(2)
End Sub
ou seja quando clicar em um item do combo o preço vai para o textbox
Deu certo em partes treze
Mais não querendo ser chato desta maneira ele carrega os dados ao selecionar e clicar no cbprodutos , mais estou usando o tab pra mudar os campos e não sei se é por isso ele esta dando erro ao passar por ele
Error 9
Subscipt out of range
Estou usando
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys ([Ô]{TAB}[Ô])
End If
End Sub
Pra passar pelos campos com enter
Mais não querendo ser chato desta maneira ele carrega os dados ao selecionar e clicar no cbprodutos , mais estou usando o tab pra mudar os campos e não sei se é por isso ele esta dando erro ao passar por ele
Error 9
Subscipt out of range
Estou usando
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys ([Ô]{TAB}[Ô])
End If
End Sub
Pra passar pelos campos com enter
Tópico encerrado , respostas não são mais permitidas