TRABALHANDO COM DUAS TABELAS
Estou com uma dificuldade em manter a mesma quantidade de registros em duas tabelas, e gostaria que me ajudassem com a sintaxe. O problema é o seguinte, uso dados de uma tabela para preencher a outra, então a quantidade de registros tem que ser exatamente igual. Exemplo:
Na tabela 1 eu tenho os dados dos imóveis, sendo matrÃcula, endereço e proprietário (3 campos)
Na tabela 2, eu vou pegar esse 3 campos e acrescentar mais 3, que seriam ano, mes e leitura (um número qualquer), gerando uma nova tabela com 6 campos. Como elas são vinculadas, tem que ter exatamente o mesmo número de registros, e é aà que não to conseguindo fazer, pois na tabela zerada não consigo acrescentar nada, e se uso addnew, a quantidade de registros não bate no final. Vou postar o código pra que entendam. Faço tudo com o comando data, então tá bem simples mesmo.
Primeiramente eu estou lendo os dados da tabela1 num grid, onde eu vou avançando os campos do grid, e preenchendo os textbox, a cada clique ele pula para o próximo campo, chegando no final, desabilita o botão gravar, pra evitar sobreposição ou registro zerado. Vejam o código:
Private Sub Pulo()
dtaImoveis.Recordset.MoveNext
If dtaImoveis.Recordset.EOF Then
dtaImoveis.Recordset.MovePrevious
cmdGravar.Enabled = False
End If
End Sub
O cara clicou no gravar, ele avança para o próximo registro, até o final do arquivo, quando ele desabilita o botão gravar.
O que não estou conseguindo, é fazer a gravação simultânea na outra tabela, com outro objeto Data, então gostaria de um código parecido com esse, para que eles tivessem o mesmo controle (começassem a gravar juntos e parassem juntos) usando apenas if, controle data, Recordset.Move, ADD e update. Até consigo gravar, mas quando não sobrepõe, grava em duplicidade, registro em branco, ou em quantidade maior, e elas tem que ser rigorosamente iguais, uma filha da outra, entenderam?
A rotina de ir avançando nos registros da tabela 1 e mostrando os dados tá pronta, não consigo gravar esses dados na tabela 2 com a mesma eficiência.
Já bati cabeça e não vai, sei que é simples, mas tem coisa que deixa a gente nervoso e emperra.
Estou gravando nas tabelas de forma bem simples, conforme o código abaixo:
Private Sub cmdGravar_Click()
dtaEndereco.UpdateRecord
dtaEndereco.Recordset.MoveLast
Text1.Text = txtSeqEndereco + 1
dtaEndereco.Recordset.AddNew
txtNomeEndereco = [Ô][Ô]
txtNomeEndereco.SetFocus
txtSeqEndereco.Text = Text1.Text
End Sub
Na tabela 1 eu tenho os dados dos imóveis, sendo matrÃcula, endereço e proprietário (3 campos)
Na tabela 2, eu vou pegar esse 3 campos e acrescentar mais 3, que seriam ano, mes e leitura (um número qualquer), gerando uma nova tabela com 6 campos. Como elas são vinculadas, tem que ter exatamente o mesmo número de registros, e é aà que não to conseguindo fazer, pois na tabela zerada não consigo acrescentar nada, e se uso addnew, a quantidade de registros não bate no final. Vou postar o código pra que entendam. Faço tudo com o comando data, então tá bem simples mesmo.
Primeiramente eu estou lendo os dados da tabela1 num grid, onde eu vou avançando os campos do grid, e preenchendo os textbox, a cada clique ele pula para o próximo campo, chegando no final, desabilita o botão gravar, pra evitar sobreposição ou registro zerado. Vejam o código:
Private Sub Pulo()
dtaImoveis.Recordset.MoveNext
If dtaImoveis.Recordset.EOF Then
dtaImoveis.Recordset.MovePrevious
cmdGravar.Enabled = False
End If
End Sub
O cara clicou no gravar, ele avança para o próximo registro, até o final do arquivo, quando ele desabilita o botão gravar.
O que não estou conseguindo, é fazer a gravação simultânea na outra tabela, com outro objeto Data, então gostaria de um código parecido com esse, para que eles tivessem o mesmo controle (começassem a gravar juntos e parassem juntos) usando apenas if, controle data, Recordset.Move, ADD e update. Até consigo gravar, mas quando não sobrepõe, grava em duplicidade, registro em branco, ou em quantidade maior, e elas tem que ser rigorosamente iguais, uma filha da outra, entenderam?
A rotina de ir avançando nos registros da tabela 1 e mostrando os dados tá pronta, não consigo gravar esses dados na tabela 2 com a mesma eficiência.
Já bati cabeça e não vai, sei que é simples, mas tem coisa que deixa a gente nervoso e emperra.
Estou gravando nas tabelas de forma bem simples, conforme o código abaixo:
Private Sub cmdGravar_Click()
dtaEndereco.UpdateRecord
dtaEndereco.Recordset.MoveLast
Text1.Text = txtSeqEndereco + 1
dtaEndereco.Recordset.AddNew
txtNomeEndereco = [Ô][Ô]
txtNomeEndereco.SetFocus
txtSeqEndereco.Text = Text1.Text
End Sub
amigo grave essas informações primeiramente na memória de variáveis, depois vc grava no banco.
EX:
Dim endereco as String
endereco = txtEndereco
desta forma a informação colocada no txtEndereco vai estar gravada na memória da variável endereco
blz?
qualquer dúvida posta aÃ
EX:
Dim endereco as String
endereco = txtEndereco
desta forma a informação colocada no txtEndereco vai estar gravada na memória da variável endereco
blz?
qualquer dúvida posta aÃ
Posso tentar fazer isso pra resolver, mas por enquanto estou fazendo com o objeto data, acho mais simples pois o código fica bem enxuto. Com o objeto data, simplesmente eu vinculo o datasource e o datafield ao text box que já grava. Usando variáveis também dá pra fazer assim?
Acesse e depois tire a sua conclusão.
http://www.macoratti.net/vbc_vinc.htm
http://www.macoratti.net/vbc_vinc.htm
Realmente o comando data já não tá me servindo na medida que a quantidade de registros e os vinculos vão aumentando. Gostaria só que me ajudassem para guardar os dados no código, sem o objeto data. Primeiro eu abro o banco no load do form com os comandos abaixo, é isso?
Set area = DBEngine.Workspaces(0)
Set db = area.OpenDatabase(App.Path & [Ô]\db.mdb[Ô])
Set rs = db.OpenRecordset([Ô]CadastroImovel[Ô], dbOpenTable)
Depois como faço pra guardar os registros? Sei que é mais ou menos assim:
valortextbox.Text = [Ô]campo_da_tabela[Ô] é isso? Gostaria que alguém me ajudasse só com a sintaxe de guardar no banco de dados, que já tá criado, banco e tabela.
Set area = DBEngine.Workspaces(0)
Set db = area.OpenDatabase(App.Path & [Ô]\db.mdb[Ô])
Set rs = db.OpenRecordset([Ô]CadastroImovel[Ô], dbOpenTable)
Depois como faço pra guardar os registros? Sei que é mais ou menos assim:
valortextbox.Text = [Ô]campo_da_tabela[Ô] é isso? Gostaria que alguém me ajudasse só com a sintaxe de guardar no banco de dados, que já tá criado, banco e tabela.
Para gravar
Tab1.AddNew [ô][txt-color=#e80000]Sempre usar para gravar[/txt-color]
Tab1([Ô]Matricula[Ô]) = Text1.Text
Tab1([Ô]Endereco[Ô]) = Text2.Text
Tab1([Ô]Proprietario[Ô]) = Text3.Text
Tab1.Update
Tab1.Bookmark = Tab1.LastModified
Tab2.AddNew [ô][txt-color=#e80000]Sempre usar para gravar[/txt-color]
Tab2([Ô]Matricula[Ô]) = Text4.Text
Tab2([Ô]Endereco[Ô]) = Text5.Text
Tab2([Ô]Proprietario[Ô]) = Text6.Text
Tab2([Ô]Ano[Ô]) = Text7.Text
Tab2([Ô]Mes[Ô]) = Text8.Text
Tab2([Ô]Leitura[Ô]) = Text9.Text
Tab2.Update
Tab2.Bookmark = Tab2.LastModified
Tab1.AddNew [ô][txt-color=#e80000]Sempre usar para gravar[/txt-color]
Tab1([Ô]Matricula[Ô]) = Text1.Text
Tab1([Ô]Endereco[Ô]) = Text2.Text
Tab1([Ô]Proprietario[Ô]) = Text3.Text
Tab1.Update
Tab1.Bookmark = Tab1.LastModified
Tab2.AddNew [ô][txt-color=#e80000]Sempre usar para gravar[/txt-color]
Tab2([Ô]Matricula[Ô]) = Text4.Text
Tab2([Ô]Endereco[Ô]) = Text5.Text
Tab2([Ô]Proprietario[Ô]) = Text6.Text
Tab2([Ô]Ano[Ô]) = Text7.Text
Tab2([Ô]Mes[Ô]) = Text8.Text
Tab2([Ô]Leitura[Ô]) = Text9.Text
Tab2.Update
Tab2.Bookmark = Tab2.LastModified
Tópico encerrado , respostas não são mais permitidas