客户端: dmRemoteSale.DCOMConn.AppServer.CreateTempCar(ship_no, strCurTikNo, Car_No,Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam,Tik_Num, demote_num, sell_win_cod, seller_cod); 服务器端:procedure TCoRemoteSale.CreateTempCar(var ship_no, CurTikNo, Car_No, Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam, Tik_Num, demote_num, sell_win_cod, seller_cod: OleVariant); var strSQL:string; temp:Integer; TICKET_PRICE,spec_car_rat:single; temp_car_cls_cod:string; //降档后的等级 begin temp := 0; repeat //创建临时表数据 //计算票价 strSQL :='select car_pric from t_ship_car_pric where ship_no='''+IntToStr(ship_no)+''' and car_cls_cod='''+car_cls_cod+''''; SQLDSTemp.Close; SQLDSTemp.CommandText := strSQL; SQLDSTemp.Open; //降档处理 if demote_num<> 0 then begin
end; if not SQLDSTemp.Eof then TICKET_PRICE := SQLDSTemp.fieldbyname('car_pric').AsFloat; strSQL:='Select spec_car_rat from t_ship_spec_car where ship_no='''+InTToStr(ship_no)+''' and spec_car_cod='''+Spec_Car_Cod+''''; SQLDSTemp.Close; SQLDSTemp.CommandText := strSQL; SQLDSTemp.Open; if not SQLDSTemp.Eof then spec_car_rat := SQLDSTemp.fieldbyname('spec_car_rat').AsFloat else spec_car_rat := 1; TICKET_PRICE := TICKET_PRICE*spec_car_rat; strSQL:='insert into t_ship_car_selected(SHIP_NO,TICKET_NO,CAR_NO,CAR_CLS_COD,SPEC_CAR_COD,SPEC_CAR_NAM,CARGO_KIND_COD,CARGO_KIND_NAM,DEMOTE_NUM,TICKET_PRICE,SELL_WIN_COD,SELLER_COD,SELL_TIM) VALUES('+ ''+IntToStr(ship_no)+','''+ CurTikNo+''','''+CAR_NO+''','''+CAR_CLS_COD+''','''+SPEC_CAR_COD+''','''+SPEC_CAR_NAM+''','''+CARGO_KIND_COD+''','''+CARGO_KIND_NAM+''','+IntToStr(DEMOTE_NUM)+','+FloatToStr(TICKET_PRICE)+','''+SELL_WIN_COD+''','''+SELLER_COD+''',sysdate)'; sqldsCreateTempCar.Close; sqldsCreateTempCar.CommandText := strSQL; sqldsCreateTempCar.ExecSQL(True); //票号增加1 CurTikNo := IncreaseTikNO(CurTikNo,1); temp := temp+1; until temp=Tik_Num; temp:=0; temp:=1; if temp then begin end; end;跟踪调试服务器端过程没有错误发现,返回执行客户端代码时出现错误,在Win98下提示“接线者无效”,2000下提示“内存被锁定”。不知道什么原因,请高手指教!~~谢谢~~!!
服务器后面的几句无用的代码是我随便加的,完整的应该是:procedure TCoRemoteSale.CreateTempCar(var ship_no, CurTikNo, Car_No, Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam, Tik_Num, demote_num, sell_win_cod, seller_cod: OleVariant); var strSQL:string; temp:Integer; TICKET_PRICE,spec_car_rat:single; temp_car_cls_cod:string; //降档后的等级 begin temp := 0; repeat //创建临时表数据 //计算票价 strSQL :='select car_pric from t_ship_car_pric where ship_no='''+IntToStr(ship_no)+''' and car_cls_cod='''+car_cls_cod+''''; SQLDSTemp.Close; SQLDSTemp.CommandText := strSQL; SQLDSTemp.Open; //降档处理 if demote_num<> 0 then begin
end; if not SQLDSTemp.Eof then TICKET_PRICE := SQLDSTemp.fieldbyname('car_pric').AsFloat; strSQL:='Select spec_car_rat from t_ship_spec_car where ship_no='''+InTToStr(ship_no)+''' and spec_car_cod='''+Spec_Car_Cod+''''; SQLDSTemp.Close; SQLDSTemp.CommandText := strSQL; SQLDSTemp.Open; if not SQLDSTemp.Eof then spec_car_rat := SQLDSTemp.fieldbyname('spec_car_rat').AsFloat else spec_car_rat := 1; TICKET_PRICE := TICKET_PRICE*spec_car_rat; strSQL:='insert into t_ship_car_selected(SHIP_NO,TICKET_NO,CAR_NO,CAR_CLS_COD,SPEC_CAR_COD,SPEC_CAR_NAM,CARGO_KIND_COD,CARGO_KIND_NAM,DEMOTE_NUM,TICKET_PRICE,SELL_WIN_COD,SELLER_COD,SELL_TIM) VALUES('+ ''+IntToStr(ship_no)+','''+ CurTikNo+''','''+CAR_NO+''','''+CAR_CLS_COD+''','''+SPEC_CAR_COD+''','''+SPEC_CAR_NAM+''','''+CARGO_KIND_COD+''','''+CARGO_KIND_NAM+''','+IntToStr(DEMOTE_NUM)+','+FloatToStr(TICKET_PRICE)+','''+SELL_WIN_COD+''','''+SELLER_COD+''',sysdate)'; sqldsCreateTempCar.Close; sqldsCreateTempCar.CommandText := strSQL; sqldsCreateTempCar.ExecSQL(True); //票号增加1 CurTikNo := IncreaseTikNO(CurTikNo,1); temp := temp+1; until temp=Tik_Num; //temp:=0; //temp:=1; //if temp then //begin //end; end;
dmRemoteSale.DCOMConn.AppServer.CreateTempCar(ship_no, strCurTikNo, Car_No,Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam,Tik_Num, demote_num, sell_win_cod, seller_cod);
服务器端:procedure TCoRemoteSale.CreateTempCar(var ship_no, CurTikNo, Car_No,
Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam,
Tik_Num, demote_num, sell_win_cod, seller_cod: OleVariant);
var
strSQL:string;
temp:Integer;
TICKET_PRICE,spec_car_rat:single;
temp_car_cls_cod:string; //降档后的等级
begin
temp := 0;
repeat
//创建临时表数据 //计算票价
strSQL :='select car_pric from t_ship_car_pric where ship_no='''+IntToStr(ship_no)+''' and car_cls_cod='''+car_cls_cod+'''';
SQLDSTemp.Close;
SQLDSTemp.CommandText := strSQL;
SQLDSTemp.Open; //降档处理
if demote_num<> 0 then
begin
end;
if not SQLDSTemp.Eof then
TICKET_PRICE := SQLDSTemp.fieldbyname('car_pric').AsFloat; strSQL:='Select spec_car_rat from t_ship_spec_car where ship_no='''+InTToStr(ship_no)+''' and spec_car_cod='''+Spec_Car_Cod+'''';
SQLDSTemp.Close;
SQLDSTemp.CommandText := strSQL;
SQLDSTemp.Open; if not SQLDSTemp.Eof then
spec_car_rat := SQLDSTemp.fieldbyname('spec_car_rat').AsFloat
else
spec_car_rat := 1; TICKET_PRICE := TICKET_PRICE*spec_car_rat; strSQL:='insert into t_ship_car_selected(SHIP_NO,TICKET_NO,CAR_NO,CAR_CLS_COD,SPEC_CAR_COD,SPEC_CAR_NAM,CARGO_KIND_COD,CARGO_KIND_NAM,DEMOTE_NUM,TICKET_PRICE,SELL_WIN_COD,SELLER_COD,SELL_TIM) VALUES('+
''+IntToStr(ship_no)+','''+ CurTikNo+''','''+CAR_NO+''','''+CAR_CLS_COD+''','''+SPEC_CAR_COD+''','''+SPEC_CAR_NAM+''','''+CARGO_KIND_COD+''','''+CARGO_KIND_NAM+''','+IntToStr(DEMOTE_NUM)+','+FloatToStr(TICKET_PRICE)+','''+SELL_WIN_COD+''','''+SELLER_COD+''',sysdate)';
sqldsCreateTempCar.Close;
sqldsCreateTempCar.CommandText := strSQL;
sqldsCreateTempCar.ExecSQL(True); //票号增加1
CurTikNo := IncreaseTikNO(CurTikNo,1);
temp := temp+1;
until temp=Tik_Num;
temp:=0;
temp:=1;
if temp then
begin
end;
end;跟踪调试服务器端过程没有错误发现,返回执行客户端代码时出现错误,在Win98下提示“接线者无效”,2000下提示“内存被锁定”。不知道什么原因,请高手指教!~~谢谢~~!!
Car_Cls_Cod, Spec_Car_Cod, Spec_Car_Nam, Cargo_Kind_Cod, Cargo_Kind_Nam,
Tik_Num, demote_num, sell_win_cod, seller_cod: OleVariant);
var
strSQL:string;
temp:Integer;
TICKET_PRICE,spec_car_rat:single;
temp_car_cls_cod:string; //降档后的等级
begin
temp := 0;
repeat
//创建临时表数据 //计算票价
strSQL :='select car_pric from t_ship_car_pric where ship_no='''+IntToStr(ship_no)+''' and car_cls_cod='''+car_cls_cod+'''';
SQLDSTemp.Close;
SQLDSTemp.CommandText := strSQL;
SQLDSTemp.Open; //降档处理
if demote_num<> 0 then
begin
end;
if not SQLDSTemp.Eof then
TICKET_PRICE := SQLDSTemp.fieldbyname('car_pric').AsFloat; strSQL:='Select spec_car_rat from t_ship_spec_car where ship_no='''+InTToStr(ship_no)+''' and spec_car_cod='''+Spec_Car_Cod+'''';
SQLDSTemp.Close;
SQLDSTemp.CommandText := strSQL;
SQLDSTemp.Open; if not SQLDSTemp.Eof then
spec_car_rat := SQLDSTemp.fieldbyname('spec_car_rat').AsFloat
else
spec_car_rat := 1; TICKET_PRICE := TICKET_PRICE*spec_car_rat; strSQL:='insert into t_ship_car_selected(SHIP_NO,TICKET_NO,CAR_NO,CAR_CLS_COD,SPEC_CAR_COD,SPEC_CAR_NAM,CARGO_KIND_COD,CARGO_KIND_NAM,DEMOTE_NUM,TICKET_PRICE,SELL_WIN_COD,SELLER_COD,SELL_TIM) VALUES('+
''+IntToStr(ship_no)+','''+ CurTikNo+''','''+CAR_NO+''','''+CAR_CLS_COD+''','''+SPEC_CAR_COD+''','''+SPEC_CAR_NAM+''','''+CARGO_KIND_COD+''','''+CARGO_KIND_NAM+''','+IntToStr(DEMOTE_NUM)+','+FloatToStr(TICKET_PRICE)+','''+SELL_WIN_COD+''','''+SELLER_COD+''',sysdate)';
sqldsCreateTempCar.Close;
sqldsCreateTempCar.CommandText := strSQL;
sqldsCreateTempCar.ExecSQL(True); //票号增加1
CurTikNo := IncreaseTikNO(CurTikNo,1);
temp := temp+1;
until temp=Tik_Num;
//temp:=0;
//temp:=1;
//if temp then
//begin
//end;
end;