como fazer esta pesquisa
:?: 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 :(
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
Curtidas 0
Respostas
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+
SELECT DISTINCT nomedocampo FROM <TABELA>
Flw
T+
GOSTEI 0
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.
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
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
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
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
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.
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