各位大侠帮帮忙(300)出声都有分(300分)

  • 主题发起人 主题发起人 angleli1981
  • 开始时间 开始时间
A

angleli1981

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠帮帮忙(300)出声都有分
1.我用Access做数据库,使用了一个float字段,设置了它的小数位为2位,在Access查看并没问题,
但在Delphi7中使用 select num from numtable group by num 时,看到的float是非常多位的,有
没办法控制小数的显示位数啊
2.variant单元中的所有函数的详解
3.用Variant实现以下功能:
 
procedure Tform1.buttonclick(Sender:ToObject);
var
A:Variant;
begin
A:=VarArrayCreate([0,4],VarVariant);
A[0]:=1;
A[1]:=12.3;
A[2]:='Hello MY Friends'
A[3]:=VarArrayCreate([0,2],VarVariant);//不用VarArrayof的原因是数据要动态改变,但这句也是错误的地方。
  A[3][0]:=12;
A[3][1]:=34.7;
A[3][2]:='Thank You';
memo1.lines.add(A[0]);
memo1.lines.add(A[3][1]);
end;

请问错在那里

4.如何把DataSet的数据快速地保存在Variant中?
 
1:用FormatFloat格式化以下
其余GZ
 
为什么不用decimal或numeric
很方便设置小数位
 
num 是 float 型的吗?
 
adoq2.FieldByName('num').Value:=formatfloat('#,##0.00',strtofloat(cbb4.Text));
在post之前是num是两位小数的,但Post后就显示了好多位,我想这个和float在计算中的
储存方式有关,但我想的是在DBGrid1的方格中显示Float为两位小数,我想用Sql应该可以做到的
adoq2.post;
adoq2.UpdateBatch(arall);
 
是啊
你有没遇过这样的问题啊
 
Access好像没有这样的类型
 
1.在query或者table中設置字段的displayformat屬性(我正在用的方法).
2.不知道;
3.不知道.
4.不知道﹐不懂.
 
设置显示格式为#.0.00就ok了!
 
如果是Float,使用select 语句后就会出现小数位,但用Access就不没有问题,我想是只是显示问题
,但我不会用Select改变显示格式。
如果可以的话请,列出代码。
 
ADO好像没有displayformat

我在线等你们
 
1、不知access支不支持convert命令,如果支持的话在SQL语句查寻的时候就转换到
ADO也是支持displayformat的,(#.##)在字段编辑器中设定
2、varclear()过程清除varinnt变量并将VTYPE哉的值设为VAREMPTY
VARCOPY() 将SOURCE复制到DEST
VAECAST()将一个varinnt转换成指定的类型并存储在另一个varinnt变量中
VARTYPE()返回指定varinnt的VARXX类型代码
varisempty不用说了
。。。。。。还有的都比较简单
3、你只定义VARIANT型的多维数据(否则只能用vararraryof)
4、没什么好方法,好像只能遍历

 
Access 中只有单精度和双精度的概念.
无法直接控制小数位数的,把小数设为两位,你输入一个 1.234567 试试!


以下能编译通过!!!
procedure TForm1.Button1Click(Sender: TObject);
type
TA=Array of variant;
var
A:Variant;
begin
A:=VarArrayCreate([0,4],VarVariant);
A[0]:=1;
A[1]:=12.3;
A[2]:='Hello MY Friends';
A[3]:=VarArrayCreate([0,2],VarVariant);
TA(A[3])[0]:=12;
TA(A[3])[1]:=34.7;
TA(A[3])[2]:='Thank You';
memo1.lines.add(A[0]);
memo1.lines.add(TA(A[3])[0]);
end;
 
以下可以实现!!!!!!
procedure TForm1.Button1Click(Sender: TObject);
type
TA=Array of variant;
var
A:Variant;
b:Array of Variant;
begin
A:=VarArrayCreate([0,4],VarVariant);
A[0]:=1;
A[1]:=12.3;
A[2]:='Hello MY Friends';

setLength(b,3);
B[0]:=12;
B[1]:='XXX';
B[2]:=12.1212;
A[3]:=VarArrayof(b);
SetLength(b,0);

memo1.lines.add(A[0]);
memo1.lines.add(A[3][0]);
end;
 
To jsxjd:
你的第一个程序虽然可以通过编译,但是Memo1无法正确显示结果,说明程序有问题
很可能是由于你强行转换数据造成的。第二个OK

有其它的想法吗?
 
对于第4个问题,我有个想法就是把DataSet的数据保存到流中,然后再把流转换成Variant

不知各位看法如何
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
814
import
I
后退
顶部