procedure TForm1.Button10Click(Sender: TObject);
var i:integer;
begin
with adoquery1 do
begin
   close;
   sql.Clear;
   sql.Add('create table ampyer(');
   for i:=0 to listbox1.items.count-1 do
   begin
      sql.add(listbox1.Items[i]);
     case listbox1.Items[i]  of     //错误
      学号:sql.add(' char(4),');
       姓名: sql.add(' char(10),');
      性别: sql.add(' char(2),')      else
         sql.add(' int,');
         end;
  end;
   sql.add(edit1.text);
   sql.add(' char(10))');
   execsql;
end;
end;
标志错误的地方为什么错了,怎么改呀

解决方案 »

  1.   

    我也不是很明白,我试了 似乎case的变量是 字符型 的就不行,
    看来楼主只有用if重写了,好在不多!
      

  2.   

    这样呢?
         case listbox1.Items[i]  of     //错误
          '学号':sql.add(' char(4),');
           '姓名': sql.add(' char(10),');
          '性别': sql.add(' char(2),')
      

  3.   

    case pos(listbox1.Items[i],'学号姓名性别')  of    
          1:sql.add(' char(4),');
          5: sql.add(' char(10),');
          9: sql.add(' char(2),')
      

  4.   

    case的变量不能是字符串,只能是整形变量
      

  5.   

    case的变量不能是字符串,只能是Integer变量
      

  6.   

    case语句的选择因子必须是有序类型,而不能用非有序的类型如字符串作为选择因子