如何在INTERBASE中建立含有数字字段的TABLE(100分)

  • 主题发起人 主题发起人 zhshf
  • 开始时间 开始时间
Z

zhshf

Unregistered / Unconfirmed
GUEST, unregistred user!
我的SQL语句如下:
create table pdist
(n integer not null check(n>0),
a numeric(4,3) not null check(a between 0 and 1),
chkvalue numeric(5,4) not null check(chkvalue between 0 and 1),
primary key (n,a));
建立之后,从SQL Explorer看这个表,
FIELDNAME TYPE LENGTH SCALE
N INTEGER 4 0
A SMALLINT 2 3
CHKVALUE INTEGER 4 4

请高手指点!
急!急!急!
 
上面的SQL没有什么不对啊?
 
InterBase 对于 numeric 和 Decimal 根据其长度分别以 Integer 和
Double Pricision 表示,这是为了加快InterBase处理得速度,我根据
经验你并不必管它内部具体如何实现的,详情可看Langule Reference
 
Interbase 内部的存储其实如下:
CREATE TABLE PDIST (
N INTEGER NOT NULL,
A NUMERIC(4,3) NOT NULL,
CHKVALUE NUMERIC(9,4) NOT NULL,
PRIMARY KEY (N,A)
);
 
我试过,你的SQL没有错,
也可以把 NUMERIC 用DOUBLE PRECISION代替,
INTEGER没什么不好。
 
问题实在让我头疼!
如上建立的TABLE,我在DELPHI里放一个DATASOURCE1,TABLE1,DBGRID1,
把它们连接起来,运行之后,在DGBRID1里,
<Font Color=#FF0000>字段A和CHKVALUE根本输不进小数点!</font>
天哪,这还了得!
虽然可以用SQL语句INSERT记录(如:insert into pdist (n,a,chkvalue)
values(1,0.05,0.995),但我在DELPHI用语句访问数据时字段A和
CHKVALUE全是0!
我用INTERBASE查看数据,发现数据无误,和我INSERT的一样,说明是BDE的问题,
而且我注意到,在BDE里INTERBASE类型的数据库的VERSION写的是4,我用ODBC
建了一个INTERBASE的数据库,数据也没有问题,我想可能是BDE对INTERBASE的
驱动程序有问题。
请高手帮忙!
 
尝试在BDE Administrator中把别名设置的选项
Enable BCD 设置为 TRUE
这样 BDE在数据转换时会精确转换。
 
nose的说法在我的d4 上为何不正确呢?
我的网格控件依然只有整数!没有小数点!
 
后退
顶部