잘아시는분 도움좀 부탁드립니다.
재고계산을 하기위해 아래와 같은 문장을 구성했는데 UPDATE문에서 변수선언에러가
발생합니다. 변수는 어떻게 선언해야 하는가요 ?
procedure TEBProdF.gaesanClick(Sender: TObject);
var m_selgal,m_selbot,m_seldr,m_seltr,m_slmgal,m_slmbot,m_slmdr : integer;
begin
while not ebdm.EBProdT.Eof do
begin
ebdm.ebqry.close;
ebdm.ebqry.sql.clear;
ebdm.ebqry.sql.add('update ebprodt set selgal = m_selgal + elgal - lelgal,');
ebdm.ebqry.sql.add(' selbot = m_selbot + elbot - lelbot,');
ebdm.ebqry.sql.add(' seldr = m_seldr + eldr - leldr,');
ebdm.ebqry.sql.add(' seltr = m_seltr + eltr - leltr,');
ebdm.ebqry.sql.add(' slmgal = m_slmgal + lmgal - llmgal,');
ebdm.ebqry.sql.add(' slmbot = m_slmbot + lmbot - llmbot,');
ebdm.ebqry.sql.add(' slmdr = m_slmdr + lmdr - llmdr');
ebdm.ebqry.ExecSQL;
m_selgal := ebdm.EBProdT['selgal'];
m_selbot := ebdm.EBProdT['selbot'];
m_seldr := ebdm.EBProdT['seldr'];
m_seltr := ebdm.EBProdT['seltr'];
m_slmgal := ebdm.EBProdT['slmgal'];
m_slmbot := ebdm.EBProdT['slmbot'];
m_slmdr := ebdm.EBProdT['slmdr'];
ebdm.EBProdT.Next;
end
end;
안녕하세요~
변수선언을 통해서 넘겨도 되지만
바로 파라미터로 넘기시면 더 편하지않을까 생각되네여..
어차피 파라미터나 프로시저로 넘겨주는값도 변수값이지만요..
용도별로 프로시저를 쪼갰는데
한번 확인해보세요..
그리고 elgal, lelgal등은 선언된곳이 없는데
전역변수인듯 싶어서 계산식에 넣었습니다..
설마 필드명들은 아니겠죠?
예외처리부분은 시간상 넣지않았구요..
아참..변수로 넘겨주는 값은 원래 업데이트전에 넣어줘야 되는것 같아
몇가지부분은 임으로 고쳐봤습니다..
컴파일시 에러는 나지않지만 테이블 업데이트작업은
환경상 하지못해서..혹 에러가나면 다시 글 올려주세요..
흠냐..정말 간만에 답변하는데 에러나면 안되는데^^
그럼 즐거운하루되세요~
procedure TEBProdF.gaesanClick(Sender: TObject);
// Update SQL
const
ebprodt_update = 'update ebprodt set selgal = :pselgal, ' +
' selbot = :pselbot, ' +
' seldr = :pseldr, ' +
' seltr = :pseltr, ' +
' slmgal = :pslmgal, ' +
' slmbot = :pslmbot, ' +
' slmdr = :pslmdr ' ;
// ebprodt update procedure
procedure Ebprodt_up(selgal, selbot, seldr, seltr, slmgal, slmbot, slmdr : integer);
begin
with ebdm.ebqry do
begin
if Active then Close;
SQL.Text := ebprodt_update;
ParamByName('pselgal').AsInteger := selgal + elgal - lelgal;
ParamByName('pselbot').AsInteger := selbot + elbot - lelbot;
ParamByName('pseldr' ).AsInteger := seldr + eldr - leldr;
ParamByName('pseltr' ).AsInteger := seltr + eltr - leltr;
ParamByName('pselgal').AsInteger := selgal + elgal - lelgal;
ParamByName('pslmbot').AsInteger := slmbot + lmbot - llmbot;
ParamByName('pslmdr ').AsInteger := slmdr + lmdr - llmdr;
ExecSQL;
end;
end;
begin
with ebdm.EBProdT do
begin
while not Eof do
begin
// 업데이트 프로시져 실행
Ebprodt_up(ebdm.EBProdT['selgal'],
ebdm.EBProdT['selbot'],
ebdm.EBProdT['seldr' ],
ebdm.EBProdT['seltr' ],
ebdm.EBProdT['slmgal'],
ebdm.EBProdT['slmbot'],
ebdm.EBProdT['slmdr' ]);
Next;
end;
end
end;
장성호 wrote:
> 잘아시는분 도움좀 부탁드립니다.
>
> 재고계산을 하기위해 아래와 같은 문장을 구성했는데 UPDATE문에서 변수선언에러가
> 발생합니다. 변수는 어떻게 선언해야 하는가요 ?
>
> procedure TEBProdF.gaesanClick(Sender: TObject);
> var m_selgal,m_selbot,m_seldr,m_seltr,m_slmgal,m_slmbot,m_slmdr : integer;
> begin
>
> while not ebdm.EBProdT.Eof do
> begin
> ebdm.ebqry.close;
> ebdm.ebqry.sql.clear;
> ebdm.ebqry.sql.add('update ebprodt set selgal = m_selgal + elgal - lelgal,');
> ebdm.ebqry.sql.add(' selbot = m_selbot + elbot - lelbot,');
> ebdm.ebqry.sql.add(' seldr = m_seldr + eldr - leldr,');
> ebdm.ebqry.sql.add(' seltr = m_seltr + eltr - leltr,');
> ebdm.ebqry.sql.add(' slmgal = m_slmgal + lmgal - llmgal,');
> ebdm.ebqry.sql.add(' slmbot = m_slmbot + lmbot - llmbot,');
> ebdm.ebqry.sql.add(' slmdr = m_slmdr + lmdr - llmdr');
> ebdm.ebqry.ExecSQL;
> m_selgal := ebdm.EBProdT['selgal'];
> m_selbot := ebdm.EBProdT['selbot'];
> m_seldr := ebdm.EBProdT['seldr'];
> m_seltr := ebdm.EBProdT['seltr'];
> m_slmgal := ebdm.EBProdT['slmgal'];
> m_slmbot := ebdm.EBProdT['slmbot'];
> m_slmdr := ebdm.EBProdT['slmdr'];
> ebdm.EBProdT.Next;
> end
> end;
>