使用ADSL运行三层数据库,更新数据的怪问题,快疯了,jishiping等老大来帮我。
zjsyw 2005-11-01 11:05:06 软件使用SOCKTCONNECTION的方式连接应用服务器,使用电话+猫拨号上网的窄带方式上传和下载业务数据都很正常,使用LAN的宽带也很正常,但使用ADSL下载很正常,上传数据时,传几个就会停止不动了。到电信查了,上传带宽给我512K的。这时上网往FTP上传数据也很正常,程序如下:
bool __fastcall TDM::thread_sybase_f3_xspc(TDateTime ser_time1,AnsiString sql_string2,int pd)
{
int num_djls;
bool resu=true;
mainform->suiStatusBar1->Panels->Items[4]->Text="正在查询已结帐'"+ser_time1.FormatString("yyyy-mm-dd")+"'销售数据(xspc)";
AnsiString sql_string;
sql_string="select * from XSPC where CONVERT(char(10),F_DBRQ,112)='";
sql_string+=ser_time1.FormatString("yyyymmdd")+"' and "+sql_string2;
sql_string+=" order by F_DBRQ";
DM->thread_get_djpc_sybase->Close(); //在本地数据库查询数据
DM->thread_get_djpc_sybase->SQL->Clear();
DM->thread_get_djpc_sybase->SQL->Add(sql_string);
DM->thread_get_djpc_sybase->Open();
DM->thread_get_djpc_sybase->First();
mainform->suiStatusBar1->Panels->Items[4]->Text="正在上传已结帐'"+ser_time1.FormatString("yyyy-mm-dd")+"'销售数据(xspc)";
while(!DM->thread_get_djpc_sybase->Eof)
{
if(DM->quit_thread) //接到中断线程的通知
break;
try
{
DM->found_xspc->Close(); //found_xspc是ClientDataSet,查询远程数据库表是否已经存在该条数据
DM->found_xspc->Params->ParamValues["f_xspch"]=DM->thread_get_djpc_sybase->FieldByName("f_xspch")->AsString.Trim();
DM->found_xspc->Params->ParamValues["f_bmbh"]=DM->thread_get_djpc_sybase->FieldByName("f_bmbh")->AsString.Trim();
DM->found_xspc->Open();
num_djls=DM->found_xspc->Fields->Fields[0]->AsInteger;
}
catch(Exception &e)
{save_error(ExtractFileDir(Application->ExeName)+"\\error.txt",e.Message);break; }
if(num_djls==0) //如果远程服务器上没有该xspc记录
{
try
{
DM->PostXsPC_sybase->Close(); //PostXsPc_sybase是ClientDataSet,将记录插入远程数据库的表
DM->PostXsPC_sybase->Params->ParamValues["f_xspch"]=DM->thread_get_djpc_sybase->FieldByName("f_xspch")->AsString.Trim();
DM->PostXsPC_sybase->Params->ParamValues["f_bmbh"]=DM->thread_get_djpc_sybase->FieldByName("f_bmbh")->AsString.Trim();
DM->PostXsPC_sybase->Params->ParamValues["f_dbrq"]=DM->thread_get_djpc_sybase->FieldByName("f_dbrq")->AsDateTime.FormatString("yyyy/mm/dd");
DM->PostXsPC_sybase->Execute();
mainform->suiStatusBar1->Panels->Items[3]->Text="aaaaaaa"; //ADSL没响应就停在这里
}
catch(Exception &e)
{save_error(ExtractFileDir(Application->ExeName)+"\\error.txt",e.Message);break; }
}
DM->thread_get_djpc_sybase->Next();
}
return resu;
}