Select num DBGrid

28/02/2003

0

Olá pra todos!

Estou fazendo uma seleção múltipla de um DBGrid para outro. O problema é que a minha seleção está trazendo todas as linhas do DBGrid, ao invés de pegar só as que foram selecionadas e estão sendo passados por parâmetro.

[i:bb0e05aee0][b:bb0e05aee0]SQL.Add(´Select * from Area where 1=1´ );
for i := 1 to tot do
SQL.Add(´or cod_area = ´ + vListaCodArea[i]);
SQL.Add(´order by cod_area´);
Open;[/b:bb0e05aee0][/i:bb0e05aee0]
vListaCodArea é um vetor de String e o parâmetro é passado relativo ao campo cod_area, que é do tipo varcahar2.

Já me explicaram que o 1 = 1 faz com que todos os registros da query sejam aceitos, mas sem isso está dando erro de coluna inválida ou número inválido... Os parâmetros e os campos estão corretos, inclusive se eu testo no Oracle ou no próprio Database Explore do Delphi, o código é executado numa boa.

Com a indicação que me deram, essa parte do código ficaria assim, dando erro:

[b:bb0e05aee0]SQL.Add(´Select * from Area where ´ );
SQL.Add(´ cod_area = ´ + vListaCodArea[1]);
for i := 2 to tot do
SQL.Add(´or cod_area = ´ + vListaCodArea[i]);
SQL.Add(´order by cod_area´);
Open;[/b:bb0e05aee0]
Grata pelo apoio.

AnaB.


Anonymous

Anonymous

Responder

Posts

28/02/2003

Anonymous

[b:19911971b8]SQL.Add(´Select * from Area where ´ );
SQL.Add(´ cod_area = ´ + vListaCodArea[1]);
for i := 2 to tot do
SQL.Add(´or cod_area = ´ + vListaCodArea[i]);
SQL.Add(´order by cod_area´);
Open; [/b:19911971b8]

Como o tipo de dados de cod_area é varchar(2), tente isso:
SQL.Add(´Select * from Area where ´ );
SQL.Add(´ cod_area = ´ + [b:19911971b8]QuotEdStr(vListaCodArea[1]))[/b:19911971b8];
for i := 2 to tot do
SQL.Add(´or cod_area = ´ + [b:19911971b8]QuotEdStr(vListaCodArea[i]))[/b:19911971b8];
SQL.Add(´order by cod_area´);
Open;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar