Имя: Пароль:
1C
1С v8
Записать значение в поле DBF файла с типом MEMO
0 Так мало знающий
 
26.10.18
08:44
Добрый день. Не получается записать значение в поле с типом Memo. Работу с файлами веду через OLE DB.

Вот создаю файл:

    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString="Provider=vfpoledb.1;data source="+КаталогДляВыгрузки+";";
    //"Driver={Microsoft Visual FoxPro Driver};"
    Соединение.CursorLocation = 3;// client side
    Соединение.Mode = 3;// adModeReadWrite
    Соединение.Open();
    Соединение.Execute("create table Calculation.dbf (CODE2 C(10) NOT NULL, INFO M NOT NULL)");

Вот таким кодом пытаюсь записать:
ЗаписьМ = ЗаписатьДанныеВФорматеXML(Секция,Кофе);

    Соединение.Execute("insert into Calculation.dbf (CODE2, INFO) values ('"+Строка(Кофе.Код)+"', REPLICATE('"+ЗаписьМ+"',100)");

Значение реквизита "ЗаписьМ" строка, длинна которой может быть больше 254 символов.
1 Так мало знающий
 
26.10.18
08:46
Ошибка:

Произошла исключительная ситуация (Microsoft OLE DB Provider for Visual FoxPro): Command contains unrecognized phrase/keyword.
2 asady
 
26.10.18
08:52
(0)
а вот так ошибка есть?
Соединение.Execute("insert into Calculation.dbf (CODE2, INFO) values ('"+Строка(Кофе.Код)+"', REPLICATE('1234567890',100)");
3 Так мало знающий
 
26.10.18
08:57
(2) Да. Вот: Произошла исключительная ситуация (Microsoft OLE DB Provider for Visual FoxPro): Syntax error.
4 Так мало знающий
 
26.10.18
08:59
(2) Исправил синтаксическую. Ошибок не выдало, но и в поле "INFO" значения нет
5 Так мало знающий
 
26.10.18
09:00
(2) Вру. Есть значение
6 Так мало знающий
 
26.10.18
09:02
(2) Только как мне записать мое значение. Как я понял в одинарных кавычках не может быть строка больше 254 символов, типа это константа.
7 asady
 
26.10.18
09:10
(6) а так тоже ошибка?
Соединение.Execute("insert into Calculation.dbf (CODE2, INFO) values ('"+Строка(Кофе.Код)+"','"+ЗаписьМ+"')");
8 Так мало знающий
 
26.10.18
09:16
(7) Да: Произошла исключительная ситуация (Microsoft OLE DB Provider for Visual FoxPro): Command contains unrecognized phrase/keyword.
9 asady
 
26.10.18
09:27
(8) попробуй в строке подключения указать:
Extended properties=dBase IV
10 Так мало знающий
 
26.10.18
09:31
(9) Он же вроде не поддерживает мемо поля, да и готовлю я их для загрузки в сервио, обмен с которым на этой библиотеке
11 asady
 
26.10.18
09:32
(8) вообще поиском ты видимо не пользовался совсем
Запись данных из ДБФ с мемо полями
12 Так мало знающий
 
26.10.18
09:33
(11) Пользовался и эту тему видел. В ней вопрос о чтении, а запись не обсуждается
13 asady
 
26.10.18
09:36
(12) тогда вот здесь почитай
http://www.delphimaster.net/view/3-51613
особенно пост 6
14 Так мало знающий
 
26.10.18
10:02
(13) Если бы вот здесь дописали ответ, было бы самое то http://forum.foxclub.ru/read.php?46,546786,546830,quote=1
15 Так мало знающий
 
26.10.18
11:15
А кто-то может подсказать как должен выглядеть текст команды с применением функции "APPEND MEMO"
16 Так мало знающий
 
26.10.18
15:47
Как решение думаю пригодится и такой вариант:

    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString="Provider=vfpoledb.1;data source="+КаталогДляВыгрузки+";";
    //"Driver={Microsoft Visual FoxPro Driver};"
    Соединение.CursorLocation = 3;// client side
    Соединение.Mode = 3;// adModeReadWrite
    Соединение.Open();
    Соединение.Execute("create table Calculation.dbf (CODE2 C(10) NOT NULL, INFO M NOT NULL)");
    
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = Соединение;
    Command.CommandText = "Insert Into Calculation (CODE2,INFO) Values ('"+Строка(Кофе.Код)+"',?)";
    
    param = Новый COMОбъект("ADODB.Parameter");
    param.Value = ЗаписьМ;//Текст или строка, значение которой может быть больше 254 символов
    param.Name = "PINFO";
    param.Type = 129; //adChar
    param.Size = 10000;
    
    Command.Parameters.Append(param);
    Command.Execute();
    Соединение.Close();
17 Сияющий в темноте
 
28.10.18
18:57
Через параметры можно все,а еще можно открыть таблицу напрямую и через RecordSet в нее писать.