|
Postada em 14/10/2008 16:46 hs
Galera, tenho um programinha simples de cadastro de fitas. Uso método DAO para acesso aos dados (Access 7.0). O banco tem várias tabelas. Na de Andamento, registro as fitas emprestadas. E na de Transações, um form exibe um Grid mostrando a movimentação das retiradas e das devoluções. Como utilizo o método SEEK na rotina de registrar a data de devolução, para procura de registros na segunda tabela, a tabela Transações só consigna uma única data de retorno, no primeiro registro de movimento gerado (o ponteiro aponta para o primeiro registro. Contudo, uma fita pode ser emprestada e devolvida várias vezes). Tem como fazer a segunda tabela (Transações) aceitar as datas de devolução para diversos registros de uma mesma fita, na rotina abaixo? Eis o trecho do código (evento LostFocus da textbox <Data da Devolução>) onde uma rotina atualiza os dados da primeira tabela (Andamento) e o campo de devolução na segunda tabela (Transações):
TbAndamento("Devolucao") = txtDataRetorno 'Preenche o campo <Devolução> com conteúdo da textbox TbAndamento.Update 'Atualiza a tabela <Andamento> TbTransações.Seek "=", txtCodFita 'Procura na tabela <Transações> 'pelo nº do filme (textbox) TbTransações.Edit 'Coloca a tabela <Transações> 'em modo de Edição TbTransações("Retorno") = txtDataRetorno 'Preenche o campo com o conteúdo 'da textbox TbTransações.Update (No evento Load do form de Andamento, todas as tabelas utilizadas são carregadas como DbOpen Table, conforme abaixo):
Set TbAndamento = BancoDeDados.OpenRecordset("Andamento", dbOpenTable) Set TbTransações = BancoDeDados.OpenRecordset("Transações", dbOpenTable) TbAndamento.Index = "IndFita" TbTransações.Index = "CodFita"
|
|
|
|
|
Postada em 15/10/2008 08:19 hs
Tem sim, faça com que a data de devolução seja também chave primária no banco.
__________________
"It is the way of men to make monsters...and it is the nature of monsters to destroy their makers."
-F.E.A.R. (First Encounter Assault Recon )
|
|
|
|
Postada em 16/10/2008 00:50 hs
Não consegui, Ash... Mesmo porque, se eu criar a chave primária para esse campo <Devolução>, será que o sistema vai aceitar 'n' registros para uma mesma data (primária e única)? Ou deve ser apenas <primária>, sem ser única? Tem como vc me mostrar como ficaria o código no exemplo que coloquei acima?
|
|
|
|
Postada em 16/10/2008 08:29 hs
Vc tem que fazer uma chave primária composta, ou seja, pegar as tuas chaves primárias e colocar mais essa.
Eu não sei como consistir isso usando DAO, pois sempre uso recordsets, então não vou poder lhe dar um exemplo de código.
E toda chave primária sempre é única.
|
TÓPICO EDITADO
|
|
|
|
Macaubal
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 16/10/2008 10:22 hs
Não tem necessidade de criar o campo como chave primária, mas voce deverá criar um indice (la no raio) para os campos Fita e DataDevolucao, ai onde voce usa .SEEK vc vai ter que colocar RecordSet.index = "NomeIndiceCriado" RecordSet.Seek "=" Fita, DataDevolucao
|
|
|
|
Postada em 16/10/2008 11:14 hs
OK. Vou ver se 'quebro' a cabeça para encontrar a solução, baseado nas dicas que vcs me passaram. Grato. Chico.
|
|
|