아래처럼 쿼리 해서 나온 ID에 TXT확장자를 붙여서 지정한 디렉토리 참조해서 화일찾고,생성날자를 참조 하려고,
아래처럼 작성 했는데, 뭐가 잘 못 되었는지 INDEX BOUNDS(1) 에러가 납니다. 초보라 이것저것 한참 생각해도 모르겠고..
고수님들 부탁 좀 드립니다.
쿼리하면 아래와 같은 결과를 보여 줍니다.
ID
CA25-001
CA25-002
CA25-003
CA25-004
CA25-005
qry := TStringList.Create();
qry.add('select distinct id from DB ');
AdoQry.Close;
adoQry.SQL := qry;
adoQry.Open ;
If (not adoQry.IsEmpty) then
begin
// columns ...
lstReport.Columns.Clear;
For idx := 0 To adoQry.FieldCount-1 do
begin
with lstReport.Columns.Add do
begin
Caption := adoQry.Fields[idx].FieldName;
end;
end;
lstReport.Columns[0].Width:=70;
lstReport.Columns[1].Width:=75;
end;
lstReport.Clear;
While (not adoQry.Eof) do
begin
tmp := lstReport.Items.Add;
tmp.Caption := adoQry.Fields[0].AsString;
dir1 := 'C:\'; //디렉토리 지정
dir2 := 'C:\Program files'; //디렉토리 지정
For idx := 1 to adoQry.FieldCount-1 do
fullFilePath := FileSearch(adoQry.Fields[idx].AsString+'.TXT', dir1);
if fullFilePath = '' THEN
fullFilePath := FileSearch(adoQry.Fields[idx].AsString+'.TXT', dir2);
if fullFilePath = ''
then
tmp.SubItems.Add(fullFilePath+' not found')//화일이 없을때
else
tmp.SubItems.Add(fullFilePath+DateTimeToStr(FileDateToDateTime(FileAge(fullFilePath))));
adoQry.Next;
end;
FreeAndNil(qry);
finally
adoQry.Close;
adoQry.SQL := qry;
아래와 같이 고치세요...
adoQry.SQL.Text := qry.Text;
다 끝나고 난후에 qry객체 해제시키구요...
의심가는 코드들은 아래코드이네요... 브레이크포인트걸고 디버깅해보세요...
Caption := adoQry.Fields[idx].FieldName;
lstReport.Columns[1].Width:=75;
fullFilePath := FileSearch(adoQry.Fields[idx].AsString+'.TXT', dir1);
fullFilePath := FileSearch(adoQry.Fields[idx].AsString+'.TXT', dir2);