Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal estou com um problema que parece ser fácil mais não é, eu tenho um BD com diversos clientes aqui da empresa.
Eu queria o seguinte quando a pessoa escolhesse o Posto(cliente) preenchesse os outros campos em vermelho conforme na imagem abaixo com os dados dos respectivos clientes que escolhessem que está no tabela Clientes do meu BD.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img25.imageshack.us/img25/8641/imagemrgh.jpg&key=6af67509fda66c82c07fb40582c49ba373122348ab12c1c29328762288f0dabb" alt="Imagem Postada" />
Alguém pode me ajudar a fazer isso ?
Abraço!
Como assim, você quis dizer fazer o select direto no combobox ?
No evento Change do ComboBox você faz o select e preenche os campos da tela.
>
No evento Change do ComboBox você faz o select e preenche os campos da tela.
Ok, vou tentar fazer aqui qualquer coisa eu posto novamente.
valeu!
Não deu certo meu select ele não aparece nada nocombo.
Dá uma olhada no meu código.
Private Sub cboPosto_Change()
Call conexao
Conex.CursorLocation = adUseClient
rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
cboPosto = rs("nome")Calma lá!
Você quer selecionar um item do combobox e preencher o resto da tela, ou você quer colocar no combobox o cliente ?
>
Calma lá!
Você quer selecionar um item do combobox e preencher o resto da tela, ou você quer colocar no combobox o cliente ?
Então vai ser mais ou menos assim nesse combobox eu quero que liste todos os meus clientes salvos no banco,e quando o usuario escolher um cliente preencha os campos com os dados do cliente selecionado.Entendeu ?
Ah sim.
No load do form:
Call conexao
Conex.CursorLocation = adUseClient
rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
while Not rs.Eof
cboPosto.AddItem(rs("nome"))
cboPosto.ItemDate(cboPosto.NewIndex) = rs("CODIGO")
rs.MoveNext
Wend
Depois no Change do combo você recupera o valor do combo
MsgBox cboPosto.ItemData(Combo1.ListIndex)
Blza scorpio deu certo mais não entendi essa parte aki
cboPosto.ItemDate(cboPosto.NewIndex) = rs("CODIGO")
Se eu não coloca uma ' ele dá esse erro: Method or data member not found
E como eu faço agora pra quando eu clicar no cliente ele preencher os outros campos ? select novamente ?
Está ItemDatE, troca para ItemData.
>
Depois no Change do combo você recupera o valor do combo
MsgBox cboPosto.ItemData(Combo1.ListIndex)
E faz o select pegando os dados do cliente.
Deu esse erro
Run-time error '3265':
O item não pode ser encontrado na coleção correspondente ao nome
ou ao ordinal solicitado.
Aponta pra essa linha
cboPosto.ItemData(cboPosto.NewIndex) = rs("CODIGO")
O que é chave na sua sua tabel ade clientes?
Eu coloquei um exemplo, o campo código.
O campo nome, seria bom eu criar um campo código ?
Sim. Quando você cadastrar o cara você informa CPG/RG. A chave pode ser um dos dois.
Mas vai do seu modelo ede dados. De uma analisada.
>
Sim. Quando você cadastrar o cara você informa CPG/RG. A chave pode ser um dos dois.
Mas vai do seu modelo de dados. De uma analisada.
O que seria o CPG/RG ?
Ops... escrevi errado.
CPF e RG.
O nome do cliente não é o dado mais correto para utilizar como chave.
Então eu vou criar um campo código e posto aqui o que deu.
Então criei o campo codigo no meu bd mais surgiu outro problema...eu criei o campo "codigo" como serial tipo ele auto insere o codigo do cliente mais na hora do insert no antigo ele pede pra digitar o código na textbox....eu penso que seria assim deixava a textbox em branco e ele auto-inserisse o numero e não precisasse digitar ele na text.
Não precisa. Ou você passa o código no INSERT 0, ou no INSERT você não coloca o campo código.
Só que ai tá o problema como ficaria pra deixar em branco o campo codigo antes do primeiro campo que é txtfantasia ?
Conex.Execute ("insert into cliente values('" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")
Meu insert sem o campo código ele não aceita e dá erro
Run-time error '-2147467259 (80004005)':
ERROR: invalid input syntax for integer: "Cliente 1"
Como faço pra passar o INSERT sem o campo código?
>
Conex.Execute ("insert into cliente values(0,'" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")
Ou
Insert Into Clientes (nome,endereco,telefone,...) Values ("gabrieldb","seila",0000000,....)
Então essa primeira opção ai deu certo mais no caso só insere uma vez esse mesmo codigo se eu deixar o 0, ai quando tento inserir de novo volta o erro, queria que ele fosse mudando os numeros.
Conex.Execute ("insert into cliente values(0,'" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")
Ou
Insert Into Clientes (nome,endereco,telefone,...) Values ("gabrieldb","seila",0000000,....)
Consegui resolver meus dois problemas Scorpio..
Coloquei o codigo que você me passou no form e no evento click doCombobox ficou assim:
Private Sub cboPosto_Click()
rs.Open "select * from cliente where nome = '" & cboPosto & "'", Conex, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
txtRazao.Text = Trim(rs("razao"))
txtContato.Text = Trim(rs("resp"))
txtCargo.Text = Trim(rs("cargo"))
Else
MsgBox ("Não há clientes cadastrados!"), vbExclamation, ("Cadastro de Empregados")
End If
rs.Close
End Sub
Pro Insert não coloquei o campo "codigo" nele e ficou assim:
Insert Into Tabela(Campo1, Campo2) Values('valor1', 'valor2')
Valeu pela ajuda.
Abraço!
O combobox tem um evento Change. Tente utilizá-lo.