Я пытаюсь составить .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
Я могу также упомянуть, что СОСТАВЛЯЮ пустую таблицу каждый раз и заполняю ее данными, я не делаю, изменяют таблицу, потому что я не должен. Каждый месяц существует новая таблица.
И я, кажется, не добираюсь, почему это поместило бы "новые столбцы" в последний раз, даже если таблица является новой, и я удалил каждый предыдущий из того местоположения
Конечно, нет никакого смысла в том, что столбцы будут переупорядочены, когда таблица совсем новая. И что порядок выглядит правильным, когда вы смотрите на структуру таблицы.
Есть только одно хорошее объяснение: программа, которую вы используете для просмотра таблицы, запомнила порядок столбцов из предыдущего запуска. И помещает новые столбцы в конец. Это была бы очень распространенная и желательная функция, позволяющая пользователю вернуть вид таблицы таким же, каким он был, когда он смотрел на нее в последний раз. Данные макета должны храниться в личных данных программы, формат файла .dbf не может их хранить.
Это просто артефакт отображения, он никак не может повлиять на правильную работу.
Вы можете изменить порядок столбцов в таблице Foxpro в среде Foxpro IDE.
USE table EXCLUSIVE
MODIFY STRUCTURE
Нажмите кнопку слева от поля и перетащите ее вверх или вниз туда, где вам это нужно.
РЕДАКТИРОВАТЬ: После прочтения комментария о том, что он работает на компьютере вашего босса, похоже, проблема в том, что foxuser.dbf запоминает порядок столбцов, который вы просматривали в последний раз - поскольку столбцов там не было в последний раз он просто показывает их в конце, хотя на самом деле они находятся в середине.
Какую точную команду вы используете для просмотра таблицы на своем компьютере?