MANIPULACAO STRING

RICOCARDOZO 09/01/2012 12:24:32
#392724
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.
EDERMIR 09/01/2012 12:36:39
#392726
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]
RICOCARDOZO 09/01/2012 13:25:54
#392730
Mudei o limitador para [Ô] | [Ô]
e tentei

Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide

Ta dando erro 13

LUIZCOMINO 09/01/2012 14:43:29
#392734
ele cria uma matriz com o total de limitadores iniciando no zero
nesse caso ficaria


Wdivide = split(CBPRODUTO.TEXT,[Ô] | [Ô])
Tunitario.TEXT = Wdivide(0)
FILMAN 09/01/2012 17:56:44
#392755
Correto é que você precisa delimitar a posição SPLIT para que o preço seja atribuído no TEXTBOX

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
MARCELO.TREZE 10/01/2012 09:55:24
#392783
Resposta escolhida
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

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
RICOCARDOZO 10/01/2012 12:34:10
#392816
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
MARCELO.TREZE 10/01/2012 15:18:07
#392850
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


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


RICOCARDOZO 10/01/2012 16:28:32
#392868
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
Tópico encerrado , respostas não são mais permitidas