안냐세요?
델파이 초초보가 여러분들께 또다른 문의를 드리려고 해요.
귀찮으시더라도 꼭 좀 봐주시겠어요?
Table A,B 2개를 조인해서 select 구문을 DBGrid에 뿌려주고 있습니다.
종류는 paradox를 쓰고 있고요.
선택한 필드 중 onCalcFields가 2개 있는데
하나는 일련번호 붙이는 것이고
또 하나는 바로 전 합계 field에 타입별로 갯수*단가 결과값을 더하는
누계 비슷한 것이죠.
일련번호 붙이는 것은 다른 게시물 들 보고 해결했는데요, ^^;;
문제는 누계가 안되더군요. --;;
게시물 중 누계에 대한 것이 있기는 한데
그 경우는 데이터가 dsedit 또는 dsinsert 상태인 경우만 되고
저처럼 2개의 table을 조인한 경우는 안되는 것 같더군요.
그래서, 어느 이벤트에 코딩을 해야 할지도 모르겠고요.. ㅠ.ㅠ
혹시나 싶어 시험삼아 게시물대로 해보았더니
"Cannot modify a read-only dataset'이라는 에러가 뜹니다.
여러 고수님들 어떻게 해야
2개 table을 조인한 DBGrid에
누계 field를 보여줄 수 있을까요?
그리고, 어느 이벤트에 해야 하나요?
게시물을 참고해서 작성한 것은 다음과 같습니다.
1) Query1의 SQL 문
Select S.S_Num,S.S_Code,S.S_Date,S.S_Type,S.S_Amount,S.S_Remained,
S.S_Money as TMoney,G.G_Name,G.G_Price
from States.DB S, Goods.DB G
Where S.S_Code=G.G_Co
위에서 TMoney가 누계를 내어서 DBGrid에 보이려는 가상field(맞나요?)입니다.
2) coding 구문
procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
var
Sumvalue: integer;
OldBookmark: TBookMark;
begin
Query1.DisableControls;
OldBookmark := Query1.GetBookmark;
if Query1.State in [dsinsert,dsedit] then Query1.Post;
Query1.Prior;
Sumvalue := Query1.Fields[6].AsInteger; //여기서는 first data의 TMoney
repeat
if Query1.EOF then break;
Query1.Edit;
Query1.FieldByName('TMoney').AsInteger := Sumvalue +
Query1.Fields[8].AsInteger*Query1.Fields[4].AsInteger;
Sumvalue := Query1.FieldByName('TMoney').AsInteger;
Query1.post;
Query1.Next;
until Query1.EOF;
Query1.GotoBookmark(oldbookmark);
Query1.FreeBookmark(oldbookmark);
end;