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 

Parâmetros "DINÂMICO" em SQL

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


Registrado: Terça-Feira, 18 de Julho de 2006
Mensagens: 2

MensagemEnviada: Seg Dez 18, 2006 5:00 pm    Assunto: Parâmetros "DINÂMICO" em SQL Responder com Citação

Bom pessoal esse é o meu 1º post, e a minha dúvida eh a seguinte

estou fazendo um programa para cadastro de alunos e tenho que relaciona-los com vagas de emprego que sejam iguais ao seu perfil

bom, o usuário cadastra todos os dados do aluno, da empresa e as vagas dessa empresa.

tenho uma tela de pesquisa com vários combos, ex: sexo, escolaridade, carteira de motorista.......

entaum o programa tem q buscar o aluno q se encaixe nos itens selecionados nos combos.

eu fiz dessa forma:

SELECT
Alunos.AL_NOMALU
FROM
Alunos
Where
((Alunos.AL_SEXO = :SexoAlu AND Alunos.AL_ESCALU = :EscAlu AND Alunos.AL_COMINC = :ComIncAlu AND Alunos.AL_ESTCIV = :EstCivALu AND Alunos.AL_TIPCAR = :TipCarAlu)
ORDER BY
Alunos.AL_NOMALU


e coloquei esse comando num botão

Qu_Pesquisa.close;
Qu_Pesquisa.ParamByName('SexoAlu').AsString := Cbox_Sexo.Text;
Qu_Pesquisa.ParamByName('EscAlu').AsString := Cbox_Escolaridade.Text;
Qu_Pesquisa.ParamByName('ComIncAlu').AsString := Cbox_ComInc.Text;
Qu_Pesquisa.ParamByName('EstCivALu').AsString := Cbox_EstCivil.Text;
Qu_Pesquisa.ParamByName('TipCarAlu').AsString := Cbox_CarMot.Text;
Qu_Pesquisa.Open;


dessa maneira funciona ele me traz os alunos q tem as descrições dos combos, mas eu queria q o usuario não precisasse selecionar todos os combos, somente um ou dois (sexo e escolaridade).

Portanto eu queria saber se existe alguma maneira que se algum parametro"Qu_Pesquisa.ParamByName('SexoAlu').AsString := Cbox_Sexo.Text" tivesse um valor NULO a SQL me traga os outros parâmetros menos os q estiver em branco.

desde já agradeço pela ajuda de todos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

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

coloque o comando sql de acordo com os combos:

Código:

with Qu_Pesquisa do begin
  close;
  SQL.Clear;
  SQL.Add('SELECT Alunos.AL_NOMALU FROM Alunos Where 1=1 ');
  if comboSexo.ItemIndex >=0 then
    SQL.Add('AND Sexo = :Sexo');
  if comboSexo.ItemIndex >=0 then
    ParamByName('SEXO').AsString := comboSexo.Text;
  Open;
end;

_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rockout
Novato
Novato


Registrado: Terça-Feira, 18 de Julho de 2006
Mensagens: 2

MensagemEnviada: Ter Dez 19, 2006 8:07 am    Assunto: Responder com Citação

thomazs escreveu:
coloque o comando sql de acordo com os combos:

Código:

with Qu_Pesquisa do begin
  close;
  SQL.Clear;
  SQL.Add('SELECT Alunos.AL_NOMALU FROM Alunos Where 1=1 ');
  if comboSexo.ItemIndex >=0 then
    SQL.Add('AND Sexo = :Sexo');
  if comboSexo.ItemIndex >=0 then
    ParamByName('SEXO').AsString := comboSexo.Text;
  Open;
end;



vlw thomazs, muito obrigado pela ajuda.

ainda não testei, mas é uma boa solução e com certeza vai ficar melhor do q a q eu fiz
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