Fórum Erro Delphi Argument out of range #620546

26/09/2023

0

Meus prezados,
Tenho uma função de listar os dados da tabela no DBGrid , mas quando clico no botão, aparece a mensagem " Argument out of range". Alguém pode me ajudar?
Segue o código abaixo:
procedure TPageCadastroPessoas.btnPesquisarClick(Sender: TObject);
var
lGrid : TDBGrid;
FDatasource : TDataSource;
begin
PnlPrincipal.ActiveCard := cardPesquisa;
FDatasource := TDataSource.Create(nil);
FController.Pessoa.Build.ListarTodos;
try
FController.Pessoa.Build.DataSource(FDatasource).ListarTodos;
if FDatasource.DataSet.IsEmpty then
begin
ShowMessage(''''Não existem dados a serem visualizados '''');
Exit;
end;
FDatasource.DataSet.First;

DBGrid1.Columns.Clear;
DBGrid1.Columns.Add;
FDatasource.DataSet.First;

while not FDatasource.DataSet.Eof do

begin
DBGrid1.Columns[0].FieldName := FDatasource.DataSet.FieldByName
(''''ID'''').AsString;
DBGrid1.Columns[1].FieldName := FDatasource.DataSet.FieldByName
(''''TIPOCADASTRO'''').AsString;
DBGrid1.Columns[2].FieldName := FDatasource.DataSet.FieldByName
(''''NOME'''').AsString;
DBGrid1.Columns[3].FieldName := FDatasource.DataSet.FieldByName
(''''DATANASCREG'''').AsString;
DBGrid1.Columns[4].FieldName := FDatasource.DataSet.FieldByName
(''''CPFCNPJ'''').AsString;
DBGrid1.Columns[8].FieldName := FDatasource.DataSet.FieldByName
(''''TELEFONE'''').AsString;
DBGrid1.Columns[5].FieldName := FDatasource.DataSet.FieldByName
(''''CIDADE'''').AsString;
DBGrid1.Columns[6].FieldName := FDatasource.DataSet.FieldByName
(''''BAIRRO_DISTRITO'''').AsString;
DBGrid1.Columns[7].FieldName := FDatasource.DataSet.FieldByName
(''''ESTADO'''').AsString;
DBGrid1.Columns[9].FieldName := FDatasource.DataSet.FieldByName
(''''EMAIL'''').AsString;
DBGrid1.Columns[10].FieldName := FDatasource.DataSet.FieldByName
(''''ATIVO'''').AsString;
DBGrid1.Columns[11].FieldName := FDatasource.DataSet.FieldByName
(''''DATAINICIO'''').AsString;
DBGrid1.Columns[12].FieldName := FDatasource.DataSet.FieldByName
(''''DATAFIM'''').AsString;
FDatasource.DataSet.Next;
end;
finally
FDatasource.DisposeOf;
end;

end;
Agradeço a ajuda.
Mauricio Bomfim

Mauricio Bomfim

Responder

Posts

26/09/2023

Arthur Heinrich

Você está atribuindo o conteúdo de uma coluna à propriedade FieldName?

DBGrid1.Columns[0].FieldName := FDatasource.DataSet.FieldByName(''''ID'''').AsString;

É possível isto esteja errado e exista alguma limitação para o nome de uma coluna. Ao atribuir o valor de uma coluna String do DataSource para o FieldName, pode estar violando este tamanho máximo.
Responder

Gostei + 0

27/09/2023

Mauricio Bomfim

Você está atribuindo o conteúdo de uma coluna à propriedade FieldName?

DBGrid1.Columns[0].FieldName := FDatasource.DataSet.FieldByName(''''ID'''').AsString;

É possível isto esteja errado e exista alguma limitação para o nome de uma coluna. Ao atribuir o valor de uma coluna String do DataSource para o FieldName, pode estar violando este tamanho máximo.


Pode me dizer o que devo usar para substitui o FiledName?
Responder

Gostei + 0

27/09/2023

Arthur Heinrich

Aparentemente, tudo o que você precisa fazer é indicar para o DBGrid, a origem dos dados (DataSource). A partir disso, ele identificará sozinho a lista de colunas, o datatype de cada uma e carregará os dados.

DBGrid1.DataSource := FDatasource;
Responder

Gostei + 0

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

Aceitar