我正在尝试使用 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
我还可以提到我每次都创建一个空表并用数据填充它,我不做改变表,因为我不需要。每个月都有一张新桌子。
而且我似乎不明白为什么它将“新列”放在最后,即使该表是新表并且我已从该位置删除了所有以前的表