delphi 数据库提取浮点型数据的问题

wuaizhonghua 2008-06-08 08:04:58
我的数据库中的数据是单精度固定小数点后三位小数的 但是我提取出来转换成文本格式的时候,在txt文件里面 小数点后面就是11位了请问这个问题如何解决 我的程序如下 请指点一下
procedure TForm2.Button3Click(Sender: TObject);
var
strlist1:tstringlist;
str:string;
i:integer;
begin
str:='';
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('select * from ygprint where 井号='''+edit2.text+''' order by 归位深度 asc');
open;
(adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00';
first;
if savedialog1.Execute then
begin
strlist1:=tstringlist.Create;
str:=fields[4].FieldName;
for i:=5 to adoquery2.Fields.Count-1 do
str:=str+' '+fields[i].FieldName;
strlist1.Add(str);
while not eof do
begin
str:='';
str:=fieldbyname('归位深度').AsString+' '+ fieldbyname('油质波长均值').AsString +' '+fieldbyname('油质发光面积').AsString +' '+fieldbyname('油质荧光亮度').AsString+' '+ fieldbyname('胶质波长均值').AsString +' '+fieldbyname('胶质发光面积').AsString +' '+fieldbyname('胶质荧光亮度').AsString+' '+ fieldbyname('沥青质波长均值').AsString +' '+fieldbyname('沥青质发光面积').AsString +' '+fieldbyname('沥青质荧光亮度').AsString+' '+ fieldbyname('水波长均值').AsString +' '+fieldbyname('水发光面积').AsString +' '+fieldbyname('水荧光亮度').AsString+' '+ fieldbyname('色差').AsString +' '+fieldbyname('含油性评价指数').AsString ; //提取数据库中的信息

strlist1.Add(str);
next;
end;
strlist1.SaveToFile(savedialog1.FileName);

strlist1.Free;
end;
end;
end;
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GDTOPONE 2008-06-08
  • 打赏
  • 举报
回复
来一个完整的:

procedure TForm2.Button3Click(Sender: TObject);
var
strlist1:tstringlist;
str:string;
i:integer;
begin
str:='';
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('select * from ygprint where 井号='''+edit2.text+''' order by 归位深度 asc');
open;
(adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00';
first;
if savedialog1.Execute then
begin
strlist1:=tstringlist.Create;
str:=fields[4].FieldName;
for i:=5 to adoquery2.Fields.Count-1 do
str:=str+' '+fields[i].FieldName;
strlist1.Add(str);
while not eof do
begin
str:='';
str:=Gtow(fieldbyname('归位深度').AsString)+' '
+Gtow(fieldbyname('油质波长均值').AsString)+' '
+Gtow(fieldbyname('油质发光面积').AsString)+' '
+Gtow(fieldbyname('油质荧光亮度').AsString)+' '
+Gtow(fieldbyname('胶质波长均值').AsString)+' '
+Gtow(fieldbyname('胶质发光面积').AsString)+' '
+Gtow(fieldbyname('胶质荧光亮度').AsString)+' '
+Gtow(fieldbyname('沥青质波长均值').AsString)+' '
+Gtow(fieldbyname('沥青质发光面积').AsString)+' '
+Gtow(fieldbyname('沥青质荧光亮度').AsString)+' '
+Gtow(fieldbyname('水波长均值').AsString)+' '
+Gtow(fieldbyname('水发光面积').AsString)+' '
+Gtow(fieldbyname('水荧光亮度').AsString)+' '
+Gtow(fieldbyname('色差').AsString)+' '
+Gtow(fieldbyname('含油性评价指数').AsString); //提取数据库中的信息


strlist1.Add(str);
next;
end;
strlist1.SaveToFile(savedialog1.FileName);

strlist1.Free;
end;
end;
end;


wlxc 2008-06-08
  • 打赏
  • 举报
回复
连成字符串时可以格式化一下,如:Format('%.3f', [7.0033003])
GDTOPONE 2008-06-08
  • 打赏
  • 举报
回复
str:=Gtow(str);{--------------新加入了这句}此句DEL掉
GDTOPONE 2008-06-08
  • 打赏
  • 举报
回复
一时不小心处理错了修正以下的:

str:=Gtow(fieldbyname('归位深度').AsString)+' '+Gtow(fieldbyname('油质波长均值').AsString) +' '+Gtow(fieldbyname('油质发光面积').AsString) +' '+Gtow(fieldbyname('油质荧光亮度').AsString)+' '+Gtow(fieldbyname('胶质波长均值').AsString) +' '+Gtow(fieldbyname('胶质发光面积').AsString) +' '+Gtow(fieldbyname('胶质荧光亮度').AsString)+' '+Gtow(fieldbyname('沥青质波长均值').AsString) +' '+Gtow(fieldbyname('沥青质发光面积').AsString) +' '+Gtow(fieldbyname('沥青质荧亮度').AsString)+' '+Gtow(fieldbyname('水波长均值').AsString)+' '+Gtow(fieldbyname('水发光面积').AsString) +' '+Gtow(fieldbyname('水荧光亮度').AsString)+' '+Gtow(fieldbyname('色差').AsString) +' '+Gtow(fieldbyname('含油性评价指数').AsString) ; //提取数据库中的信息
GDTOPONE 2008-06-08
  • 打赏
  • 举报
回复
其实有点不明白,只是任想像看能否为你解决问题:
1.相关函数:

function Gtow(s:string):string;
begin
{例如:S=12.00000000000,返回12.000}
Result:=copy(s,1,pos('.',s)-1)+copy(s,pos('.',s),4);
end;


2.处理:

procedure TForm2.Button3Click(Sender: TObject);
var
strlist1:tstringlist;
str:string;
i:integer;
begin
str:='';
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('select * from ygprint where 井号='''+edit2.text+''' order by 归位深度 asc');
open;
(adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000';
(adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00';
(adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00';
first;
if savedialog1.Execute then
begin
strlist1:=tstringlist.Create;
str:=fields[4].FieldName;
for i:=5 to adoquery2.Fields.Count-1 do
str:=str+' '+fields[i].FieldName;
strlist1.Add(str);
while not eof do
begin
str:='';
str:=fieldbyname('归位深度').AsString+' '+ fieldbyname('油质波长均值').AsString +' '+fieldbyname('油质发光面积').AsString +' '+fieldbyname('油质荧光亮度').AsString+' '+ fieldbyname('胶质波长均值').AsString +' '+fieldbyname('胶质发光面积').AsString +' '+fieldbyname('胶质荧光亮度').AsString+' '+ fieldbyname('沥青质波长均值').AsString +' '+fieldbyname('沥青质发光面积').AsString +' '+fieldbyname('沥青质荧光亮度').AsString+' '+ fieldbyname('水波长均值').AsString +' '+fieldbyname('水发光面积').AsString +' '+fieldbyname('水荧光亮度').AsString+' '+ fieldbyname('色差').AsString +' '+fieldbyname('含油性评价指数').AsString ; //提取数据库中的信息

str:=Gtow(str);{--------------新加入了这句}

strlist1.Add(str);
next;
end;
strlist1.SaveToFile(savedialog1.FileName);

strlist1.Free;
end;
end;
end;

2,497

社区成员

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

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