Как я могу сохранить порядок столбцов в .dbf таблице, составленной в C#?

Я пытаюсь составить .dbf таблицу с помощью Визуального C#, потому что мне нужен он для импорта данных к другому приложению. С этой целью мне нужен порядок столбцов, чтобы быть точно правым иначе, что приложение не примет таблицу. Это хорошо работало до сих пор, но недавно я должен был внести некоторые изменения в структуру таблицы, и я добавил столбцы в точном положении в СОЗДАТЬ Операторе. Проблема, которую я получаю, состоит в том, что, когда я открываю таблицу после создания с Визуальной 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 являются частью нового столбца и всегда помещаются в последний раз, даже если я выполняю СОЗДАТЬ КОМАНДУ в Визуальной Fox Pro

Я могу также упомянуть, что СОСТАВЛЯЮ пустую таблицу каждый раз и заполняю ее данными, я не делаю, изменяют таблицу, потому что я не должен. Каждый месяц существует новая таблица.

И я, кажется, не добираюсь, почему это поместило бы "новые столбцы" в последний раз, даже если таблица является новой, и я удалил каждый предыдущий из того местоположения

1
задан Brian Tompsett - 汤莱恩 8 May 2017 в 18:40
поделиться

2 ответа

Конечно, нет никакого смысла в том, что столбцы будут переупорядочены, когда таблица совсем новая. И что порядок выглядит правильным, когда вы смотрите на структуру таблицы.

Есть только одно хорошее объяснение: программа, которую вы используете для просмотра таблицы, запомнила порядок столбцов из предыдущего запуска. И помещает новые столбцы в конец. Это была бы очень распространенная и желательная функция, позволяющая пользователю вернуть вид таблицы таким же, каким он был, когда он смотрел на нее в последний раз. Данные макета должны храниться в личных данных программы, формат файла .dbf не может их хранить.

Это просто артефакт отображения, он никак не может повлиять на правильную работу.

2
ответ дан 2 September 2019 в 23:32
поделиться

Вы можете изменить порядок столбцов в таблице Foxpro в среде Foxpro IDE.

USE table EXCLUSIVE
MODIFY STRUCTURE

Нажмите кнопку слева от поля и перетащите ее вверх или вниз туда, где вам это нужно.

РЕДАКТИРОВАТЬ: После прочтения комментария о том, что он работает на компьютере вашего босса, похоже, проблема в том, что foxuser.dbf запоминает порядок столбцов, который вы просматривали в последний раз - поскольку столбцов там не было в последний раз он просто показывает их в конце, хотя на самом деле они находятся в середине.

Какую точную команду вы используете для просмотра таблицы на своем компьютере?

0
ответ дан 2 September 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: