1

我正在尝试使用 Visual C# 创建一个 .dbf 表,因为我需要它来将数据导入另一个应用程序。为此,我需要列顺序完全正确,否则该应用程序将不接受该表。到目前为止它工作正常,但最近我不得不对表的结构进行一些更改,并且我在 CREATE 语句中的确切位置添加了列。我遇到的问题是,当我在使用 Visual Fox Pro 创建后打开表时,新列位于表的末尾,而不是我放置它们的位置。

我的代码如下:

#region create dbf file
        //create the file again
        string strCreate = "CREATE TABLE " + strExportPath + "\\"+fisier+" " + 
            "(TIPD Numeric(1), "+
            " LN Numeric(2), " +
            " AN Numeric(4), "+
            " DEN_ANG Char(50), " +
            " CUI Char(13), " +
            " NR_CRT Numeric(6), "+
            " TIP_RECTIF Char(1), " +
            " NUME_ASIG Char(50), " +
            " CNP Char(13), "+
            " CNP_COPIL Char(13), "+
            " CAS_ASIG Char(2), "+
            " ZI_LUCRAT Numeric(2), "+
            " TOT_ZI_LUC Numeric(2), "+
            " SERIE_CCM Char(5), "+
            " NUMAR_CCM Char(10), "+
            " SERIE_CCM_ Char(5), "+
            " NUMAR_CCM_ Char(10), "+
            " DATA_ACORD DATE, " +
            " COD_INDEMN Char(2), " +
            " ZI_PRE_ANG Numeric(1), "+
            " ZI_FN Numeric(2), " +
            " ZI_PRE Numeric(2), "+
            " LOC_PRES Numeric(2), "+
            " SUM_ANG Numeric(18), "+
            " FN Numeric(18), " +
            " DATA_INC DATE, "+
            " DATA_SF DATE, "+
            " COD_URG Char(3), " +
            " COD_CONTAG Char(2), "+
            " BAZA_CALC Numeric(6), "+
            " ZI_BZ_CALC Numeric(3), "+
            " MZBCI Numeric(8,4), "+
            " ME_NR CHAR(10))";



        OleDbConnection con = new OleDbConnection(strConn);
        try 
        {
            con.Open();
        }
        catch //(Exception ex)
        {
            NMsgBox("Err", "", "Renunta");
            return;
        }

        OleDbCommand createCmd = new OleDbCommand(strCreate, con);
        try
        {
            createCmd.ExecuteNonQuery();
        }
        catch //(Exception ex)
        {
            NMsgBox("Err "+fisier, "", Renunta");
            return;
        }
        con.Close();

CNP_COPIL、DATA_ACORD 和 LOC_PRES 等列是一些新列,并且总是放在最后,即使我在 Visual Fox Pro 中执行 CREATE COMMAND

我还可以提到我每次都创建一个空表并用数据填充它,我不做改变表,因为我不需要。每个月都有一张新桌子。

而且我似乎不明白为什么它将“新列”放在最后,即使该表是新表并且我已从该位置删除了所有以前的表

4

2 回答 2

2

当表是全新的时,列将被重新排序当然是零意义的。当您查看表结构时,顺序看起来是正确的。

只有一个很好的解释:无论您用来查看表格的任何程序都已经记住了前一次运行的列顺序。并将新列放在最后。这将是一个非常常见且理想的功能,允许用户返回表格的视图,就像她最后一次查看它一样。布局数据必须存储在程序的私有数据中,.dbf 文件格式无法存储。

这只是一个显示神器,它不会以任何方式影响正常运行。

于 2010-06-24T11:33:30.687 回答
0

您可以在 Foxpro IDE 中更改 Foxpro 表的列顺序。

USE table EXCLUSIVE
MODIFY STRUCTURE

单击字段左侧的按钮并将其向上或向下拖动到您需要的位置。

编辑: 在阅读了关于它在你老板的计算机上工作的评论之后,听起来问题是 foxuser.dbf 记住了你上次浏览的列顺序 - 因为上次它只是在虽然他们真的在中间。

您使用什么确切的命令来查看计算机上的表格?

于 2010-08-01T15:46:20.187 回答