用存储过程插入记录,为什么插入的汉字到数据库里都少了一半(8个字只有4个字进数据库)
用midas做的三层。字母插入到数据库正常,可是汉字却会少了一半。例如输入8个进入数据库的只有4个,输入六个进入数据库的只有3个。
存储过程用查询分析器测试过,输入正常。而且转做两层,插入汉字也正常。但是三层就是少一半的汉字。是哪里类型不对吗?大家有遇到过这样的问题吗?这两天急着解决这个问题。大哥门帮帮忙。(我初步怀疑是.asstring的问题,可是不知道解决的方法).还有同样是三层,如果不用存储过程用dbedit利clientdataset的applyupdate插入汉字正常。
procedure Tfrmprecnt.Button1Click(Sender: TObject);
begin
try
Datamodule1.PreCntD.Close;
DataModule1.PreCntD.Params.ParamByName('@YS_DEBH').AsString:=dhbh.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_XMMC').AsString:=xmbh.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_SL').AsFloat:=StrToFloat(sl.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DW').AsString:=dw.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_ZCF').AsFloat:=StrToFloat(djzc.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_GZ').AsFloat:=StrToFloat(djgz.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_JXF').AsFloat:=StrToFloat(djjx.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_JXF').AsFloat:=StrToFloat(hjzc.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_GZ').AsFloat:=StrToFloat(hjgz.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_JXF').AsFloat:=StrToFloat(hjjx.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_LB').AsString:=lb.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_Date_N').AsInteger:=StrToInt(n.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_Date_Y').AsInteger:=StrToInt(y.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_Date_R').AsInteger:=StrToInt(r.Text);
DataModule1.PreCntD.Execute;
DataModule1.PreCntDlook.Close;
DataMoDule1.PreCntDlook.Open;
DataModule1.PreCntDlook.Last;
dhbh.Clear;
xmbh.Clear;
sl.Clear;
dw.Clear;
djzc.Clear;
djgz.Clear;
djjx.Clear;
hjzc.Clear;
hjgz.Clear;
hjjx.Clear;
except
on EConvertError do showmessage('数量价格等请输入数字');
end;
end;
存储过程用查询分析器测试过,输入正常。而且转做两层,插入汉字也正常。但是三层就是少一半的汉字。是哪里类型不对吗?大家有遇到过这样的问题吗?这两天急着解决这个问题。大哥门帮帮忙。(我初步怀疑是.asstring的问题,可是不知道解决的方法).还有同样是三层,如果不用存储过程用dbedit利clientdataset的applyupdate插入汉字正常。
procedure Tfrmprecnt.Button1Click(Sender: TObject);
begin
try
Datamodule1.PreCntD.Close;
DataModule1.PreCntD.Params.ParamByName('@YS_DEBH').AsString:=dhbh.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_XMMC').AsString:=xmbh.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_SL').AsFloat:=StrToFloat(sl.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DW').AsString:=dw.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_ZCF').AsFloat:=StrToFloat(djzc.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_GZ').AsFloat:=StrToFloat(djgz.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_DJ_JXF').AsFloat:=StrToFloat(djjx.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_JXF').AsFloat:=StrToFloat(hjzc.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_GZ').AsFloat:=StrToFloat(hjgz.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_HJ_JXF').AsFloat:=StrToFloat(hjjx.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_LB').AsString:=lb.Text;
DataModule1.PreCntD.Params.ParamByName('@YS_Date_N').AsInteger:=StrToInt(n.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_Date_Y').AsInteger:=StrToInt(y.Text);
DataModule1.PreCntD.Params.ParamByName('@YS_Date_R').AsInteger:=StrToInt(r.Text);
DataModule1.PreCntD.Execute;
DataModule1.PreCntDlook.Close;
DataMoDule1.PreCntDlook.Open;
DataModule1.PreCntDlook.Last;
dhbh.Clear;
xmbh.Clear;
sl.Clear;
dw.Clear;
djzc.Clear;
djgz.Clear;
djjx.Clear;
hjzc.Clear;
hjgz.Clear;
hjjx.Clear;
except
on EConvertError do showmessage('数量价格等请输入数字');
end;
end;
...全文
相关推荐
使用存储过程实现循环插入100条记录
本节主要介绍了使用存储过程实现循环插入100条记录的具体实现,需要的朋友可以参考下
SQLServer用存储过程实现插入更新数据示例
实现 1)有相同的数据,直接返回(返回值:0); 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。 【创建存储过程】 Create proc Insert_Update @Id varchar(20), @Name varchar(20), @Telephone varchar(20), @Address varchar(20), @Job varchar(20), @returnValue int output as declare @tmpName varchar(20), @tmpTelephone v
数据仓库日期维度表创建存储过程
该代码是关于创建数据仓库日期维度表的存储过程
常用汉字,大概几千个字吧,一行一个字,导入数据库挺方便的
常用汉字,大概几千个字吧,一行一个字,导入数据库挺方便的
android中SQLite数据库中用insert同时插入多条记录的方法和效率比较
android中SQLite数据库中用insert同时插入多条记录的方法和效率比较


数据库相关
