2015-10-21 3 views
2

Я пытаюсь добавить текст с разделителями в Fox таблицу с этим кодом:Ошибка в Append Из VFP OLEDB в C#

OleDbConnection oledbConn = new OleDbConnection(String.Format(@"Provider=VFPOLEDB.1;Data Source={0};Collating Sequence=MACHINE", Inputpath + "UnRepWor.dbf")); 
OleDbCommand oledbComm = new OleDbCommand { Connection = oledbConn, CommandType = CommandType.Text }; 

string insertCammand = String.Format(@"APPEND FROM {0} DELIMITED WITH TAB", @"'d:\TestServiceOutput\data.dat'"); 
oledbComm.CommandText = insertCammand.Trim(); 
try 
{ 
    oledbConn.Open(); 
    oledbComm.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    throw Utility.GetExceptionDetails(ex, "WordRootFoxExportServiceDataAccessLayer - ImportToFoxTable- insert into Fox Table",ex.Message); 
} 

и получить эту ошибку:

Message = "One or more errors occurred during processing of command." 
Source = "Microsoft OLE DB Provider for Visual FoxPro" 
ErrorCode = -2147217900 
ex.StackTrace : 
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)  
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 
    at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 

ответ

1

Хотя существующий код глючит , Я не думаю, что Append из напрямую поддерживается через VFPOLEDB. Вместо этого, вы можете попробовать, как это:

string vfpScript = string.Format(@" 
use UnRepWor shared 
APPEND FROM ('{0}') DELIMITED WITH TAB 
use", @"d:\TestServiceOutput\data.dat"); 

using (OleDbConnection oledbConn = new OleDbConnection(String.Format(@"Provider=VFPOLEDB.1;Data Source={0};Collating Sequence=MACHINE", Inputpath))) 
{ 
    OleDbCommand oledbComm = new OleDbCommand { 
    Connection = oledbConn, 
    CommandType = CommandType.StoredProcedure, 
    CommandText="ExecScript" }; 
    oledbComm.Parameters.AddWithValue("code", vfpScript); 

    try 
    { 
    oledbConn.Open(); 
    oledbComm.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
    throw Utility.GetExceptionDetails(ex, 
     "WordRootFoxExportServiceDataAccessLayer - ImportToFoxTable- insert into Fox Table", 
     ex.Message); 
    } 
} 
+0

благодарственное ответить, но не работает –

+0

К сожалению, как я боялся, что не поддерживается через VFPOLEDB хотя она указана в поддерживаемых команд. Он может работать из хранимой процедуры. –

+0

Чтобы обходной путь, вы можете прочитать файл с разделителями табуляции с помощью ACE или JET-драйвера и вставить в таблицу VFP. –