Pervasive + Delphi

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

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

paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

Pervasive + Delphi

Сообщение paparocii »

Добрый день

Стоит задача - сделать программу которая из файла excel формирует документы в ГАЛАКТИКЕ (Наряд заказ, накладные, акты и прочее). Для этого использую Delphi с компонентами PDAC для доступа к БД Pervasive. Предварительно с конвертировав DDF словарь, и настроил доступ через ODBS.

Доступ к Pervasive из Делфи есть, вижу все ГАЛАКТические таблицы кроме тех что c protect-ом (x$users, x$jurnal...).

Однако, если просто делаю Select-ы и в БД ничего не меняется, то программа делфи отрабатывает нормально, но если же открываю таблицу и добавляю новые данные, то при закрытии вешается весь ENGINE на сервере, в ручную приходится перезапускать ENGINE.

Решили что дело в КОМПОНЕНТЕ - сделали все то же через BDE, без использования PDAC. Программа c добавлением новых данных отрабатывает, но через некоторое время (2-5 минут после) опять ENGINE вешается.

Ладно, пусть это все из-за доступа к данным - решили каждый запрос insert либо update запускать через VIP. Селекты остались на PDAC компоненте. Все то же - выходишь из программы и вешается ENGINE.

Сейчас сделаю программу, которая будет полностью генерировать скрипт на VIP по добавлению всего набора данных.

Может у кого были подобные проблемы? :?:
Как подружить DELPHI и Pervasive на прямую?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Pervasive + Delphi

Сообщение edward_K »

1. уйти с первасива.
2. перейти на адо
3. где то ту болталась компонента для АДО для работы с типом comp.
4. Подумать все таки чтобы все работало на вип-е.
5. кто то тут спрашивал как правильно вставлять записи - но не помню плтаформу.
Начинающий путь
Местный житель
Сообщения: 258
Зарегистрирован: 13 апр 2006, 11:57
Откуда: Бегущий к Галактике

Re: Pervasive + Delphi

Сообщение Начинающий путь »

Использую PDAC 9 для Pervasive 8 и Delphi 5, работаю компонентами TPVQuery на чтение-активно читаю katmc, проблем не возникает.
идут запросы еще такого плана

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

select a.nrec, a.TABN, .......... from LSchet a left join Persons b on a.TPerson = b.NREC order by a.Tabn
NREC обрабатывается нормально...
Update тоже проходят, если только запись не заблокирована пользователем иначе выдается ошибка... (Использую очень редко в конверторах и когда никто не работает...)
Insert не пробовал...

Да, PvTable точно работать не будет, ошибка конверсии типа comp на NREC
paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

Re: Pervasive + Delphi

Сообщение paparocii »

Сегодня определил, что все работает и не вешает engine пока я не трогаю attrval. Все отрабатывает если я не трогаю эту таблицу. Если вставляю туда данные - то вуаля - висяк.

Запрос формирую:

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

        Q1.SQL.Text:='insert into "attrval" (nrec,atl_lastdate,atl_lasttime,atl_originoffice,atl_lastuser,'+#13#10
           +'atl_owner,WTABLE,CREC,CATTRNAM,VSTRING)'+#13#10
           +' VALUES ('+nrecVal+',CURDATE(),CURTIME(),1,'+atl_lastuser+','+#13#10
           +atl_lastuser+',1716,'+nrecPoruch+','+nrecAttrname+','''+value+''')';
Думаю, может что не заполняю, потому как и через VIP наблюдался висяк.

если сравнить запись которую создаю я в Attrval с записью созданной ГАЛАКТИКой, то отличается только в значении поля VLVAR (memo-значение атрибута), 0x и 0x0000000000545854.
В Pervasive поле имеет тип LONGVARBINARY, в ORACLE - float(22). В оракле если смотреть по триггерам, это поле ссылается на таблицу SYS#MEMO. Куда она ссылается в Pervasive?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Pervasive + Delphi

Сообщение edward_K »

видимо никуда - это мемо поле в первасиве сидит непосредственно в этой же таблице. Для некоторых табл сидит в AllMemo,
paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

Re: Pervasive + Delphi

Сообщение paparocii »

копаем дальше...

Причиной падения engine является запрос, запускаю его в Control Centre:

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

select nrec,VSTRING 
from "attrval" 
where WTABLE=1716 and CATTRNAM=281474976710960
	and CREC=281474976710676; 
Запрос отрабатывает, но если закрываешь Control Center - висяк - вешается engine.

шайтан, машина...

Что с этим делать? Косяк ODBC...

:???:

И еще, убираем условие в запросе WTABLE - и все работает :shock:

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

select nrec,VSTRING 
from "attrval" 
where CATTRNAM=281474976710960
	and CREC=281474976710676; 
Делаем просто условие по ATRVAL.WTABLE=1716 и все - Engine готов!!!

Кто-нибудь повторите эксперимент, если не жалко!!!
Начинающий путь
Местный житель
Сообщения: 258
Зарегистрирован: 13 апр 2006, 11:57
Откуда: Бегущий к Галактике

Re: Pervasive + Delphi

Сообщение Начинающий путь »

На, держи, у меня так работает (обычный глюк в преобразованиях типов или еще чего)

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

SELECT * FROM "ATTRVAL" where Convert("WTABLE",SQL_numeric)=1102;
paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

Re: Pervasive + Delphi

Сообщение paparocii »

Спасибо

заработало
LaaLaa

Re: Pervasive + Delphi

Сообщение LaaLaa »

paparocii писал(а):Спасибо
заработало
А сколько у Вас записей в таблице ATRVAL?
paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

Re: Pervasive + Delphi

Сообщение paparocii »

LaaLaa писал(а): А сколько у Вас записей в таблице ATRVAL?
от количества записей не зависит - на тестовой - 10-к записей, а на рабочей - очень много... так как внешнии атрибуты используем для связи накл-актов сбытом со снабжением
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Pervasive + Delphi

Сообщение savov »

А на кой такой гемор (т.е. Delphi)? Что, суперсложный файл екселя? Я делал импорт в Гал-ку (и обратно) из екселя на чистом випе, есть же ф-ии чтения ячеек екселя, тут на форуме в опыте выложены. Причем даже импортировал данные, которые каждый раз размещались в разных ячейках. Все ок шло!
Начинающий путь
Местный житель
Сообщения: 258
Зарегистрирован: 13 апр 2006, 11:57
Откуда: Бегущий к Галактике

Re: Pervasive + Delphi

Сообщение Начинающий путь »

Часом никто не открывал мемо поля таблиц (Pervasive показывает их как longvarbinaty) в Delphi?
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Pervasive + Delphi

Сообщение Semi-bit »

savov писал(а):А на кой такой гемор (т.е. Delphi)? Что, суперсложный файл екселя? Я делал импорт в Гал-ку (и обратно) из екселя на чистом випе, есть же ф-ии чтения ячеек екселя, тут на форуме в опыте выложены. Причем даже импортировал данные, которые каждый раз размещались в разных ячейках. Все ок шло!
Имхо, покамест в Дельфи всё же удобнее работать, чем в Випере, да и проблем на чистом Випе возникает ничуть не меньше.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Vitaliy
Постоянный обитатель
Сообщения: 101
Зарегистрирован: 27 апр 2005, 09:52
Откуда: Сибирь

Re: Pervasive + Delphi

Сообщение Vitaliy »

Может оно и удобнее, но возникают проблемы с журнализацией при модификациях, проблемы ограничения доступа к данным при чтении и т.д.
Но это все мелочи по сравнению с тем, что с Галактики 9.2 поддержка первасива будет прекращена
Syte
Посетитель
Сообщения: 39
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Волгоград Sealed Air
Контактная информация:

Re: Pervasive + Delphi

Сообщение Syte »

О, класс, помогло решение.
А то я уже 2 месяца не сплю после перехода на 8.10.
В 7.12? кстати, с этим всё было хорошо - то, что вешало engine на базе 8.10, на предыдущей версии работает на ура.

Никто не знает, как это лечить, чтобы не пользоваться CONVERT'ом?
а то так не по индексу вроде...
а база большая, в одном attrval'е 2.5 миллиона записей...
Ответить