출력할때..
오름차순으로 하려고 하는데요..
출력폼에 이렇게 소스를 썼거든요..
그런데 에러가 나요.
====================
procedure Tfrmoutput.FormCreate(Sender: TObject);
var
s:string;
len:integer;
begin
s:=Extractfilepath(application.exename);
len:=length(s);
len:=len-1;
setlength(s,len);
query1.databasename:=s;
query1.close;
query1.SQL.Clear;
query1.sql.add('select *');
query1.sql.add('from "test1.db"');
query1.sql.add('order by 사원번호 asc;');
query1.open
end;
========================================
==>에러
"query1:cannot perform this operation on an open dataset"
========================================
무엇이 틀린 것인가요..
데이타소스의 데이타셋은 query1로 했거든요..
그리고 query1의 속성은
active는 true
requestlive 도 true
sql에 select * from "test1.db"
이렇게 했는데
뭐가 잘못된 것인가요...
메모필드에 들어있는 내용은 고작 한글 2~3페이지 입니다.
그런데도 어떤 데이타는 아예 읽어오지도 못하는 군요. 그리고 메모컴포넌트는
memo1.lines.text := query1.FieldByName('Contents').asstring;
memo1.lines.strings[0] := query1.FieldByName('Contents').asstring;
이렇게 해도 다운되는거 같은 현상은 마찬가지 였고,
스트림을 이용해서 읽어보아도 마찬가지로 로딩되는 속도가 엄청 느립니다. T.T 아래처럼 사용했습니다.
Stream := TBlobStream.Create(query1.FieldByName('Contents') as TBlobField, bmRead);
try
Size := Stream.Seek(0, 2);
Stream.Seek(0, 0);
Inc(Size);
GetMem(Buffer, Size);
try
FillChar(Buffer^, Size, #0);
Stream.Read(Buffer^, Size);
Memo1.SetTextBuf(Buffer);
finally
FreeMem(Buffer, Size);
end;
finally
Stream.Free;
end;
컴포넌트 자체에서 읽어오는 속도가 느린것인지..
하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..
그렇게 만들수는 없는지요?
벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다
고수분들의 조언을 기다리겠습니다.