import|export dbf memo поле

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

import|export dbf memo поле

Сообщение Alexander »

Есть может у кого пример? пытаюс так сделать:

Код: Выделить всё

      hdle:=DBFOpen(export_dir+'\\'+ c_docinfo_file, stCreate);
      if(hdle=0) exit;
      DBFAddField(hdle,'cdoc',DbChar, 20, 0);
      DBFAddField(hdle,'cLang',DbChar, 20, 0);
      DBFAddField(hdle,'DocType',DbNum, 5, 0);
      DBFAddField(hdle,'InfoType',DbNum, 5, 0);
      DBFAddField(hdle,'Name',DbChar, 255, 0);
      DBFAddField(hdle,'TextData',DbMemo, 255, 0);
      _loop dogovor{
         _loop docinfo{           
DBFPutMemoFieldValue(hdle,'TextData',docinfo.TextData);
            DBFPutFieldValue(hdle,'cdoc',docinfo.cdoc);
            DBFPutFieldValue(hdle,'cLang',docinfo.cLang);
            DBFPutFieldValue(hdle,'DocType',docinfo.DocType);
            DBFPutFieldValue(hdle,'InfoType',docinfo.InfoType);
            DBFPutFieldValue(hdle,'Name',docinfo.Name);
            DBFInsertRecord(hdle);
                     }
         
      }
      DBFClose(hdle);

Код: Выделить всё

      insert into docinfonew set
             docinfonew.cdoc = dogovornew.nrec,
             #SetDBFField(docinfonew,cLang),
             #SetDBFField(docinfonew,DocType),
             #SetDBFField(docinfonew,InfoType),
             #SetDBFField(docinfonew,Name);
             DBFGetMemoFieldValue(hdle,'TextData',docinfonew.TextData);
записи импортируются, а мемо поле пустое... смотрю сам дбф-там оно тоже пусто :-(
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Написал примерчик, чтоб потестить, все работает:

Код: Выделить всё

Interface TestDBFFromMemo '' EscClose, DoAccept;
  Show at (,,,);

Create view 
as select
 mem
from
 ALLMEMO
;
HandleEvent
  cmInit :
  {
    var hdle: longint;
    hdle:=DBFOpen('C:\GalTemp\MEMO.dbf', stCreate);

    if(hdle=0)
     {
         Message('Файл не создан')
          abort; 
            exit;
     };

    DBFAddField (hdle, 'memo', dbMemo, 0, 0)

    _Loop AllMemo
    {
       DBFPutMemoFieldValue (hdle, 'memo', AllMemo.mem)
       DBFInsertRecord (hdle)
    }

    DBFClose(hdle);
    Message('Все');
  }

end;
End.
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: import|export dbf memo поле

Сообщение KATZ »

Alexander писал(а):записи импортируются, а мемо поле пустое... смотрю сам дбф-там оно тоже пусто
Если сам DBF есть, то мемо-поле в нем должно быть. Какой программой смотрите?

А при импорте мемо-поле пустое, т. к. после DBFGetMemoFieldValue должно еще быть update current docinfonew. Плюс в строке docinfonew.cdoc = dogovornew.nrec двоеточие напрашивается.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

В этом случае и без двоеточия должно отработать.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

KATZ
вы оказались правы:

Код: Выделить всё

update current docinfonew 
помогло... вот я стормозил... а дбф просмотрщик надо менять :-) с мемо он не умеет работать :-)
Плюс в строке docinfonew.cdoc = dogovornew.nrec двоеточие напрашивается.
необязательно, т.к. конструкция инсерт. если бы так:

Код: Выделить всё

docinfonew.cdoc := dogovornew.nrec;
insert current docinfonew;
то да, согласен, двоеточие нужно. Хотя это не принципиально.

Спабо кто откликнулся :-)
Ответить