Leandro Bueno
não registrado
|
|
Postada em 24/08/2005 14:31 hs
Ola Amigos do Vbmania tudo bem? Amigos, estou com um problemão, deixa eu tentar explicar. Para meus bancos de dados, ultililizo o Access 97. Bem tenho duas tabelas: A tabela clientes, e a tabela desenhos. Eu fiz um relacionamento com essas tabelas. Relacionei o código da tabela cliente (codcli) que é a chave primaria, com o campo cliente da tabela desenhos, e cliquei em impor integridade referencial. Acabado com o Access vou para o vb. Já no VB tenho a tela de cadastro de Clientes e a tela de cadastro de desenhos. Na tela dos clientes cadastrei 2. Na tela de Desenhos, para poder buscar os clientes que tenho cadastrado, fiz uma combo, (combo2) onde coloquei o seguinte: Private Sub Combo2_Click() vcliente.MoveMin vcliente.Seek "=", Val(Mid(Combo2, 1, 2)) vdesenhos.MoveMin End Sub Na form load da tela de desenhos, coloquei o seguinte: Private Sub Form_Load() vcliente.MoveMin Do While Not vcliente.EOF Combo2.AddItem Format(vcliente!codcli, "00") + "-" + vcliente!nome vcliente.MoveNext Loop End sub Até ai ótimo a combo esta carregando os clientes cadastrados, desta forma: 01-João 02-Maria Então começo a cadastrar os desenhos, digite todos os dados necessários e chego no campo cliente, (a combo2) escolho um dos clientes e clico em salvar. Coloquei assim no comando salvar: Private Sub salvar_Click() On Error Resume Next BeginTrans vdesenhos.LockEdits = False If inc = True Then vdesenhos.AddNew vdesenhos!coddesenhos = Val(txtcodigo) Else vdesenhos.Edit End If vdesenhos!numero = txtnumero vdesenhos!setor = txtsetor vdesenhos!revisao = txtrevisao vdesenhos!documento = txtdocumento vdesenhos!Data = CDate(txtdata) vdesenhos!devolucao = Combo1 vdesenhos!resp = txtresp vdesenhos!cliente = Val(Mid(Combo2, 1, 2)) esta é a linha do combo vdesenhos!ndesenho = txtndesenho vdesenhos!descricao = txtdescricao vdesenhos!obs = txtobs vdesenhos.Update vdesenhos.MoveMax CommitTrans End sub Mas quando eu olho ele grava o cliente como numero. Ex. se escolho 01-joão. Ele grava no campo cliente da tabela desenhos como 1 E se escolho 02-Maria Ele grava como 2 Será que tem algo errado no meu código? Ou no relacionamento? Como faço para gravar o nome do cliente? Ex. em vez de 01-joão Gravar João.
Obrigado pela atenção de todos.
|
|
|
|
Semmer
|
CURITIBA PR - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 24/08/2005 14:44 hs
O seu campo cliente é texto????? então tira o Val() da "linha do combo"
|
|
|
Leandro Bueno
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 24/08/2005 15:01 hs
Deu na mesma amigo semmer, só que em vez de gravar como 2 ele gravou como 02. Mas o campo cliente no banco de dados esta como tipo numero, por que eu não consegui fazer o relacionamento com os campos tipo texto. Será que é este o problema?
|
|
|
|
Postada em 24/08/2005 15:10 hs
Peraí, se o campo cliente é número, o que tem de ser gravado lá é o codigo do cliente, que é o número que está na frente do nome, certo? Não estou vendo erro nenhum. Se o joão está na tabela de clientes com o codcli = 1, então na tabela de desenhos, os desenhos que forem dele terão seu campo cliente = 1.
|
|
|
Leandro Bueno
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 24/08/2005 15:17 hs
sim amigo semmer é verdade acho que não tem como pegar o nome do cliente se na tabela do access o campo esta como numero. agora tenho o seguinte problema amigo: ta certo cadastrei 2 desenhos com os clientes salvos pelo codigo como vc disse acima. só que quando eu clico em alterar ele não altera. Ex: Estou no registro 2, clico em alterar e mudo o cliente. Quando clico em salvar, os dados do registro 2 não mudam nada e vão tudo para o registro 1, é como se eu tivesse alternado o primeiro. Meu botão alterar é assim: Call Habilitar txtcodigo.Enabled = False salvar.Enabled = True cancelar.Enabled = True inc = False txtndesnho.SetFocus O que pode ser?
|
|
|
|
Postada em 24/08/2005 16:09 hs
mostra o código do salvar quando o "inc" é false
|
|
|
|