Q&A

  • AdoStoreProcedure Parameter동적생성
Delphi 5.0
Sql Sever 2000

도움을 요청합니다. 혹시 아시는 분이 계시면 상세 하게 도움 말씀을
주시면 감사하겠습니다.

지금 개발 환경은 MTS Data Module를 기본으로  
ADOConnction, ADOStoreProcedure, DataSetProvider를 사용하여 프로그램을 작성하고 있는 중입니다.

function TMTSDBMD.ProviderDataRequest(Sender: TObject;
  Input: OleVariant): OleVariant;
var
  Connection : oleVariant;
  S_Ip : string;
begin

   AdoStore.Connection        := AdoConn;
   AdoStore.ProcedureName := 'SC_Erdm_Qry';

   AdoStore.Parameters.AddParameter;
   AdoStore.Parameters[1].DataType := FtString;
   AdoStore.Parameters[1].Direction:= pdInput;
   AdoStore.Parameters[1].Value := '001001';

   AdoStore.Parameters.AddParameter;
   AdoStore.Parameters[2].DataType := ftString;
   AdoStore.Parameters[2].Direction:= pdInput;
   AdoStore.Parameters[2].Value := '';

   AdoStore.Parameters.AddParameter;
   AdoStore.Parameters[3].DataType := ftString;
   AdoStore.Parameters[3].Direction:= pdInput;
   AdoStore.Parameters[3].Value := '';

   AdoStore.ExecProc;
end;

Client Pgm에서 DCOMConnection, ClientDataSet로 Store Procedure 명과 Parameter를 CommandText로 전달합니다.

그런데 실행하면 StoreProcedure Name이 정의 않되었다고 하고
강제적으로 Sp명을 Set시키 후 실행하면 Parameter가 없는 것으로 어러가
발생합니다.
이것을 Test하는데 3일을 헤메고 있읍니다.
혹시 잘아시는 고수님이 계시면 설명과 더불어 다른 방법으로
Client -> Mts -> StoreProcedure -> DB 연결을 유지적으로 할수 있는 방법을 가려쳐 주십시요. 이 은혜 잊지 않겠습니다.


1  COMMENTS
  • Profile
    신석기 2002.04.25 06:03
    어려운 작업을 진행중인것 같습니다. ^^
    Delphi5, MTS 라, Client DCOMconnection사용한신다구요...

    일단 델파이의 툴지원이 명확하지 않은데 문제가 있습니다.
    그래서 파라미터를 생성하시는 방법을 선택하게 되는데
    이것두 한번 실행할때와 여러번 실행할때 발생하는 에러가 여러가지
    종류가 발생합니다.

    그러므로 접속할때마다
    다음과 같은 코딩을 추가하시면 error없이 실행이 가능할것 같습니다.
    ----------------------------------------
      try
         if StoProcedure.Active then StoProcedure.Close;
         StoProcedure.Data := null;
         StoProcedure.Params.ParamByName  
         ('IN_SAUPCO').AsString  := Edit1.text;

         .................... 중략

         StoProcedure.Execute;
      except
         StoProcedure.Params.Clear;
         StoProcedure.Params.CreateParam
         (ftString,'IN_SAUPCO',ptInput).AsString   := Edit1.text;
         StoProcedure.Params.CreateParam
         (ftString,'IN_WORKYM',ptInput).AsString   := MaskEdit1.Text;

         .................... 중략

         StoProcedure.Execute;
      end;
    ----------------------------------------