unir select
Uso MySql 5 e delphi 7
Preciso fazer um select onde a condição pode ser um nome específico de uma coluna (select 1)
ou trazer todos os campos da coluna (select 2)
select 1
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
select 2
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
Como posso unir estes dois select. No form(Delphi) tem um CheckBox, que se for selecionado indica que o usuário quer exibir todos os alunos(select 2), ou ele clica em um Combobox onde escolhe o nome a ser exibido(select 1)
Preciso fazer um select onde a condição pode ser um nome específico de uma coluna (select 1)
ou trazer todos os campos da coluna (select 2)
select 1
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
select 2
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
Como posso unir estes dois select. No form(Delphi) tem um CheckBox, que se for selecionado indica que o usuário quer exibir todos os alunos(select 2), ou ele clica em um Combobox onde escolhe o nome a ser exibido(select 1)
Claudivan Lopes
Curtidas 0
Respostas
Joel Rodrigues
14/09/2012
Você pode montar a query sem parâmetros e, caso o usuário deseje filtrar um único nome, você adiciona a cláusula where e o parâmetro.
Se tiver duvida com relação a implementação, é só avisar.
Se tiver duvida com relação a implementação, é só avisar.
GOSTEI 0
Claudia Nogueira
14/09/2012
Uso MySql 5 e delphi 7
Preciso fazer um select onde a condição pode ser um nome específico de uma coluna (select 1)
ou trazer todos os campos da coluna (select 2)
select 1
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
select 2
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
Como posso unir estes dois select. No form(Delphi) tem um CheckBox, que se for selecionado indica que o usuário quer exibir todos os alunos(select 2), ou ele clica em um Combobox onde escolhe o nome a ser exibido(select 1)
Preciso fazer um select onde a condição pode ser um nome específico de uma coluna (select 1)
ou trazer todos os campos da coluna (select 2)
select 1
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
select 2
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
Como posso unir estes dois select. No form(Delphi) tem um CheckBox, que se for selecionado indica que o usuário quer exibir todos os alunos(select 2), ou ele clica em um Combobox onde escolhe o nome a ser exibido(select 1)
if (not CbTodos.Checked) and (Combobox1.Text = '') then
begin
ShowMessage('Escolha o aluno');
Combobox1.SetFocus;
Exit;
end;
MyQuery1.Close;
MyQuery1.SQL.Clear;
if CbTodos.Checked then
begin
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
end
else
begin
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
end;
MyQuery1.Open;
GOSTEI 0
Claudia Nogueira
14/09/2012
Só mais uma coisa. Isso pode ser feito de muitas maneiras, eu só propus um complemento a um código que você já está utilizando.
GOSTEI 0
Joel Rodrigues
14/09/2012
Bom, apenas modificando um pouco o código da Claudiadnh, seguindo o meu raciocínio inicialmente proposto, a ideia era a seguinte:
Ou seja, o SELECT * FROM é feito independente do filtro. Caso o usuário deseje filtrar, aí sim adiciona-se a cláusula where.
Boa sorte.
MyQuery1.SQL.add('select nome, cpf');
MyQuery1.SQL.add('from aluno');
if (not CbTodos.Checked) then
begin
if comboAlunos.Text = '' then
begin
Application.MessageBox('Selecione um aluno!', 'Atenção', MB_OK+MB_ICONWARNING);
comboAlunos.SetFocus();
Exit;
end
MyQuery1.SQL.add('where nome =: parametro');
MyQuery1.Params[0].Value := Combobox1.Text;
end
MyQuery1.Open;
Ou seja, o SELECT * FROM é feito independente do filtro. Caso o usuário deseje filtrar, aí sim adiciona-se a cláusula where.
Boa sorte.
GOSTEI 0
Alisson Santos
14/09/2012
só lembrando que para carregar um combox deverá fazer um while para carrega-lo
GOSTEI 0