程序运行怎样创建表(200分)

  • 主题发起人 主题发起人 细文
  • 开始时间 开始时间

细文

Unregistered / Unconfirmed
GUEST, unregistred user!
当程序运行时,怎样可以创建一个文件(*.DB 或*.DBF)且可以设置字段的属性。如:
创建文件名为 WAN 字段为 A,B,C,D。均为数值。
A最大值为100,最小值为0,B最大值为10,最小值为3,输入数值不符时,会出现提示框。
C默认值为50。
D的值等于A+B或A+C或B+C(可以设置为任意数值字段相加或减)。

不知各位能否帮我解决问题,谢谢!
 
create table wan
(a number(7,2)
constraint a1 check (a between 0 and 100),
b number(7,2)
constraint b1 check (a between 3 and 10),
c number(7,2)
default 50,
d number(7,2)
constraint d1 check (d=a+b));

上条SQL语句用于创建INFORMIX表可行,至于创建*.DB或*.DBF你试一下,我没试过。
 
对,利用query组件的execsql方法
 

如果能不用动态去做就尽量不用。

这样对于字段D的计算就变得非常这简单了。

设D为“计算字段”。
 
var

NewTable: TTable;
NewIndexOptions: TIndexOptions;
TableFound: Boolean;
begin
NewTable := TTable.Create;
NewIndexOptions := [ixPrimary, ixUnique];
with NewTable do
begin
Active := False;
DatabaseName := 'DBDEMOS';
TableName := Edit1.Text;
TableType := ttDefault;
FieldDefs.Clear;
FieldDefs.Add(Edit2.Text, ftInteger, 0, False);
FieldDefs.Add(Edit3.Text, ftInteger, 0, False);
IndexDefs.Clear;

IndexDefs.Add('PrimaryIndex? Edit2.Text, NewIndexOptions);
end;
{Now check for prior existence of this table}
TableFound := FindTable(Edit1.Text); {code for FindTable not shown}
if TableFound = True then
if MessageDlg('Overwrite existing table ' + Edit1.Text + '?', mtConfirmation,
mbYesNo, 0) = mrYes then
TableFound := False;
if not TableFound then
CreateTable; { create the table}

end;
end;
 
检索一下,你会发现有很多答案
 
多人接受答案了。
 
后退
顶部