Q&A

  • Err메시지가 Too manu open database alias가 나오는건?
TTable의 DatabaseName에 여러 디렉토리에 나누어져있는 dbf파일의 경로를 직접넣

주는 방법으로 table을 open해서 하나의 테이블에 insert시키는데..



Too manu open database alias라는 에러메시지를 보이고 그 다음에 존재하는 dbf의

Open이 불가능합니다.



OS :WINNT, delphi5.0



참고로 제가 작성한 소스코드는..

procedure TFrmMapConvert.CollectPoint(rGetPath: string);

var

iFileHandle, iHandle: integer;

sLayerName, sGeoText: string;

TblDbf : TTable;

begin

iFileHandle := FileOpen(rGetPath, fmOpenRead);

if iFileHandle > 0 then

begin

FileRead(iFileHandle, FHeader, sizeof(FHeader));

TblDbf := TTable.Create(nil);

sLayerName := ExtractFileName(rGetPath);

sLayerName := ChangeFileExt(sLayerName, '.DBF');

******** 요부분에서 에러가 나옴니다 ********************** (변경된 dbf파일 갯수는 23717개이고 그 이후부는 위의 에러 메시지가 나옴)

TblDbf.DatabaseName := ExtractFilePath(rGetPath);

TblDbf.TableName := sLayerName;

TblDbf.Open;

TblDbf.First;

sLayerName := Copy(sLayerName, 0, Length(sLayerName) - 4);

iHandle := FileRead(iFileHandle, RHeader, sizeof(RHeader));

while iHandle <> 0 do

begin

sGeoText := TblDbf.FieldByName('GEO_TEXT').Asstring;

FileRead(iFileHandle, RPoint, sizeof(Rpoint));

if iHandle > 0 then

begin

try

with IBStoredProc1 do

begin

Prepare;

ParamByName('LayerName').AsString := sLayerName;

ParamByName('X').AsInteger := Round(RPoint.X);

ParamByName('Y').AsInteger := Round(RPoint.Y);

ParamByName('GEOTEXT').AsString := sGeoText;

ExecProc;

end;

except

end;

TblDbf.Next;

iHandle := FileRead(iFileHandle, RHeader, sizeof(RHeader));

end;

end;

TblDbf.Free;

end;

FileClose(iFileHandle);

end;



해결방법 좀 도와주시면 감사합니다..

0  COMMENTS