Fórum como fazer esta pesquisa #300632

25/10/2005

0

:?: colegas como eu faço isto
exemplo
1 agedamento com varios tecnico , mais não poderia repetir o nome do tecnico no mesmo agedamento.

como fasso isto?

eu uso o adotable e banco de dados access mais poder ser com adoquery :(


Geomicro

Geomicro

Responder

Posts

25/10/2005

Adriano_servitec

Ola amigo se for para vc eliminar duplicidade com o SQL pode usar a funçao DISTINCT da query pode fazer assim:

SELECT DISTINCT nomedocampo FROM <TABELA>


Flw
T+


Responder

Gostei + 0

25/10/2005

Firekiller

Você teria que ter 3 tabelas:
1 - Cadastro de Técnicos
2 - Cadastro de Agendamentos
3 - Cadastro de Técnicos para Agendamento

Sendo que, no caso da tabela 3, ela seria uma tabela detalhe da tabela 2.
(Mestre/Detalhe ou Master/Detail).

No momento em que você estiver criando a tabela 3, defina que os campos de ligação com as outras tabelas (no caso a tabela 1 e a tabela 2) não podem se repetir (se não me engano, no access, basta selecionar o primeiro campo, segurar o CTRL e selecionar o segundo, definindo o campo como indexado - valores não podem ser duplicados ).

A tabela 3 se liga na tabela 1, para fazer referência ao técnico.

De uma forma geral é isso, o restante é implementação.


Responder

Gostei + 0

25/10/2005

Geomicro

Adriano não e bem isso que eu quero na verdade eu quero que nem chegue a ser cadastrado para não tem duplicidade teria como fazer isto


Responder

Gostei + 0

25/10/2005

Geomicro

firekiller esquecir de falar que eu já tinha feito isto referente as tabelas mais vou dá uma olhada nessa dica referente ao access mais se tiver outro jeito me der uma luz


Responder

Gostei + 0

25/10/2005

Adriano_servitec

Desculpe li mal, mais assim no meu caso uso o comando locate, mais nao sei se funciona com o ADO


Responder

Gostei + 0

25/10/2005

Firekiller

antes da inserção na tabela, faça o seguinte:

with ADOQuery1 do begin
Close;
SQL.Text := ´Select * From Tab_Agenda_Tecnicos where Cod_Agenda = :p1 and Cod_Tecnico = :P2´;
Parameters[0].Value := Cod_Agenda;
Parameters[1].Value := Cod_Tecnico;
Open;
end;
if ADOQuery1.RecordCount > 1 then begin
Showmessage(´Dados não podem ser inseridos! Duplicidade de chaves´);
abort;
end;

Isso se a forma de inserção ocorreu mais ou menos da forma que descrevi antes. Mas se você prestar atenção no meu post anterior, meio que defini como fazer isso direto no banco. Na verdade, você deve abrir a tabela em modo estrutura (a tabela onde você lança os Técnicos do Agendamento) e selecionar o campo responsável pela ligação com a tabela de agendamento, e o campo de ligação com a tabela técnicos, então marcar a opção chave primária. Dessa forma o proprio banco fica com essa restrição.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar