Problema com consulta parametrizada
22/05/2008
0
Bom Dia galera ,um bom feriado a todos!!!
Tenho uma instrução SQL asssim:
select * from MUSICA where upper(nome) like(:nome) or (artista) like (:Artista) or (Album) like(:Album) or (Estilo) like (:Estilo) order by codigo
coloquei um radiogruop com os seguintes itens:Nome,Artista,Album e Estilo.
no evento change do edit o seguinte código:
DM.cdsMusica.Close;
Edit1.SetFocus;
if RadioGroup1.ItemIndex = 0 then
DM.cdsMusica.Params[0].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 1 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[1].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 2 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[2].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 3 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[3].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
Se eu buscar por artista e o album ou o estilo tiver o mesmo começo de busca traz todos , só que eu queria só os do campo artista.
Alguém sabe resolver esse problema?
Desde já eu fico grato!!!!
Tenho uma instrução SQL asssim:
select * from MUSICA where upper(nome) like(:nome) or (artista) like (:Artista) or (Album) like(:Album) or (Estilo) like (:Estilo) order by codigo
coloquei um radiogruop com os seguintes itens:Nome,Artista,Album e Estilo.
no evento change do edit o seguinte código:
DM.cdsMusica.Close;
Edit1.SetFocus;
if RadioGroup1.ItemIndex = 0 then
DM.cdsMusica.Params[0].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 1 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[1].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 2 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[2].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
if RadioGroup1.ItemIndex = 3 then
DM.cdsMusica.Close;
DM.cdsMusica.Params[3].AsString:=UpperCase(Edit1.Text) + ´¬´;
DM.cdsMusica.Open;
Se eu buscar por artista e o album ou o estilo tiver o mesmo começo de busca traz todos , só que eu queria só os do campo artista.
Alguém sabe resolver esse problema?
Desde já eu fico grato!!!!
Lsksskyblu
Curtir tópico
+ 0
Responder
Posts
22/05/2008
Emerson Nascimento
tente assim:
se o ClientDataset não permitir a alteração da propriedade CommandText, vá até o DatasetProvider e, na propriedade Options, adicione o item poAllowCommandText.
procedure TForm1.Edit1Change(Sender: TObject); const acampos: array[0..3] of string = (´nome´, ´artista´, ´album´, ´estilo´); var instrucao: string; begin DM.cdsMusica.Close; DM.cdsMusica.CommandText := ´select * from MUSICA ´+ ´where upper(´+acampos[RadioGroup1.ItemIndex]+´) like :parametro ´; DM.cdsMusica.Params[0].AsString := UpperCase(Edit1.Text) + ´¬´; DM.cdsMusica.Open; end;
se o ClientDataset não permitir a alteração da propriedade CommandText, vá até o DatasetProvider e, na propriedade Options, adicione o item poAllowCommandText.
Responder
23/05/2008
Lsksskyblu
Cara Deeculpe-me pelo atrazo sua dica foi mais que boa, foi ótima.
Obrigado!!!
Obrigado!!!
Responder
Clique aqui para fazer login e interagir na Comunidade :)