別のアプリケーションにデータをインポートするために必要なため、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 FoxProでCREATECOMMANDを実行した場合でも、常に最後に配置されます。
また、毎回空のテーブルを作成してデータを入力することもできます。テーブルを変更する必要がないため、変更は行いません。毎月新しいテーブルがあります。
そして、テーブルが新しいものであり、その場所から以前のすべての列を削除したとしても、なぜ「新しい列」が最後に配置されるのかわからないようです。