System.Data.OleDb.OleDbException: “Function is not implemented.”

105
16 марта 2021, 05:10

В целях автоматизации работы сотрудников, была поставлена задача интеграции записи клиентов в автоматическом режиме. Клиентская база ведется в программе с БД 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

 _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 = "Теыт";
            command.Parameters.Add("FAMILY", OleDbType.Char).Value = "Теыт";
            command.Parameters.Add("LAST_NAME", OleDbType.Char).Value = "Теыт";
            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;

Если исключить заполнение данного столбца, то ругается на то, что INVALID не может быть пустым:

System.Data.OleDb.OleDbException: "Field INVALID does not accept null values."

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

UPD:

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

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

UPD2: Строка подключения.

using (StreamReader w = new StreamReader("conf.txt"))
            conf = w.ReadLine();
        _connection.ConnectionString = @"Provider=vfpoledb;" + conf + ";Collating Sequence=machine; Exclusive=No";

Версию FOXPRO попытаюсь уточнить у разработчиков основного ПО.

UPD3: Попробовал добавить строки в другую таблицу из этого же ПО. Вставляется без замечаний. Внес правки в код, чтобы не перечислять все столбцы, а заполнять только нужные.

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 = "Vasya5";
            new OleDbCommand("set null off", _connection).ExecuteNonQuery();
            int x = command.ExecuteNonQuery();
        }}

Скорее всего MSDN.WhiteKnight прав, и дело в тригере привязанному к полю INVALID. Но как с этим бороться, пока не понятно.

READ ALSO
error with ssis package in sql server job

error with ssis package in sql server job

Я сделал пакет служб SSIS, который экспортирует данные из Microsoft SQL Server и импортирует их в файлыcsv и mysql

131
Кто нибудь пользовался SAM-IT/abac для yii2?

Кто нибудь пользовался SAM-IT/abac для yii2?

кто нибудь пользовался SAM-IT/abac для yii2, не могли бы привести пару примеров использования?

75
парсер изображений на php

парсер изображений на php

В php вообще ноль, но по работе потребовалось, так как на js данная задача невыполнима, прошу помощиЕсть кусочек парсера, принимает на вход ссылку,...

142
Woo-commerce категории

Woo-commerce категории

Как найти текст который был написан в описании категории товара woocommerce? Вроде бы текст пишется в wp_posts, а категории в wp_termsНахожу название в категориях...

96