디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연결된 DBmemo 로 메모필드에 있는 데이타가 읽혀지는 속도가 너무 느려서 PC가 죽은것 처럼 가만히 있는 경우가 계속 생깁니다.
메모필드에 들어있는 내용은 고작 한글 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;
컴포넌트 자체에서 읽어오는 속도가 느린것인지..
하도 신기해서 디비 익스플로러에서 그 메모필드를 열어 읽어보았더니 어떤 컴포넌트인지 몰라도 번개같이 읽혀지더군요..
그렇게 만들수는 없는지요?
벌써 며칠째 입니다. 쉽게 생각했다가 허벌나게 고생하고 있습니다
고수분들의 조언을 기다리겠습니다.
실기 문제의 조건중에
입력화면 클리어후 출력하도록 하라는 것이 있거든요..
그래서
아니..우선..
입력폼과 출력폼이 있습니다...
입력폼에도 종료버튼이 있고..출력폼에도 종료버튼이 있습니다..
-----------------
입력폼의 출력버튼에..
frmout.visible:=true;
frmout.show;
이렇게 하고 실행해서 입력폼의 출력폼을 누르니..
입력화면이 없어진상태에서 출력폼만 남은 상태에서
종료를 누르니까..종료가 제대로 안되더라고요..
왜그런것인가요..
음음..
입력폼에서만 제대로 종료가 되더라고요..
사용하는것은 입력폼이 출력폼을 사용하고
출력폼은 입력폼을 사용하지 않습니다..
여기서
어떻게
출력폼에서도 제대로 종료를 시킬수 있나요..??
이번주 일요일날 시험을 본답니다..