Estou tentando fazer um Form de Pesquisa, utilizando arrays.
Fiz da seguinte forma, mas não consigo definir os dados do array.
Sempre dá erro na declaração do array.
procedure TF_Pesquisa.FormShow(Sender: TObject); // Para definir os dados do DBGrid.
var
aCampos : array [ 1..2, 1..3 ] of String ;
// Campo 1 = Nome do campo da Tabela a ser pesquisado
// Campo 2 = Título no DBGrid
// Campo 3 = Largura do campo do DBGrid
begin
if DONDE.Caption = 'Cad_Clientes' then begin
aCampos := [ [ 'COD_CLIE', 'Cód.', '70' ], [ 'NOME', 'Cliente', '420' ] ] ;
for i := 1 to 2 do begin
DBGrid1.Columns.Add ;
DBGrid1.Columns[i-1].FieldName := aCampos [ i, 1 ] ;
DBGrid1.Columns[i-1].Title.Caption := aCampos [ i, 2 ] ;
DBGrid1.Columns[i-1].Width := StrToInt ( aCampos [ i, 3 ] ) ;
end;
end ;
if DONDE.Caption = 'Cad_Fornecedores' then begin
aCampos := [ [ 'COD_FORN', 'Cód.', '70' ], [ 'RAZAO', 'Fornecedor', '420' ] ] ;
for i := 1 to 2 do begin
DBGrid1.Columns.Add ;
DBGrid1.Columns[i-1].FieldName := aCampos [ i, 1 ] ;
DBGrid1.Columns[i-1].Title.Caption := aCampos [ i, 2 ] ;
DBGrid1.Columns[i-1].Width := StrToInt ( aCampos [ i, 3 ] ) ;
end;
end ;
end ;
procedure TF_Pesquisa.Ed_PesqExit(Sender: TObject); // Ed_Pesq = tEdit - palavra a ser localizada
begin
Query1.Close ;
Query1.SQL.Clear ;
if DONDE.Caption = 'Cad_Clientes' then begin
Query1.SQL.Add ( 'Select * from Cad_Clientes' ) ;
Query1.SQL.Add ( 'Where ( NOME like "%' + Ed_Pesq.Text + '%" ) or ( RAZAO like "%' + Ed_Pesq.Text + '%" ) ' ) ;
Query1.SQL.Add ( 'Order by NOME' );
end;
if DONDE.Caption = 'Cad_Fornecedores' then begin
Query1.SQL.Add ( 'Select * from Cad_Fornecedores' ) ;
Query1.SQL.Add ( 'Where ( NOME like "%' + Ed_Pesq.Text + '%" ) or ( RAZAO like "%' + Ed_Pesq.Text + '%" ) ' ) ;
Query1.SQL.Add ( 'Order by NOME' );
end;
Query1.Open ;
end ;
Pergunta
Bettega
Estou tentando fazer um Form de Pesquisa, utilizando arrays.
Fiz da seguinte forma, mas não consigo definir os dados do array.
Sempre dá erro na declaração do array.
procedure TF_Pesquisa.FormShow(Sender: TObject); // Para definir os dados do DBGrid.
var
aCampos : array [ 1..2, 1..3 ] of String ;
// Campo 1 = Nome do campo da Tabela a ser pesquisado
// Campo 2 = Título no DBGrid
// Campo 3 = Largura do campo do DBGrid
begin
if DONDE.Caption = 'Cad_Clientes' then begin
aCampos := [ [ 'COD_CLIE', 'Cód.', '70' ], [ 'NOME', 'Cliente', '420' ] ] ;
for i := 1 to 2 do begin
DBGrid1.Columns.Add ;
DBGrid1.Columns[i-1].FieldName := aCampos [ i, 1 ] ;
DBGrid1.Columns[i-1].Title.Caption := aCampos [ i, 2 ] ;
DBGrid1.Columns[i-1].Width := StrToInt ( aCampos [ i, 3 ] ) ;
end;
end ;
if DONDE.Caption = 'Cad_Fornecedores' then begin
aCampos := [ [ 'COD_FORN', 'Cód.', '70' ], [ 'RAZAO', 'Fornecedor', '420' ] ] ;
for i := 1 to 2 do begin
DBGrid1.Columns.Add ;
DBGrid1.Columns[i-1].FieldName := aCampos [ i, 1 ] ;
DBGrid1.Columns[i-1].Title.Caption := aCampos [ i, 2 ] ;
DBGrid1.Columns[i-1].Width := StrToInt ( aCampos [ i, 3 ] ) ;
end;
end ;
end ;
procedure TF_Pesquisa.Ed_PesqExit(Sender: TObject); // Ed_Pesq = tEdit - palavra a ser localizada
begin
Query1.Close ;
Query1.SQL.Clear ;
if DONDE.Caption = 'Cad_Clientes' then begin
Query1.SQL.Add ( 'Select * from Cad_Clientes' ) ;
Query1.SQL.Add ( 'Where ( NOME like "%' + Ed_Pesq.Text + '%" ) or ( RAZAO like "%' + Ed_Pesq.Text + '%" ) ' ) ;
Query1.SQL.Add ( 'Order by NOME' );
end;
if DONDE.Caption = 'Cad_Fornecedores' then begin
Query1.SQL.Add ( 'Select * from Cad_Fornecedores' ) ;
Query1.SQL.Add ( 'Where ( NOME like "%' + Ed_Pesq.Text + '%" ) or ( RAZAO like "%' + Ed_Pesq.Text + '%" ) ' ) ;
Query1.SQL.Add ( 'Order by NOME' );
end;
Query1.Open ;
end ;
A pesquisa está funcionando perfeitamente.
O problema está na definição do array.
Obrigado,
Bettega.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.