table1.tablename := xxx;
table1.active := false;
table1.active := true;
这样应该可以吧,在我的程序里也是这样做的

解决方案 »

  1.   

    不行的,我都close,open,close,open了n次都不行,如果不关闭打开,恐怕连字段都无法显示。
    D5有个IndexDefs的例子,我直接拿来用都不行,你也试试看,唯一改变就是在程序中给Table1.tablename 付值
      

  2.   

    先谢谢啦~~~~~
    哦,你是老混混了,手头有没有好的数据库表创建工具,我现在用的是AppModeler for PB,
    但它创建比较小型的数据库都有点问题,如paradox,access等,或者有没有从SQL Server读取现有表结构创建paradox表的工具,即表定义转化工具或程序,其实问这个问题就是要解决这件事。
      

  3.   

    我看过了自己以前的代码,动态改变表名时是这样写的:try
          DM.Table1.Close;
          DM.Table1.TableName := Jtable1;
          DM.Table1.Open;//打开源数据表,取出其中的字段//
          ListBox6.items.Clear;
          for i := 0 to DM.Table1.FieldCount - 1 do
            ListBox6.Items.Add(DM.Table1.Fields[i].FieldName)
        except
          Application.Messagebox(Pchar('无法打开数据表' +
            ListBox5.Items.Strings[ListBox5.itemindex]),Pchar('警告'),mb_ok);
          Abort;
        end;其中,table是连接到一个database控件上的,运行是没有问题的。如果是要解决你的问题,按照你所说,SQL Server里面有一个sql的工具(名字忘了,好久没用),可以把SQL Server里面的表结构(SQL建表语句)全部取出,你可以通过哪个在paradox里建表,因为paradox也支持sql 建表的
      

  4.   

    你没看懂我的问题。我是可以获得源数据表的字段名,但无法正确获得字段的Required属性;
    我还不可以获得源数据表的索引信息。paradox的数据类型都是些A,I等不标准的表示,用SQL Server生成的表结构无法运行。
      

  5.   

    字段的Required属性,如果是SQL Server的表的话,肯定可以获得。
    不过你要把SQL Server导出成为paradox,的确会存在索引等问题,因为paradox本身要求作为索引的字段必须是表的第一个字段,因此用SQL Server生成的表结构是无法完全复制的
      

  6.   

    就是SQL Server的表,获得的字段的Required属性都是false,但显然我的表结构中有部分为true的,这我已经试验了很多次了。你试试:    try
          DM.Table1.Close;
          DM.Table1.TableName := Jtable1;
          DM.Table1.Open;//打开源数据表,取出其中的字段//
          ListBox6.items.Clear;
          for i := 0 to DM.Table1.FieldDefs.Count- 1 do
          begin
            tmpString := DM.Table1.FieldDefs.Items[i].Name;
            if DM.Table1.FieldDefs.Items[i].Required then
               tmpString := tmpString+'  true'
            else
               tmpString := tmpString+'  false';
            ListBox6.Items.Add(tmpString);
          end;
        except
          Application.Messagebox(Pchar('无法打开数据表' +
            ListBox5.Items.Strings[ListBox5.itemindex]),Pchar('警告'),mb_ok);
          Abort;
        end; 另:paradox可以自己自动生成一主索引吗?