首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi怎么将用户选择的ComboBox对应字段导入到新表中

2012-08-13 
delphi如何将用户选择的ComboBox对应字段导入到新表中表一名:oldtable,包含字段 A,B,C表二名:newtable,包

delphi如何将用户选择的ComboBox对应字段导入到新表中
表一名:oldtable,包含字段 A,B,C;
表二名:newtable,包含字段 D,E,F

设置ComboBox1,ComboBox2,ComboBox3,下拉列表(item)为表一的字段名,让用户选择映射关系,其中ComboBox2可以不选,现在根据用户选择的顺序将表一的数据导入到表二中。

列如:用户在ComboBox1.Text选择 C,ComboBox3.Text选择 B,ComboBox2不选,就将oldtable的C,B字段导入到newtable的D,F中,可是如果用户不选ComboBox2,那个ComboBox2.text 就为空,运行会报错,请问怎么处理?


我的SQL语句:
SQLStr:='insert into newtable(D,E,F) select('+ComboBox1.Text+' , '+ComboBox2.text+' , '+ComboBox3.text+') from'+oldtable


[解决办法]

Delphi(Pascal) code
用变量保存字段名,先判断,未选择就是空值var fName:string;fName:=Trim(ComboBox2.text);if fName='' then   fName:='null'; //如果字段不允许是null,就改成fname='''';...select('+ComboBox1.Text+' , '+fName+' , '+ComboBox3.text+') from '+oldtable;
[解决办法]
SQL语句有错insert into newtable(D,E,F)中字段列的数目必须与你选出来的一致
用动态字段列表就可以了
var
OldFieldList,NewFieldList : string;
begin
OldFieldList := '';
NewFieldList := '';
if Trim(ComboBox1.text) <> '' then begin
OldFieldList := OldFieldList + ',' + Trim(ComboBox1.text);
NewFieldList := NewFieldList + ',D';
end;
if Trim(ComboBox2.text) <> '' then begin
OldFieldList := OldFieldList + ',' + Trim(ComboBox2.text);
NewFieldList := NewFieldList + ',E';
end;
if Trim(ComboBox3.text) <> '' then begin
OldFieldList := OldFieldList + ',' + Trim(ComboBox3.text);
NewFieldList := NewFieldList + ',F';
end;

if OldFieldList <> '' then begin
OldFieldList := Copy(OldFieldList,2,MaxInt);
NewFieldList := Copy(NewFieldList,2,MaxInt);
end; 
//拼接SQL语句
SQLStr := 'insert into newtable(' + NewFieldList + ') select '
+ OldFieldList + ' from'+oldtable;
……………………
end;

热点排行