COMBOBOX ALTERA DADOS DE OUTRO CAMPO

BARRETOBH 18/12/2010 12:07:39
#359845
Olá!

Minha dúvida é a seguinte:

Num form tenho um Combobox e um Textbox.
No Load do form são adicionados ao cmbUsuarios os itens do campo Login da tabela Usuarios.

Quero que ao ser selecionado um item de cmbUsuarios o txtTipo seja alterado para o Tipo correspondente ao Login.

A tabela seria assim:
Login | Tipo
joao | Usuário
jose | Administrador
Haida | Usuário

Alguem sabe como fazer isso?
CHARLESTON10 18/12/2010 12:25:42
#359847
Resposta escolhida
Esses dados ja estao cadastrados na tabela ?
Seria os campos da tabela:
Usuario (chave primaria - IndUsuario)
Tipo

entao voce faria assim:

Private sub Mostrar()
combo1.text = tabela!usuario
text1.text= tabela!tipo
end sub


Entao voce colocaria esse sub no evento Click no combo

Private sub Combo1_Click()
tabela.index(indusuario)
tabela.seek [Ô]=[Ô], combo1.text
mostrar
end sub


com isso seria assim a lógica:
no sub Mostrar eu puxo os dados de acordo com que esta na tabela.
no evendo click do combo, eu faço a procura de acordo com o texto do combo
com isso ele puxa o sub mostrar e mostra de acordo com o procurado na tabela.
bem simples assim

seria isso o que queria ?

CHARLESTON10 18/12/2010 12:27:25
#359848
errei la em cima seria

tabela!index = [Ô]indusuario[Ô]

BARRETOBH 18/12/2010 15:45:24
#359854
Charleston,
Obrigado pela ajuda,

Fiz o que você disse, mas na execução ele não reconheceu a tabela usuário.
Meu código ficou assim:

Private Sub cmbUsuario_Click()
Usuarios!Index = [Ô]idusuario[Ô]
Usuarios.Seek [Ô]=[Ô], cmbUsuarios.Text
Call Mostrar
End Sub

Private Sub Mostrar()
cmbUsuario.Text = Usuarios!login
txtTipo.Text = Usuarios!tipo
End Sub

porque não reconheceu a tabela?

MARCELO.TREZE 18/12/2010 19:03:30
#359860
Barreto, posta como vc preenche a cmbUsuários?.
BARRETOBH 18/12/2010 22:28:46
#359868
Citação:

:
Barreto, posta como vc preenche a cmbUsuários?.



Marcelo, faço da seguinte forma:


Private Sub Form_Load()
Dim r As New ADODB.Recordset

If r.State <> 1 Then [ô]o banco de dados está fechado
r.Open [Ô]Usuarios[Ô], c, adOpenDynamic, adLockOptimistic, adCmdTable
End If

r.MoveFirst

Do While Not r.EOF
cmbUsuario.AddItem r![Login]
r.MoveNext
Loop

End Sub
CHARLESTON10 19/12/2010 07:38:09
#359878
Entendi!
Voce tem a tabela usuario criada ?
Caso sim.
No momento do codigo vc tem q chamar de acordo com q vc declarou no seu projeto
imagine existe uma tabela Usuario no seu banco de dados porem vc declarou ela como [Ô]User[Ô] no seu projeto,
entao sempre no codigo vc tem que chamar como User nao com o nome da tabela
Pelo que eu vi vc declarou a tabela Usuarios como [txt-color=#0000f0][Ô]r[Ô][/txt-color], faça assim
na codificação puxa com o [Ô]r[Ô]

Exemplo:

Private Sub cmbUsuario_Click()
r!Index = [Ô]idusuario[Ô]
r.Seek [Ô]=[Ô], cmbUsuarios.Text
Call Mostrar
End Sub

Private Sub Mostrar()
cmbUsuario.Text = r!login
txtTipo.Text = r!tipo
End Sub


acima !

O nome da tabela é Usuarios no bd mas vc declarou a tabela como r , entao faça o codigo com o r.
;]

é só isso mesmo, até mais - abç


BARRETOBH 19/12/2010 07:56:49
#359879
Oi, Charleston,

Mais uma vez obrigado.

O código deu erro no médoto seek

[Ô]Compile error:
Method or data member not found[Ô]

Me parece que este método não está relacionado nos
do recordset.

E agora?
BARRETOBH 19/12/2010 08:05:26
#359880
A propósito, estou usando o

Microsoft ADO Data Control 6.0 (OLEDB).

Isso influencia?
CHARLESTON10 19/12/2010 18:19:04
#359920
Eu testei aqui no meu computador, sei qual é o erro, o erro é que estava usando metodo DAO e nao ADO, é que eu estou acostumado e estou mudei a pouco tempo para ADO,
Arrumei aqui e deu certo, quando eu seleciono o Usuario automaticamente muda o campo categoria de acordo com o usuario que escolhi, veja abaixo o código:

Tabela: USUARIOS
Campos: LOGIN, CATEGORIA

  Option Explicit
Dim Banco As New ADODB.Connection [ô]BD
Dim tbUser As New ADODB.Recordset [ô]Tabela Usuarios
Dim SQLUsuarios, SQLSEEK As String [ô]SEEK = PROCURA
Dim Conexao, Caminho As String


Private Sub cmbUsuarios_Click()
tbUser.Close
SQLSEEK = ([Ô]SELECT * FROM USUARIOS WHERE LOGIN = [ô][Ô] & cmbUsuarios.Text & [Ô][ô][Ô])
tbUser.Open SQLSEEK, Conexao, adOpenDynamic, adLockOptimistic
Mostrar
End Sub

Private Sub Form_Load()
AbrirBD
SQLUsuarios = [Ô]SELECT * FROM USUARIOS[Ô]
tbUser.Open SQLUsuarios, Conexao, adOpenDynamic, adLockOptimistic
PreencheCombo
End Sub


Private Sub AbrirBD() [ô]Abrir Banco de dados
On Error GoTo erro

Caminho = (App.Path & [Ô]\banco.mdb[Ô])
Conexao = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Caminho & [Ô][Ô]

Banco.ConnectionString = Conexao
Banco.Open

erro: [ô]Erro ao abrir banco de dados
If Err.Number <> 0 Then
MsgBox Err.Description & vbCrLf & Err.Number, vbCritical
End If
End Sub

Private Sub FecharBD() [ô]Fechar Banco de dados
On Error GoTo erro
Banco.Close
Set Banco = Nothing [ô]fecha o banco de dados tirando-o da memoria
erro:
If Err.Number <> 0 Then Exit Sub
End Sub

Private Sub PreencheCombo()
Do While Not tbUser.EOF
cmbUsuarios.AddItem tbUser![login]
tbUser.MoveNext
Loop
End Sub

Private Sub Mostrar()
lblCategoria.Caption = tbUser![categoria]
End Sub

BARRETOBH 19/12/2010 21:53:12
#359935
Charleston,

Muito obrigado!

O código operou perfeitamente
e fez o que eu precisava.

Tenha um feliz natal e
um excelente 2011!

Abraços
Tópico encerrado , respostas não são mais permitidas