회원등록 테이블에서 신규회원만을 선택
for문으로 돌면서 그 회원의 직판, 팀장, 등을 찾아서
수당을 지급할수 있게 만들려고 합니다.
구조는
for
qryTemp 직판계산
qryTemp 팀장계산
qryTemp 장려수당 계산
Next
qryCustomer 는 customer table에서 신규회원을 선택하고
for i:=0 to qryCustomer.recordCount -1로 루프를 합니다.
for문안에서 해당 회원의 직판, 팀장 등을 찾아서 수당을 올리고,
수당발생 자들을 정보를 정산테이블에 입력시켜줍니다.
먼저 정산테이블의 수당발생자의 정보가 있는지 없는지를 검사한 후
없다면
qryTemp.SQL.Text:='INSERT INTO ....';
있다면
qryTemp.SQL.Text:='UPDATE Account Set ....' ;
ExecSQL
이런식으로 직판, 팀장 ,추천인 등의 수당을 계산해 줄려고하는데
실행을 시켜주면 계산하는척하면서 정작 Account Table에는
전혀 값이 올라가있지 않습니다.
아예 아무값도 올라가지 않는다면 제 잘못을 찾기 가 쉬웠을텐데
처음 계산값인 직판수당은 또,계산이 되는군요
잠을못자서 그런지 제법 횡설수설을 해버린거같은데,
밑에 지저분해서 보여주긴 싫지만, 급한 마음에 소스일부를 올립니다.
잘못된 부분이나, 아님 좀더 쉽게 문제를 해결할수 있는 방법이있다면
한수 지도를 부탁드립니다.
고수님들의 많은 관심 부탁드립니다.
//Account db에 장려수당 정보가 있는지 없는지를 검사
if qryTemp1.Active then
qryTemp1.Close;
qryTemp1.SQL.Clear;
qryTemp1.SQL.Text:='Select * From account WHERE Num=:Num;
qryTemp1.ParamByName('Num').AsString:=qryPromote.FieldByName('Num').AsString;
qryTemp1.Open;
//장려가 존재할때만 실행
if qryPromote.RecordCount > 0 then
begin
qryTemp.SQL.Clear;
if qryTemp1.RecordCount = 0 then
begin
qryTemp.SQL.Text:='INSERT INTO account (Num, Name, ADate, PromotePay) VALUES (:Num, :Name, :ADate, :Pay)';
qryTemp.ParamByName('Num').AsString := qryPromote.FieldByName('Num').ASString;
qryTemp.ParamByName('Name').AsString := qryPromote.FieldByName('Name').AsString;
qryTemp.ParamByName('ADate').AsString := FormatDateTime('yyyy-mm-dd', dtpADate.Date);
qryTemp.ParamByName('Pay').AsInteger := PPay;
end else
begin
qryTemp.SQL.Text := 'UPDATE account SET PromotePay=PromotePay+:Pay WHERE Num=:Num';
qryTemp.ParamByName('Pay').AsInteger := PPay;
qryTemp.ParamByName('Num').AsString := qryPromote.FieldBYName('Num').AsString;
end;
qryTemp.ExecSQL;
end;
이렇게 해보심이 어떨런지...
with qryTEMP do begin
First;
while not EOF do begin
//반복처리부분
Next;
end;
end;
(급)부탁 wrote:
> 회원등록 테이블에서 신규회원만을 선택
> for문으로 돌면서 그 회원의 직판, 팀장, 등을 찾아서
> 수당을 지급할수 있게 만들려고 합니다.
>
> 구조는
> for
> qryTemp 직판계산
> qryTemp 팀장계산
> qryTemp 장려수당 계산
> Next
>
> qryCustomer 는 customer table에서 신규회원을 선택하고
> for i:=0 to qryCustomer.recordCount -1로 루프를 합니다.
> for문안에서 해당 회원의 직판, 팀장 등을 찾아서 수당을 올리고,
> 수당발생 자들을 정보를 정산테이블에 입력시켜줍니다.
>
> 먼저 정산테이블의 수당발생자의 정보가 있는지 없는지를 검사한 후
> 없다면
> qryTemp.SQL.Text:='INSERT INTO ....';
> 있다면
> qryTemp.SQL.Text:='UPDATE Account Set ....' ;
> ExecSQL
>
> 이런식으로 직판, 팀장 ,추천인 등의 수당을 계산해 줄려고하는데
> 실행을 시켜주면 계산하는척하면서 정작 Account Table에는
> 전혀 값이 올라가있지 않습니다.
> 아예 아무값도 올라가지 않는다면 제 잘못을 찾기 가 쉬웠을텐데
> 처음 계산값인 직판수당은 또,계산이 되는군요
>
> 잠을못자서 그런지 제법 횡설수설을 해버린거같은데,
> 밑에 지저분해서 보여주긴 싫지만, 급한 마음에 소스일부를 올립니다.
> 잘못된 부분이나, 아님 좀더 쉽게 문제를 해결할수 있는 방법이있다면
> 한수 지도를 부탁드립니다.
> 고수님들의 많은 관심 부탁드립니다.
>
>
> //Account db에 장려수당 정보가 있는지 없는지를 검사
> if qryTemp1.Active then
> qryTemp1.Close;
> qryTemp1.SQL.Clear;
> qryTemp1.SQL.Text:='Select * From account WHERE Num=:Num;
> qryTemp1.ParamByName('Num').AsString:=qryPromote.FieldByName('Num').AsString;
> qryTemp1.Open;
>
> //장려가 존재할때만 실행
> if qryPromote.RecordCount > 0 then
> begin
> qryTemp.SQL.Clear;
> if qryTemp1.RecordCount = 0 then
> begin
> qryTemp.SQL.Text:='INSERT INTO account (Num, Name, ADate, PromotePay) VALUES (:Num, :Name, :ADate, :Pay)';
> qryTemp.ParamByName('Num').AsString := qryPromote.FieldByName('Num').ASString;
> qryTemp.ParamByName('Name').AsString := qryPromote.FieldByName('Name').AsString;
> qryTemp.ParamByName('ADate').AsString := FormatDateTime('yyyy-mm-dd', dtpADate.Date);
> qryTemp.ParamByName('Pay').AsInteger := PPay;
>
> end else
> begin
> qryTemp.SQL.Text := 'UPDATE account SET PromotePay=PromotePay+:Pay WHERE Num=:Num';
> qryTemp.ParamByName('Pay').AsInteger := PPay;
> qryTemp.ParamByName('Num').AsString := qryPromote.FieldBYName('Num').AsString;
> end;
> qryTemp.ExecSQL;
> end;