Q&A

  • Midas에서 Insert를 하고자 하는데요..TT
안녕하세요..?



Midas에서 서버의 타입라이브러리에 function을 정의하구, 클라이언트에서



AppServer 인터페이스를 통해 이 함수를 호출, Insert할 데이터를 인자로 해서



Insert를 하는 방법하고, DataSetProvider의 DataRequest event를 통해서



Insert하는 방법을 알고자 하는데 계속 에러만 생깁니다. 정말



뭐가 잘못되었는지 모르겠습니다. 책에도 Insert에 관한 것은 거의 나와있지를



않네요.



고수님들의 지도 부탁드립니다.



1.DataRequest 를 사용했을 때







procedure TForm1.Insertbtn1Click(Sender: TObject);

var

r : variant;

begin

r := vararraycreate([1, 3], varvariant);

r[1] := edit7.Text;

r[2] := edit8.text;

r[3] := edit9.text;



DM1.ClientDataSet1.Data := DM1.ClientDataSet1.DataRequest(r);

DM1.ClientDataSet1.Close;

DM1.ClientDataSet1.Open;

end;







function TServerLocal.DataSetProvider1DataRequest(Sender: TObject;

Input: OleVariant): OleVariant;

begin

with (sender as tdatasetprovider) do begin

with (dataset as tquery) do begin

Close;

Query1.SQL.Clear;

SQL.Add('insert into LocalMember(Localid, Localpwd, Localname)');

sql.add('values(:Localid, :Localpwd, :Localname)');

ParamByName('Localid').Asstring := Input[1];

ParamByName('LocalPwd').AsString := Input[2];

ParamByName('LocalName').AsString := Input[3];

execsql;

end;

result := Data;

end;

end;



error message : 'Error creating cursor handle.' 이고 단, 테이블에

데이터는 들어갔습니다.



2. Type library에 함수를 등록했을 때



서버측에 정의된 함수는 거의 동일하지만 리턴값이 없는 프로시저를

사용했습니다. 동일한 에러가 납니다.



꼭 좀 갈켜주세요...



그럼....구벅. 읽어주셔서 감사합니다..



1  COMMENTS
  • Profile
    서철기 2001.05.30 22:44


    >

    >

    > function TServerLocal.DataSetProvider1DataRequest(Sender: TObject;

    > Input: OleVariant): OleVariant;

    > begin

    > with (sender as tdatasetprovider) do begin

    > with (dataset as tquery) do begin

    > Close;

    > Query1.SQL.Clear;

    > SQL.Add('insert into LocalMember(Localid, Localpwd, Localname)');

    > sql.add('values(:Localid, :Localpwd, :Localname)');

    > ParamByName('Localid').Asstring := Input[1];

    > ParamByName('LocalPwd').AsString := Input[2];

    > ParamByName('LocalName').AsString := Input[3];

    > execsql;

    > end;



    result := Data;

    //이 부분이 문제일 것 같은데요...

    execsql 문은 Insert 구문을 던지고.. 쿼리가 오픈되는 것이 아니니까..

    돌려 줄 데이타가 없을 것이구..

    그게 아니면.. 요렇게 해 보세요..

    Result := (Sender as TDataSetProvider).Data;



    저도. .이것 저것. 초보라 잘 몰라염..