System.Data.OleDb.OleDbException: «Функция не реализована». - PullRequest
0 голосов
/ 05 июля 2019

Чтобы автоматизировать работу сотрудников, была поставлена ​​задача автоматически интегрировать записи клиентов.В программе поддерживается клиентская база с базой данных foxpro (dbf).Я пытаюсь вручную сделать тестовую запись в базе данных, но при добавлении значений в одно из полей появляется ошибка:

 System.Data.OleDb.OleDbException: "Function is not implemented."

Я создаю объект класса для работы с базой данных:

 WDBF db = new WDBF();

    db.CreateOleDbCommand("INSERT INTO CLNDATES (" +
        "CLIENT_CODE, " +
        "LAST_NAME, " +
        "FIRST_NAME, " +
        "FAMILY, " +
        "HOME_PH_NUMBER," +

        "OFFICE_PH_NUMBER ," +
        "CARD_CODE, " +
        "ADD_DATES ," +                
        "CONTRACT,"+
        "CREDIT," +

        "PROC_T," +
        "PROC_O," +
        "MAIL," +
        "FILE_PHOTO, " +
        "RISK," +

        "WORKPLACE," +
        "KDG," +
        "NATIONALITY," +
        "REGION," +
        "ADDRESS," +

        "MG," +
        "INSURER_CODE," +
        "BONUSTYPE," +
        "DISCOUNTCARD," +
        "BONUSCOMMENT," +

        "DOCTOR," +
        "POST," +
        "POSTDATE," +
        "VILLAGE," +
        "DOGOVOR_FROM," +

        "PASSPORT," +
        "AGENT," +
        "INVALID" +
        "" +
        "" +
        ") " + 

        "VALUES(" +
        "?,?,?,?,?," +
        "?,?,?,?,?," +
        "?,?,?,?,?," +
        "?,?,?,?,?," +
        "?,?,?,?,?," +
        "?,?,?,?,?," +
        "?,?,?" +
        ")");

Далее я открываю соединение и пытаюсь выполнить команду INSERT.

using (StreamReader w = new StreamReader("conf.txt"))
        conf = w.ReadLine();

    _connection.ConnectionString = @"Provider=vfpoledb;" + conf + ";Collating Sequence=machine; Exclusive=No";
_connection.Open();
        OleDbCommand command = new
            OleDbCommand(queryString, _connection);
        command.Parameters.Add("CLIENT_CODE", OleDbType.Char).Value= 85919607;
        command.Parameters.Add("HOME_PH_NUMBER", OleDbType.Char).Value = 1111;
        command.Parameters.Add("OFFICE_PH_NUMBER", OleDbType.Char).Value = 1111;              
        command.Parameters.Add("FIRST_NAME", OleDbType.Char).Value = "test";
        command.Parameters.Add("FAMILY", OleDbType.Char).Value = "test";
        command.Parameters.Add("LAST_NAME", OleDbType.Char).Value = "test";

        command.Parameters.Add("CARD_CODE", OleDbType.Char).Value = "";
        command.Parameters.Add("ADD_DATES", OleDbType.Char).Value = "";
        command.Parameters.Add("CONTRACT", OleDbType.Char).Value = "";
        command.Parameters.Add("CREDIT", OleDbType.Double).Value = 0;
        command.Parameters.Add("PROC_T", OleDbType.Double).Value = 0;
        command.Parameters.Add("PROC_O", OleDbType.Double).Value = 0;
        command.Parameters.Add("MAIL", OleDbType.Char).Value = "";
        command.Parameters.Add("FILE_PHOTO", OleDbType.Char).Value = "";
        command.Parameters.Add("RISK", OleDbType.Char).Value = "";
        command.Parameters.Add("WORKPLACE", OleDbType.Char).Value = "";
        command.Parameters.Add("KDG", OleDbType.Char).Value = "";
        command.Parameters.Add("NATIONALITY", OleDbType.Char).Value = "";
        command.Parameters.Add("REGION", OleDbType.Char).Value = "";
        command.Parameters.Add("ADDRESS", OleDbType.Char).Value = "";
        command.Parameters.Add("MG", OleDbType.Char).Value = "";

        command.Parameters.Add("INSURER_CODE", OleDbType.Char).Value = "";
        command.Parameters.Add("BONUSTYPE", OleDbType.Char).Value = "";
        command.Parameters.Add("DISCOUNTCARD", OleDbType.Char).Value = "";
        command.Parameters.Add("BONUSCOMMENT", OleDbType.Char).Value = "";
        command.Parameters.Add("DOCTOR", OleDbType.Char).Value = "";
        command.Parameters.Add("POST", OleDbType.Char).Value = "";
        command.Parameters.Add("POSTDATE", OleDbType.Date).Value =null;
        command.Parameters.Add("VILLAGE", OleDbType.Date).Value = null;
        command.Parameters.Add("DOGOVOR_FROM", OleDbType.Date).Value = null;
        command.Parameters.Add("PASSPORT", OleDbType.Char).Value = null;
        command.Parameters.Add("AGENT", OleDbType.Char).Value = null;
        command.Parameters.Add("INVALID", OleDbType.Char).Value = null;






        command.ExecuteNonQuery();

Ошибка появляется при добавлении

command.Parameters.Add("INVALID", OleDbType.Char).Value = null;

При добавлении пустой строки,ошибка остается:

command.Parameters.Add ("INVALID", OleDbType.Char) .Value = "";

Проходил через разные типы данных, но ошибка никуда не уходит.В чем может быть проблема?Извините, у меня плохой английский.

UPD1:

Я пытался добавить строки в другую таблицу из того же программного обеспечения.Вставлено без ошибок.Внесены изменения в код, чтобы не перечислять все столбцы, а заполнить только необходимые.

    db.CreateOleDbCommand("INSERT INTO cln_actions (CLIENT_CODE) " + "VALUES(?)");
public void CreateOleDbCommand(string queryString)
    {
        if(_connection != null)
        {
            _connection.Open();
            OleDbCommand command = new
                OleDbCommand(queryString, _connection);
            command.Parameters.Add("[CLIENT_CODE]", OleDbType.Char).Value = "test";
            new OleDbCommand("set null off", _connection).ExecuteNonQuery();
            int x = command.ExecuteNonQuery();
        }}
...