안녕하십니까 Falco님
알려주신 대로 하니까 아래와 같은 error가 납니다..
[Project AAA.exe raised exeception class EIClientError with
message 'Cannot refresh row.
(No refresh query)'. Process stopped.
Use Step or Run to continue ]
코딩한 부분을 소개해 드리면요 아래와 같습니다.
timer가 돌면서 IBQueryA는 interbase DB 에 insert 시킵니다.
물론 timer가 insert 한 값들을 transaction compoent를 이용하여
확실하게 commit 했습니다.
그리고 조회 화면에서는 조회 버튼을 누르면 IBQueryB와 DB Grid를
이용하여 timer가 insert 시킨 값들을 보여 주어야 합니다. (이론적으로.)
하지만 보여지지 않습니다.
그리고 보여지는 경우는 프로그램을 재 실행시키면
insert 된 값들이 보여집니다.
procedure TARBSmsOnOffMain.SeSkinButton2Click(Sender: TObject);
begin
with IBQueryB do
begin
Try
Close;
Sql.Clear;
SQL.Text := SQL TEXT
Params[0].AsDate := 파라미터;
Params[1].AsDate := 파라미터;
if not Prepared then Prepare;
open;
Refresh; //추가 하였더니 error 가 발생합니다.
fetchall;
Label1.Caption := IntToStr(RecordCount);
Except
exit;
end;
end;
end;
박한수 올림
Falco 님이 쓰신 글 :
: 안녕하세요. 저도 Interbase 초보 입니다.
:
: 제 생각에는 쿼리B를 Refresh; 해 주면 되지 않을까 하는 생각이 드는데요. 한번 해 보시죠.
:
: 그리고, 실시간으로 데이터 반영을 원하시면 TIBEvent 쪽도 한번 알아 보시면 좋을것 같습니다.
:
: 저도 한번 써 봤는데, 꽤 쓸만하네요.
:
: 잘 안되시면 다시 질문을 올려주세요. 다른 고수님들께서 답을 해 주실겁니다.
:
: 박한수 님이 쓰신 글 :
: : 안녕하십니까..
: : 인터베이스를 사용하다가 어르신들의 강압(?)으로 오라클로 바꾸었다가
: : 속도 때문에 다시 인터베에스로 전환하였습니다.
: :
: : 한 번에 320만건씩 insert 하는 작업이 있는데요,
: : 필드는 1개 (신용불량자 번호) 이지만 320만건이라서 속도가 어마어마 하더군요.
: : 제가 테스트한 바로는
: :
: : CPU: 1.6G, MEM:256M 에서 (db는 local로 사용.)
: : interbase를 썻을 때 18분 정도 걸리지만 (ibexpress사용)
: : 오라클로 하면 5배는 더 걸리는 것 같습니다.
: :
: : 그런데 인터베이스가 문제가 있는 것 같은데요..
: :
: : 쿼리컴포넌트A (연결된 트랜젹션 컴포는트 이름은 TansactionA)를 이용하여 insert한 것을
: : 쿼리컴포넌트B (db grid와 함께 사용하려고,요건 transaction component 는 없음.)는
: : 전혀 인식을 못합니다.
: :
: : transactionA.committ를 해도 안되구요..
: : 단 프로그램을 다시 껏다 insert된 것이 쿼리컴포넌트 B에서 인식이되어
: : DB그리드에 표시가 되네요.
: : 물론 이번에도 새로 인서트 되는 것들은 보이지도 않구요.
: :
: : interbase를 제가 모르는 건지
: : 아니면 제가 interbase에 너무 기대를 많이 한건지..
: :
: : 고수님들의 조언 부탁드립니다.
: :
: : 박한수 올림
: :
|