Ir para conteúdo
Fórum Script Brasil
  • 0

Comp transferir informações de uma tabela para outra, usando o control


new_rayderss

Pergunta

21 respostass a esta questão

Posts Recomendados

  • 0

hum... sei la... acho q você precisa de dois controles data.

q informacoes você quer transferi?? todas?? e as duas tabela são iguais??

imagino q você esteja comecando, então vo te passar um tutorial aqui q ajuda muito (inclusive ele ensina a fazer aquela busca q você queria no otro tópico, de um jeito diferente do q eu passei):

http://www.macoratti.net/datactl.htm

e tb de uma olhada nesse site q tem mta coisa.

http://www.macoratti.net/

e quanto ao ado e data, recomendo você não usar controle vinculado não. tipo, não sua data e nem adodatacontrol. declara sempre o recordset e a conexao e faca por codigo. isso por motivos q você ve aqui: http://www.macoratti.net/vbc_vinc.htm

mas é só sugestao, não quero da palpite no q você ta fazendo, é você q sabe. alem de q é interessante sim aprende a usar o controle data, mesmo q não seja a melhor opcao pra programar.

hum, e tb prefira sempre ado ao dao, porque o dao já ta mais q ultrapassado.

como usar ado sem o adodatacontrol tb é explicado aqui: http://www.macoratti.net/ado.htm

falou, qualquer duvida poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim estou começando.. e preciso terminar esse projeto para passar de ano :P e vou dar uma olhada nos links.

vou tentar explicar o que quero..

nessa janela cadastro o cliente tudo corretamente.

cadcli.png

depois esses campos que estão em destaque com círculo, eu queria enviar eles para o cadastro do animal.

cadanim.png

Aí funcionaria assim depois que cadastrar o cliente salvando o cadastro com o guardar. iria aparecer uma mensagem do tipo "Deseja cadastrar os animais do cliente?" caso o usuario clique em sim vai para outro cadastro e fecha aquele. Caso clique em não ai permanece no cadastro do cliente. e depois só poderá add as informações destacadas usando o consultar.

Link para o comentário
Compartilhar em outros sites

  • 0
depois esses campos que estão em destaque com círculo, eu queria enviar eles para o cadastro do animal.

o legal é você gravar so o codigo na tabela do cachorro. você mostra o nome do cliente na tela, mas não precisa gravar. se quise grava não tem problema, apesar de q conceitualmente não é consistente, as vezes é util como atalho, não precisa ir na otra tabela pra ler o nome. mas ai tem q lembra de sempre atualizar as duas tabelas se um dia for mudar o nome.

Aí funcionaria assim depois que cadastrar o cliente salvando o cadastro com o guardar. iria aparecer uma mensagem do tipo "Deseja cadastrar os animais do cliente?" caso o usuario clique em sim vai para outro cadastro e fecha aquele. Caso clique em não ai permanece no cadastro do cliente. e depois só poderá add as informações destacadas usando o consultar.

o q você podia fazer era:

1 - criar uma variavel global (no module) e, quando ele clicar em sim na pergunta "Deseja cadastrar os animais do cliente?", você alterava essa variavel. quando o formulario abrisse, você carregava dela. e a mesma coisa pro nome.

2 - essa opcao seria muito melhor e mais pratica, quando ele clicasse sim, você simplesmente alterava os textbox do outro formulario direto. exemplo:

r = MsgBox("Deseja cadastrar os animais do cliente?", vbYesNo + vbQuestion, "Pergunta")
If r = vbYes Then
    frmAnimal.txtCodCliente.Text = Me.txtCodCliente.Text
    frmAnimal.txtNomeCliente.Text = Me.txtNomeCliente.Text
End If[/code]

ai você troca os nomes dos campos q eu pus de exemplo pelos nome dos seus campos de verdade.

veja se é isso, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0

funciono.. mas tenho umas dúvidas.

eu fiz isso no cadastro do cliente, sendo que quando vou para o cadastro do animal (os campos estão bloqueados e só fica pronto para cadastrar quando clicar com o botão Novo. Porém quando uso método para mudar de cadastro ele fica bloqueado. Então o que faço para habilitar tb o cadastro do animal quando mudar de cadastro? Vou ter que fazer isso no cadastro do ou cliente do animal?

Private Sub cmdNovo_Click()
Data1Animal.Recordset.AddNew
Ativar Me

Verificar = 1
Fechado Me

txtCodAnimal.Locked = True
txtCodCli(2).Text = ""
txtCodCli(2).Locked = True
txtNome(1).Locked = True
txtMatri.Text = ""
cmdCancelar.Caption = "&Cancelar"
cmdCancelar.ToolTipText = "Cancela a ação"
cmdNovo.Enabled = False
cmdGuardar.Enabled = True
cmdEditar.Enabled = False
cmdLocalizar.Enabled = False
cmdExcluir.Enabled = False
cmdCancelar.Enabled = True
Data1Animal.Visible = False
Call GerarNovoCodigo
End Sub

essa é a codificação do botão novo do cadastro do animal, queria ativar isso tudo aí encima quando usar a mudança de cadastro.

Link para o comentário
Compartilhar em outros sites

  • 0

é então... não entendi direito, mas acho q o q você teria q fazer pra facilita é copiar esse codigo aqui:

txtCodAnimal.Locked = True
txtCodCli(2).Text = ""
txtCodCli(2).Locked = True
txtNome(1).Locked = True
txtMatri.Text = ""
cmdCancelar.Caption = "&Cancelar"
cmdCancelar.ToolTipText = "Cancela a ação"
cmdNovo.Enabled = False
cmdGuardar.Enabled = True
cmdEditar.Enabled = False
cmdLocalizar.Enabled = False
cmdExcluir.Enabled = False
cmdCancelar.Enabled = True
Data1Animal.Visible = False[/code] em uma sub separada, chamada tipo Habilita ou qualquer coisa assim. ai quando precisar habilitar você chama ela (tb na inclusao quanto na alteracao). o q eu costumo fazer tb é usar uma sub só pra habilitar e desabilitar. ai você passa por parametro numa variavel boolean se você vai habilitar ou desabilita. exemplo:
[code]Private Sub Habilita(sim As Boolean)
  - código -
End Sub
ai quando você for chamar você pode passar por parametro, tipo assim:
Habilita True
ou
Habilita False
ai esse codigo estaria dentro da sub, tipo assim:
...
cmdNovo.Enabled = Not sim 'se sim vier como True, ele vai guardar False no enabled e viceversa
cmdGuardar.Enabled = sim
cmdEditar.Enabled = Not sim
...[/code]

seila, não sei se isso se encaxa no q você precisa fazer... mas se você tem q chamar o mesmo codigo pra habilitar tanto quando ele clica em novo, quando for pra altera o cadastro, ai é bom você por o codigo em uma sub separada. assim se você precisa alteera qualquer coisa no codigo, altera somente uma vez.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz esse método de habilitar de um modo um pouco diferente. Mais não é isso que me referi, é tipo quando gravo o cadastro do cliente ele pergunta para se quer cadastrar o animal, como te falei. Então eu digo sim ele leva as informações que quero para o cadastro do animal certo, como você me ensino. Porém não dá para cadastrar o animal, então eu quero saber como posso fazer isso, cadastrar o animal da mesma forma se eu tivesse usado o botão novo.

entendeu? Agradeço a ajuda que você me deu até agora, mas peço mais essa força :)

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta fazer isso aqui:

Public Sub cmdNovo_Click()
Data1Animal.Recordset.AddNew
Ativar Me

Verificar = 1
Fechado Me

txtCodAnimal.Locked = True
txtCodCli(2).Text = ""
txtCodCli(2).Locked = True
txtNome(1).Locked = True
txtMatri.Text = ""
cmdCancelar.Caption = "&Cancelar"
cmdCancelar.ToolTipText = "Cancela a ação"
cmdNovo.Enabled = False
cmdGuardar.Enabled = True
cmdEditar.Enabled = False
cmdLocalizar.Enabled = False
cmdExcluir.Enabled = False
cmdCancelar.Enabled = True
Data1Animal.Visible = False
Call GerarNovoCodigo
End Sub
E, ao invés de:
cmdNovo_Click
Utilize:
frmAnimal.cmdNovo_Click

Link para o comentário
Compartilhar em outros sites

  • 0
não tem que declara um variavel global, para indicar que quando vem do cadastro do cliente e quando não vai vir.

é uma opcao, mas do jeito q o jonathan falou funciona sim. acho q você não viu no post dele, mas você tem q declarar o cmdNovo_Click como public pra poder funcionar.

tipo onde deve estar declarado assim:

Private Sub cmdNovo_Click()
declare assim:
Public Sub cmdNovo_Click()

se não for publico você não consegue acessa de fora.

Link para o comentário
Compartilhar em outros sites

  • 0
da erro Data1Animal.Recordset.AddNew, na linha que tem isso.

hum... nunca vi esse erro... mas imagino q teja acontecendo porque o form ainda não foi inicializado e o objeto Data não ta aberto ainda. não vai funcionar chamar o clique do botao antes do load. você ta chamando o form do animal como vbmodal?? se não tiver, tenta colocar a linha frmAnimal.cmdNovo_Click depois do load.

ai se não adiantar vai ter q fazer isso q falou mesmo hehehee

não tem que declara um variavel global, para indicar que quando vem do cadastro do cliente e quando não vai vir.

mas não gosto tb de ficar criando variavel global pra uma coisa pequena dessas. porque tipo variavel global é pra ser usada por toda aplicacao. ai nesse caso ela sera usada so pra uma unica comunicacao entres dois forms. o q eu costumo fazer seria por um label no form do animal com Visible False. ai antes de abrir o form você editaria o label com alguma informacao pra você saber q você esta vindo do otro formulario.

bom, ce q sabe como você quer fazer ai, qualquer duvida poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Putz não consegui entender o que você quis dizer exatamente..

mais deixa eu explicar melhor...

No cadastro do cliente depois de preencher tudo e clicar no guardar, ele vai perguntar.. \/

Pergunta = MsgBox("Deseja cadastrar os animais do cliente?", vbYesNo + vbQuestion, "Pergunta")
If Pergunta = vbYes Then
    frmAnimal.txtCodCli(2).Text = Me.txtCodCli.Text
    frmAnimal.txtNome(1).Text = Me.txtNome.Text
    Unload Me
    frmAnimal.Show
    frmAnimal.cmdNovo_Click
Else
Exit Sub
End If
Aí quando vai para o cadastro do animal, queria ativar isso \/
Public Sub cmdNovo_Click()
   'If Pergunta = vbYes Then
Data1Animal.Recordset.AddNew
Ativar Me

Verificar = 1
Fechado Me

txtCodAnimal.Locked = True
txtCodCli(2).Text = ""
txtCodCli(2).Locked = True
txtNome(1).Locked = True
txtMatri.Text = ""
cmdCancelar.Caption = "&Cancelar"
cmdCancelar.ToolTipText = "Cancela a ação"
cmdNovo.Enabled = False
cmdGuardar.Enabled = True
cmdEditar.Enabled = False
cmdLocalizar.Enabled = False
cmdExcluir.Enabled = False
cmdCancelar.Enabled = True
Data1Animal.Visible = False
Call GerarNovoCodigo

'ElseIf cmdNovo_Click = True Then
    'ElseIf cmdNovo_Click = True Then
  ' codificação
'End If
End Sub

assim que eu estou fazendo, só que ele ta implicando com o data que vai add um novo registro no cadastro do animal. Os comentários foram tentativas que não resultou em nada :P entendeu? estava com cara que ia dar tudo certo e deu esse erro aí. E não entendi a estória do Label.

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

  • 0

era isso q eu tava falando pra você fazer:

frmAnimal.Show
frmAnimal.cmdNovo_Click[/code] ou seja, você já ta fazendo e não ta adiantando. então... fala uma coisa, você já tentou fazer a insercao do animal sem estar vindo do form do cliente?? e esse codigo funcionou?? tipo qual o codigo q ta no form load do animal?? tipo, esse objeto data aponta pra algum tabela já no load ou ele ta vazio nessa hora?? porque essa mensagem de erro significa q ele ta vazio. não aponta pra nenhuma tabela ou query. (e esse é um dos motivos pelos qual é muito melhor trabalha com o RecordSet declarado com q com controles Data) se você ta setando a tabela tudo certinho, então o erro ocorre provavelmente porque você da chamando o novo logo abaxo do codigo q mostra o formulario, o q acaba sendo processado antes do load... quanto ao label, tava falando pra você cria um label qualquer no form do animal e dexar invisivel pro usuario não ver. ai no form do cliente, antes do frmAnimal.Show, você colocaria um codigo tipo:
[code]frmAnimal.Label1.Caption = "x"
pode por o q quiser no lugar do x. ai no load do animal você faria:
If Label1.Caption = "x" Then 'Significa q ta vindo do cliente
    cmdNovo_Click
End If[/code]

Link para o comentário
Compartilhar em outros sites

  • 0
então... fala uma coisa, você já tentou fazer a insercao do animal sem estar vindo do form do cliente?? e esse codigo funcionou??
Sim, perfeitamente.

tipo qual o codigo q ta no form load do animal?? tipo, esse objeto data aponta pra algum tabela já no load ou ele ta vazio nessa hora??

Private Sub Form_Load()
Data1Animal.DatabaseName = App.Path & "\BD\db2.mdb"
 Data1Animal.RecordSource = "Animais"
 Data1Animal.RecordsetType = 0
 centraliza Me
 If lblCliChama.Caption = "x" Then 'Significa que esta vindo do cliente
    Call cmdNovo_Click
End If

End Sub
além de estar aí no propriedades tb configurei. Quanto ao label troco direitinho o caption, porém não chamo a função.
Pergunta = MsgBox("Deseja cadastrar os animais do cliente?", vbYesNo + vbQuestion, "Pergunta")
If Pergunta = vbYes Then
    frmAnimal.txtCodCli(2).Text = Me.txtCodCli.Text
    frmAnimal.txtNome(1).Text = Me.txtNome.Text
    Unload Me
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
Else
Exit Sub
End If

===

Kuroi to deixando o projeto anexado para você ver, se errei em alguma coisa. E quanto a conexão de banco de dados via código estou procurando não fazer assim, porque se não atrasaria o término. http://www.4shared.com/file/68536079/a0e15...Final_-_RD.html

Editado por new_rayderss
Link para o comentário
Compartilhar em outros sites

  • 0
Quanto ao label troco direitinho o caption, porém não chamo a função.

é na verdade, não é pra ser no formload porque o load é chamado quando você edita o textbox, ele já carrega e o load é chamado antes do show.

ponha o codigo no form activate. ponha no final de tudo no activate q deve funcionar.

esse codigo aqui:

If lblCliChama.Caption = "x" Then 'Significa que esta vindo do cliente
    Call cmdNovo_Click
End If[/code] ponha no final do activate do animal e pra evita de acontecer aquele erro de "This Action was cancelled by an associated object.", você tem q fechar o data do form do cliente. senao a conexao com o access não é perdida e vai dar erro porque ele vai tentar sair de um registro inexistente. por isso, adicione o seguinte codigo no unload do cliente:
[code]Private Sub Form_Unload(Cancel As Integer)
    Data1.Recordset.Close
    Data1.Database.Close
End Sub

é bom fazer a mesma coisa no unload do animal.

Link para o comentário
Compartilhar em outros sites

  • 0

aiaiai, ta foda...

mas agora descobri, testei e ta funcionando, não tem mais erro.

esquece o meu post de cima, o gde problema é q você tava editando o codigo e nome do cliente antes do addnew. e como os controles tão vinculados, ele achava q você já tava editando e não conseguia chamar o addnew, por isso a mensagem de erro.

como resolver:

no form do cliente, dexe apenas esse codigo:

Pergunta = MsgBox("Deseja cadastrar os animais do cliente?", vbYesNo + vbQuestion, "Pergunta")
If Pergunta = vbYes Then
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
Else
Exit Sub
End If[/code] entenda q você não pode editar o codigo e o nome antes de chamar o addnew. então tb não feche o formulario ainda. você vai fechar no form do animal. como você arruma os botoes no activate, então você tem q por esse codigo no final do activate depois de tudo:
[code]If lblCliChama.Caption = "x" Then 'Significa que esta vindo do cliente
    cmdNovo_Click 'Aqui você chama o AddNew porque isso tem q ser feito ANTES de mudar os textbox
    
   'Aqui altera os textbox
    txtCodCli(2).Text = frmCliente.txtCodCli.Text
    txtNome(1).Text = frmCliente.txtNome.Text

    Unload frmCliente 'Fecha o form do cliente q ta aberto.
End If

EDITADO:

inclusive no teste q fiz aqui no projeto q você mandou ta funcionando certinho, qualquer coisa me fala q eu te mando.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...