请大家帮忙,trim时遇到的问题,不胜感激~~~~~~~~~~~ 对数据,trim()之后,insert到数据库,发现空格还是没有过滤掉(空格已经确认不是“全角空格”),不知是为什么?是数据库字段格式不正确,还是什么原因? 后,程序运行过程中,字符串显示:'12320%20%20%20%20%20%',原本应该是:'123' 请大家帮忙~~~ 不甚感激~~~~~~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 确定你的字符串是什么确定数据库字段的类型VarChar 字符串的问题,数据字段用varchar就可以了.你把代码贴出来. 应该不是Trim的问题,可能是你的一些数据库的设置的问题,20%应该不是空格吧,呵呵 理论上Trim()不会有问题在insert处设断点,查看SQL的具体语句不就一目了然吗代码贴出来看看 代码没什么就是上库里面insert数据程序我跟了trim以后,显示数据符合要求,空格没了但是到表里面看,就多了好多空格~我想是字段设置不正确,原来是nvarchar类型估计问题就在这里 trim以后,显示数据符合要求,空格没了---------这就应该是保存数据的时候出现的毛病了,Trim应该没事的... begin edit; fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring))); showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格 post;end; 那么这个数据就应该post到表中了吧,可是回到表中,一看长了一大截~~~~ 是不是你的字段类型用的CHAR型? 请问varchar & nvarchar有什么区别? nvarchar:可变长度 Unicode 字符数据varchar:可变长度且非 Unicode 的字符数据 <<gzmhero,你好虽说,nvarchar的字节存储大小是所输入字符个数的两倍,但不会存储的是‘123 ’(后面是空格)这样子的把?基础不好,请指教~不胜感激~~~ 不是trim的问题吧,你在trim之前对字符串进行了url编码是么?空格转换成20%,trim不掉的,和数据库也没关系 虽说,nvarchar的字节存储大小是所输入字符个数的两倍,但不会存储的是‘123 ’(后面是空格)这样子的把?基础不好,请指教~不胜感激~~~ begin showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//先看看show出来的数据是什么样子的? edit; fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring))); showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格 post;end; comerliang,你好show出来的是这:‘123 ’;带很多空格, 搞不清楚了,你试试sunmingdong() 的思路吧 看情况好象是post的问题,没有post成功吧,你试试这样:edit;fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)))+'testtttt';post;看post后的数据后面是否出现了testtttt,如果没有就说明没有post成功。 procedure TForm1.Button1Click(Sender: TObject);begin ADOTable1.First; Showmessage(inttostr(length(ADOTable1.Fields[4].AsString)));end;procedure TForm1.Button2Click(Sender: TObject);begin with ADOTable1 do begin First; Edit; FieldByName('brokerNo').AsString := trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring))); post; end;end;brokerNo字段的类型是nvarchar,初始的值是:"123 "点Button1,再点Button2,再点Button1showmessage()的结果第一次是17第二次是3 comerliang,你好单独照你的,作了一个,没问题,正确但是我想不明白,begin edit; fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring))); showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格,为什么没post上去呢?? post;end; begin前的with xxx可能是你的xxx在上下文中有其它的引用了吧不知道这么说你能不能看明白 Delphi中dll共享应用程序中的数据库连接问题 做一个可以调透明度的画笔 跪求 发送EMAIL 的原码或例子,谢谢!!! 如何访问父窗体中的元素 richedit 格式 字体 颜色 很急的问题(在线) 带上、下加减按钮的edit控件如何实现? [统计]大家做软件(例如进销存、物资管理)时录入单、打印时,都用什么控件啊? 哪里有 关于报表打印 的书籍可下 *******请各位大虾帮一下忙,为什么我用query写sql语句,用like没有反映?******** 怎么在adodataset中填入定制数据? 请教,将'.jpg'格式的文件转换为'.pdf'格式的,体积是变大还是变小?
确定数据库字段的类型VarChar
在insert处设断点,查看SQL的具体语句不就一目了然吗
代码贴出来看看
就是上库里面insert数据程序我跟了
trim以后,显示数据符合要求,空格没了但是到表里面看,就多了好多空格
~
我想是字段设置不正确,原来是nvarchar类型估计问题就在这里
---------
这就应该是保存数据的时候出现的毛病了,Trim应该没事的...
edit;
fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格
post;
end;
可是回到表中,一看长了一大截~~~~
varchar & nvarchar有什么区别?
varchar:可变长度且非 Unicode 的字符数据
虽说,nvarchar的字节存储大小是所输入字符个数的两倍,但不会存储的是‘123 ’(后面是空格)这样子的把?
基础不好,请指教~
不胜感激~~~
基础不好,请指教~
不胜感激~~~
showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//先看看show出来的数据是什么样子的?
edit;
fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格
post;
end;
edit;
fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)))+'testtttt';
post;看post后的数据后面是否出现了testtttt,如果没有就说明没有post成功。
begin
ADOTable1.First;
Showmessage(inttostr(length(ADOTable1.Fields[4].AsString)));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
with ADOTable1 do
begin
First;
Edit;
FieldByName('brokerNo').AsString := trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
post;
end;
end;brokerNo字段的类型是nvarchar,初始的值是:"123 "
点Button1,再点Button2,再点Button1
showmessage()的结果
第一次是17
第二次是3
单独照你的,作了一个,没问题,正确但是我想不明白,begin
edit;
fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格,为什么没post上去呢??
post;
end;
可能是你的xxx在上下文中有其它的引用了吧不知道这么说你能不能看明白