como fazer esta pesquisa

Delphi

25/10/2005

:?: 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

Curtidas 0

Respostas

Adriano_servitec

Adriano_servitec

25/10/2005

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+


GOSTEI 0
Firekiller

Firekiller

25/10/2005

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.


GOSTEI 0
Geomicro

Geomicro

25/10/2005

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


GOSTEI 0
Geomicro

Geomicro

25/10/2005

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


GOSTEI 0
Adriano_servitec

Adriano_servitec

25/10/2005

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


GOSTEI 0
Firekiller

Firekiller

25/10/2005

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.


GOSTEI 0
POSTAR