ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Consulta SQL

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
newrogerio
Experiente
Experiente


Registrado: Quarta-Feira, 6 de Setembro de 2006
Mensagens: 422

MensagemEnviada: Sáb Dez 16, 2006 12:22 pm    Assunto: Consulta SQL Responder com Citação

bom ,,,é o seguinte estou com um problema em uma consulta..
tenhu uma tabela CLIENTE(cod_cli,nome_cli,endereco_cli).....e outra Tabea SERVIÇO(cod_servico,cod_cli,data_servico)....como vcs estaum, vendo....na tabela servico uso uma foreign key(cod_cliente)

bom a consulta e a seguinte.......numa edit eu escrevo o nome do cliente..
e no dbgrid.....aparece todos os servicos do cliente...ordenado por data...



só ke como na tabela servico , naum tem o campo nome do cliente e sim o codigo do cliente..............então eu tenhu ki digitar o codigo do cliente para aparecer os dados do servico...



como ki eu faço pra resolver isso,.....pois keru digitar o nome e naum o codigo...


banco feito em interbase
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Maick
Aprendiz
Aprendiz


Registrado: Terça-Feira, 10 de Agosto de 2004
Mensagens: 183
Localização: Interior SP

MensagemEnviada: Dom Dez 17, 2006 7:22 pm    Assunto: Responder com Citação

Bom dia Rogerio.
O que vc procura é simples, ñ sei qual componente de acesso vc está utilizando, mas como os componentes de acesso para o delphi segue um padrão, vai ser facil pra vc entender. ( eu uso ZEOS e MySQL )

No componente TABLE existem propriedades chamadas MasterSource, MasterFields e IndexFieldName, que são responsaveis pelo relacionamento mestre/detalhe entre as tabelas.

Pela sua descrição de banco, a tabela CLIENTE é a tabela mestre e a de SERVIÇO é a detalhe.

Faça o seguinte:

Selecione o componente TABLE que carrega a tabela SERVIÇO
Na propriedade MasterSource vc seleciona o DataSource setado para interagir com a tabela cliente.
Na propriedade MasterFields vc seleciona ou digita o campo chave da tabela cliente "cod_cli"
Na propriedade IndexField vc seleciona ou digita a chave estrangeira da tabela SERVIÇO "cod_cli"

Fazendo isto as tabelas estarão interligadas, podera visualizar facilmente esse relacionamento jogando 2 grids ( 1 para cada tabela ) e navegando pelo registros da tabela mestre ( CLIENTES ).

Agora quanto a parte do usuario entrar com o nome do cliente ao invez do codigo, vc pode fazer utilizando a função locate ou atraves de filtros.
Eu pessoalmente prefiro filtros, mas cabe a vc avaliar qual a melhor solução para seu formulario.
Da uma pesquisada nas duas soluções e qualquer duvida posta aki dnovo

[]s
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
newrogerio
Experiente
Experiente


Registrado: Quarta-Feira, 6 de Setembro de 2006
Mensagens: 422

MensagemEnviada: Dom Dez 17, 2006 9:51 pm    Assunto: Responder com Citação

e ai Maik beleza...valeu por tentar me ajudar....mas eu naum entendi muito bem.....


eu to usando um ''IBQUERY'' um ''IBUPDATESQL'' e um ''DATASOURCE''


procedure TFHistoricoCliente.edtLocalizarClienteChange(Sender: TObject);
begin
if edtLocalizarCliente.Text <> '' then

begin
ibqryHistoricoCliente.Close; // esse aqui eu usei só pra fazer a consulta
// no datamodule tem o ibqryCliente esse
// uso para gravação

ibqryHistoricoCliente.SQL.Clear;
ibqryHistoricoCliente.SQL.Add('select * from TB_SERVICO where COD_CLI like ' + #39 + edtLocalizarCliente.text + #39);


ibqryHistoricoCliente.SQL.Add('Order by DATA_SERVICO');
ibqryHistoricoCliente.Open;
end;
end;




ta ai +- pra vc ve como eu fiz.........nessa consulta só fucniona se eu digitar o codigo do cliente como eu ja havia explicado............mas tem ki ser o nome.............



me da uma luz....pq até o fim do mes esse sisteminha tem ki ta pronto

TB_CLIENTE

cod_cli
nome_cli
endereco_cli
telefone_cli

TB_SERVICO

cod_servico
cod_cli
data_servico
horario_servico
descricao_servico





sem querer abusar.......mas se vc souber alguma coisa sobre estoque,,,,,,me da umas dica tbm..................eu só keru dar entrada e saida no estoque..........



[/img]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
beto1002005
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 23 de Mai de 2005
Mensagens: 110

MensagemEnviada: Seg Dez 18, 2006 7:07 am    Assunto: Responder com Citação

Ola Rogério!

Usa um IbDataSet. No OnChance do edit que voce usara para à pesquisa
põe este codigo

Código:

WITH ibDataSet1 DO
BEGIN
  CLOSE;
  SelectSQL.Clear;
  SelectSQL.ADD('SELECT C.*, S.* FROM TB_CLIENTE C, TB_SERVICO S');
  SelectSQL.ADD('WHERE S.COD_CLI = C.COD_CLI AND upper(C.NOME_CLI) LIKE upper(:pNOME)');
  SelectSQL.ADD('ORDER BY S.DATA_SERVICO');
  ParamByName('pNOME').VALUE := '%'+edtNome.Text+'%';
  OPEN;
END;


Tenta ai, ve se resolve seu problema.
Espero ter ajudado. T+
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
newrogerio
Experiente
Experiente


Registrado: Quarta-Feira, 6 de Setembro de 2006
Mensagens: 422

MensagemEnviada: Seg Dez 18, 2006 10:06 am    Assunto: Responder com Citação

e ai beto100 beleza.........essa funciono......valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
newrogerio
Experiente
Experiente


Registrado: Quarta-Feira, 6 de Setembro de 2006
Mensagens: 422

MensagemEnviada: Seg Dez 18, 2006 7:58 pm    Assunto: Responder com Citação

to com mais um problema numa consulta.............tenhu uma maskedit......e nela digito uma data......e no dbgrid tem ki aparecer todas as datas ki forem iguais a da maskedit..................só ki naum to sabendo fazer alguma conversão ou algo do tipo,,,,,,,,,,,,,,,,,,naum da erro ,....mas tbm naum aparece nada.....o codigo ki tou usando e este
no evento OnChange


if mskdtLocalizarServico.Text <> '' then
begin
ibqryLocalizarServico.Close;
ibqryLocalizarServico.SQL.Clear;
ibqryLocalizarServico.SQL.Add('select * from TB_SERVICO where DATA_SERVICO like' + #39 + mskdtLocalizarServico.text + #39);
ibqryLocalizarServico.Open;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
newrogerio
Experiente
Experiente


Registrado: Quarta-Feira, 6 de Setembro de 2006
Mensagens: 422

MensagemEnviada: Ter Dez 19, 2006 10:05 am    Assunto: Responder com Citação

ai gente já consegui resolver a quetão da data...........utilizei um MonthCalendar......e deu certinho...



agora só falta a parte do estoque que é só dar entrda e saida..............se alguem souber de um sisteminha exemplo ou algum codigo ..me de uma mão ai.......................mas tem ki ser pro interbase
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB