to zfmich(): String不就是分成ShortString,AnsiString和WideString吗????
32位?没有吧。看看这个: Type Maximum length Memory required Used for ShortString 255 characters 2 to 256 bytes backward compatibility AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters WideString ~2^30 characters 4 bytes to 2GB Unicode characters; COM servers and interfaces
To zfmich(): 2^31是什么意思?不就是2的31次方吗??那还不是32位是什么???请楼上的大侠解释~~~~
to eshell(慢慢爬吧): We're trying, thanks....
to eshell(慢慢爬吧): blob size大小已经是32了,还要怎么改呢??请指教~~~~~~~
to zfmich(): 早就试过了,还加了{H+},但还是没有用呀,兄弟~~~~~~~~.
to eshell(慢慢爬吧): blob size大小单位是K对吧?那我把它改大试试,谢谢~~~~~~
我是说直接用ANSISTRING或WIDESTRING,我都可以,你为什么不可以?我也一样从数据库中读取TEXT类型字段。String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
to eshell(慢慢爬吧): 改成了64还是不行啊,还有什么更好的招数没有???
to zfmich(): 那你是怎么样取的呀,能不能给一小段源码呀??你上面说的那些在联机中我也参详过很多次了,谢谢~~~~~~
to zfmich(): 忘了问你,你从Text中读出来的数据块是否大于32K呀???
我不知道我说的是不是和你们指的一样。function GetOperCompanyPermit(sOperNo:string):AnsiString; //string ->AnsiString //modify by czf 0518 var sSql :string; begin //add by czf 0518 //判断是否已有Oper_Company_Permit字段 if not IsExistColumn('Operator','Oper_Company_Permit') then begin AddNewColumn('Operator','Oper_Company_Permit','text null'); //varchar ->text //0518 czf Result :=''; exit ; end; sSql :='select * from operator where oper_code ='''+ trim(sOperNo)+''''; OpenQuery(wagedata.query,sSql,false); if not wagedata.query.fieldbyname('Oper_Company_Permit').isnull then // wagedata.query.IsEmpty //modify by czf 0518 begin Result :=wagedata.query.fieldbyname('Oper_Company_Permit').asstring; end else begin Result :=''; //NULL->'' //modify by czf 0518 end; end;
text或者临时表!至于如何实现,对不起!希望有大虾能告诉你我!
在向数据表中写数据是用的ParmbyName有AsMemo属性
其允许用户向Text字段加长度小于2G的字串!
但问题是如何读出来,FeildByName('').asstring(.value)
能读出的字串长度最大为32k吗?如果是的话,有什么
办法能跨越这个局限。嗨,不知道算不算Delphi的Bug,
小民无知!
String不就是分成ShortString,AnsiString和WideString吗????
Type Maximum length Memory required Used for
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters
WideString ~2^30 characters 4 bytes to 2GB Unicode characters;
COM servers and interfaces
具体做法如下:
1,打开BDE管理程序,选择configuration页
2,点开drivers->Odbc,找到你所用的odbc驱动
3, 更改blob size大小,具体含义看帮助就行了。有的驱动可能没有这一项。祝你好运!
2^31是什么意思?不就是2的31次方吗??那还不是32位是什么???请楼上的大侠解释~~~~
We're trying, thanks....
blob size大小已经是32了,还要怎么改呢??请指教~~~~~~~
早就试过了,还加了{H+},但还是没有用呀,兄弟~~~~~~~~.
blob size大小单位是K对吧?那我把它改大试试,谢谢~~~~~~
改成了64还是不行啊,还有什么更好的招数没有???
那你是怎么样取的呀,能不能给一小段源码呀??你上面说的那些在联机中我也参详过很多次了,谢谢~~~~~~
忘了问你,你从Text中读出来的数据块是否大于32K呀???
var
sSql :string;
begin
//add by czf 0518 //判断是否已有Oper_Company_Permit字段
if not IsExistColumn('Operator','Oper_Company_Permit') then
begin
AddNewColumn('Operator','Oper_Company_Permit','text null'); //varchar ->text //0518 czf
Result :='';
exit ;
end; sSql :='select * from operator where oper_code ='''+ trim(sOperNo)+'''';
OpenQuery(wagedata.query,sSql,false); if not wagedata.query.fieldbyname('Oper_Company_Permit').isnull then // wagedata.query.IsEmpty //modify by czf 0518
begin
Result :=wagedata.query.fieldbyname('Oper_Company_Permit').asstring;
end
else
begin
Result :=''; //NULL->'' //modify by czf 0518
end;
end;
我再试试,Thanks...
不行啊,快救命啊~~~~~~~~
要显示可先用DBMemo控件显示看对不对。
好,我再试试,Thx....