델파이 이넘 넘 어렵네요~~
환경은 Delphi7.0 + Zeros + firebird-1.5 + Interbase
Zeros Access -> TZStored Procedure 를 사용했구여,,,,
채번하는 프로시져 인데,,, 해당필드에서 값을 가져오고 +1 하는거져~~~
버튼을 누르면 아래 가 실행됩니다.
qrspIncKeyNo.ParamByName('INCKEYNAME').AsString:= 'PARTNO';
qrspIncKeyNo.ExecProc;
iPartNo:= qrspIncKeyNo.ParamByName('RTN_INCKEYNO').AsInteger;
근데 문제는 이넘이 처음 버튼 누르면 잘되는데,, 또 누르면 에러가 난다는 겁니다.
환장할 노릇,,, 메세지는 파라메터 미스매치 뭐 어쩌구 저쩌구 뜨는데,,,
왜 그런지,, 쩝,,,
참고)
ALTER PROCEDURE "GET_INCKEYNO"
(
"INCKEYNAME" VARCHAR(10)
)
RETURNS
(
"RTN_INCKEYNO" INTEGER
)
AS
BEGIN
SELECT IncKeyNo FROM SM_INCKEY WHERE IncKeyName = :INCKEYNAME INTO RTN_INCKEYNO;
UPDATE SM_INCKEY SET IncKeyNo = IncKeyNo + 1 WHERE IncKeyName = :INCKEYNAME;
END
예전에 오라클에서 스토드 사용할때 많이 써보고 요즘은 잘 쓰지 않아서 어찌했는지 잊었었는데....
참고로 해서 함 해보세요. 아무래도 Query의 Close등과 같은 처리를 하지 않아서 그런거 같은데요.
if qrspIncKeyNo.Prepared = False then
qrspIncKeyNo.Prepare;
qrspIncKeyNo.ParamByName('INCKEYNAME').AsString:= 'PARTNO';
qrspIncKeyNo.ExecProc;
iPartNo:= qrspIncKeyNo.ParamByName('RTN_INCKEYNO').AsInteger;
qrspIncKeyNo.UnPrepare;
버튼 이벤트 쪽을 위의 코드로 함 바꾸어서 해 보심이...아무래도 한번 사용하시구 나서 UnPrepare를 해주지 않으셔서 그런거 같네요. 그럼^^