利用Internet Express技术编写程序,CGI调用Remote Data Module中的方法不成功?
服务器:windows 2003 server+IIS
编程环境:windows xp2 + bcb6
我编写个CGI程序.为操作数据库建立Remote Data Module中的PostCircleAnt方法
/////////////////////////////////////////////////////////////////////////////
// TSrtsCGI::TSrtsCGI
/////////////////////////////////////////////////////////////////////////////
__fastcall TSrtsCGI::TSrtsCGI(TComponent* Owner) : TCRemoteDataModule(Owner)
{
}
STDMETHODIMP TSrtsCGIImpl::PostCircleAnt(BSTR INPUT, VARIANT* ret)
{
TStringList *TmpList = new TStringList;
try
{
TmpList-> Text = (AnsiString)INPUT;
SrtsCGI-> qryUpdateCircleAnt-> Close();
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> Clear();
SrtsCGI-> qryUpdateCircleAnt-> SQL-> Clear();
SrtsCGI-> qryUpdateCircleAnt-> SQL-> Add( " Use SRTS INSERT INTO 测试表(YG2KAV,YG3KAH, ");
SrtsCGI-> qryUpdateCircleAnt-> SQL-> Add( "YG3KAV,YG3KBV,YG7CAL,YG7CAR,YG7CBL,YG7CBR,签名,备注) ");
SrtsCGI-> qryUpdateCircleAnt-> SQL-> Add( "VALUES ( :YG2KAV,:YG3KAH,:YG3KAV,:YG3KBV,:YG7CAL,:YG7CAR,:YG7CBL,:YG7CBR,:签名,:备注) ");
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG2KAV ")-> Value =
TmpList-> Values[ "YG2KAV "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG3KAH ")-> Value =
TmpList-> Values[ "YG3KAH "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG3KAV ")-> Value =
TmpList-> Values[ "YG3KAV "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG3KBV ")-> Value =
TmpList-> Values[ "YG2KBV "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG7CAL ")-> Value =
TmpList-> Values[ "YG7CAL "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG7CAR ")-> Value =
TmpList-> Values[ "YG7CAR "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG7CBL ")-> Value =
TmpList-> Values[ "YG7CBL "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "YG7CBR ")-> Value =
TmpList-> Values[ "YG7CBR "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "签名 ")-> Value =
TmpList-> Values[ "签名 "];
SrtsCGI-> qryUpdateCircleAnt-> Parameters-> ParamByName( "备注 ")-> Value =
TmpList-> Values[ "备注 "];
try
{
SrtsCGI-> qryUpdateCircleAnt-> ExecSQL();
*ret = Variant( "写入成功 ");
}
catch(Exception &exception)
{
*ret = Variant( "写入失败 ");
}
}
__finally{
delete TmpList;
}
}
在CGI程序中,调用此方法.,
void __fastcall TWebModule1::WebModule1WebActionItem2Action(
TObject *Sender, TWebRequest *Request, TWebResponse *Response,
bool &Handled)
{
Variant INPUT,temp;
ISrtsCGIDisp ApSer;
INPUT = Request-> ContentFields-> Text;
tsc1-> Connected = true;
ApSer.Bind(tsc1-> GetServer());
temp = ApSer-> PostCircleAnt(INPUT);//执行到这步显示超时.(1)
tsc1-> Connected = false;
Response-> Content = temp;
}
经过在rmd中加测试语句,发现(1)句没有调用PostCircleAnt方法?不知道是没有找到 还什么原因反正是不执行,希望各位高人点拨一二,谢谢了.
另外,这个程序在XP和SERVER上运行效果不一样,是否要在SERVE上配置什么?
[解决办法]
帮顶了
[解决办法]
没写过相关的程序,进来学习一下.