我动态加入字段的代码如下,
不知道错在哪里?
procedure TForm1.Button5Click(Sender: TObject);
var s:Tfieldtype ;//增加字段的类型
i:integer;//增加字段的长度
recname:string;//增加的字段名
begin
s:=adoquery1.FieldByName('CompanyID').DataType;
i:= adoquery1.FieldByName('CompanyID').Size ;
recname:= 'CompanyID';
Adoquery2.Close ;
Adoquery2.SQL.Clear ;
Adoquery2.SQL.Add('ALTER TABLE test '+recname+' '+s+'('+i+')') ;
adoquery2.ExecSQL ;end;
不知道错在哪里?
procedure TForm1.Button5Click(Sender: TObject);
var s:Tfieldtype ;//增加字段的类型
i:integer;//增加字段的长度
recname:string;//增加的字段名
begin
s:=adoquery1.FieldByName('CompanyID').DataType;
i:= adoquery1.FieldByName('CompanyID').Size ;
recname:= 'CompanyID';
Adoquery2.Close ;
Adoquery2.SQL.Clear ;
Adoquery2.SQL.Add('ALTER TABLE test '+recname+' '+s+'('+i+')') ;
adoquery2.ExecSQL ;end;
Adoquery2.Close ;
Adoquery2.SQL.Clear ;
Adoquery2.SQL.Add('ALTER TABLE test add '+recname+' '+s+'('+i+')') ;
adoquery2.ExecSQL ;//可能原因:没有加ADD;数据类型不存在;如果是整型,则不要加()呢
还有数据类型不知道怎样处理!
1、'ALTER TABLE test '+recname+' '+s+'('+i+')'
中的S是Tfieldtype(一个集合)类型,它直接和字符串相加是不可以的。
2、即使可以相加,而不同数据库对于定义相同类型字段的关键字有所不同。如access支持“text”,表示“varchar”,而oracle则不支持“text”表示“varchar”。
3、i:= adoquery1.FieldByName('CompanyID').Size ;
中i是Integer类型,不能和字符串直接相加。同样特殊类型字段的Size并不等于数据库中定义的字段长度,如数据库中是varchar(256),则取得的Size并不等于256,因为在Delphi中,这样的字段类型是TMemoField而不是简单的TStringDField.————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
那如果我增加的字段的类型是与其他字段的类型相同,
我应该怎样做了?
谢谢!