用存储过程插入记录,为什么插入的汉字到数据库里都少了一半(8个字只有4个字进数据库)

Daviescai 2004-03-22 05:00:44
用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;
...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2004-03-22
  • 打赏
  • 举报
回复
要理解这个原因得先理解DELPHI和数据库的存储编码方式 。在BORLAND设计中,其编
码用的是ANSI STRING方式,而大多数的数据库厂商都采用的是UNICODE编码方式,这也是
为适应INTERNET发展的需要。而ADO是MS 发展出来的,DELPHI在调用ADO时,只是对其进行
简单的包装,内核还是用MS的那一套,所以在使用ADO时就存在着数据转换问题,尤其是对
非ASCII字符来说。所以要解决你的问题,可以在应用程序服务器的DataSetProvider的
Before事件中进行如下处理
procedure TAppLoginServer_new.DSPQueryBeforeExecute(Sender: TObject;
var OwnerData: OleVariant);
begin
with ADOQuery do begin
Parameters.ParamByName('@t3').Size := Length(Parameters.ParamByName('@t3').value)+1;
end;
end;
经过这样处理后,就不会有问题了。


算法应用:2024年算法牛顿-拉夫逊算法(NRBO)无人机路径规划研究(Matlab代码实现)内容概要:本文介绍了2024年基于牛顿-拉夫逊优化算法(NRBO)在无人机路径规划中的研究与应用,重点探讨了该算法在复杂环境下的路径搜索能力与优化性能,并通过Matlab代码实现仿真验证。研究涵盖了算法原理、路径规划模型构建、约束条件处理及与其他智能优化算法的对比分析,旨在提升无人机在三维空间中的自主导航效率与安全性。文中还提及相关智能优化算法在多领域如调度、电力系统、通信、信号处理等方面的应用,展示了其广泛的科研价值和技术潜力。; 适合人群:具备一定算法基础和Matlab编程能力,从事智能优化、无人机控制、自动化或相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于无人机三维路径规划,解决复杂地形与动态障碍物下的最优路径搜索问题;②为智能优化算法在自动化、机器人、航空航天等领域的科研与工程实践提供算法实现与仿真参考;③促进新型元启发式算法的改进与跨学科应用研究。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解NRBO算法的实现细节与参数调优策略,同时可参照文中列举的多种应用场景拓展研究思路,注重算法性能评估与实际工程需求的结合。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧