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

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;