missing (compatible) underlying dataset

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

missing (compatible) underlying dataset

Сообщение pi1 » 24.02.2017 12:06:48

Перешел с 0.93 на 1.6.2. Сначала переделал в проекте versioninfo, а теперь вылез сабж- missing (compatible) underlying dataset. То есть если у меня в компоненте SQLQuery прописано в поле SQL например вызов 16 полей и столько же создано (для одной процедуры), то если я вызываю через эту же компоненту в другой процедуре датасет со значениями только 2 полей (входящих в список из 16), то выводится эта ошибка. В предыдущей версии ошибки не было. Кто бы мог прокомментировать это изменение ?

Добавлено спустя 3 часа 30 минут 26 секунд:
Судя по всему разработчики таким путем экранировали проблему с autocalculated-полями . Допустим из 16 полей, одно autocalculated, а я работаю только с двумя другими. Что тогда будет с autocalculated полем? Вот кусок кода из исходника bufdataset.pas

// If there is a field with FieldNo=0 then the fields are not found to the
// FieldDefs which is a sign that there is no dataset created. (Calculated and
// lookup fields have FieldNo=-1)
FAutoIncField:=nil;
for i := 0 to Fields.Count-1 do
if Fields[i].FieldNo=0 then
DatabaseError(SErrNoDataset)
else if (FAutoIncValue>-1) and (Fields[i] is TAutoIncField) and not assigned(FAutoIncField) then
FAutoIncField := TAutoIncField(Fields[i]);
где константа SErrNoDataset='missing (compatible) underlying dataset'

Добавлено спустя 22 минуты 8 секунд:
БББлин!! Оказалось, что по умолчанию у SqlQuery взведен автоматом режим "AutoCalcFields". Я его точно не взводил.

Добавлено спустя 3 минуты 59 секунд:
Причем, отключение AutoCalcFields не помогает уйти от этой ошибки.

Добавлено спустя 1 час 47 минут 20 секунд:
Я там, выше, спутал AutoCalc с AutoInc . Пока не понял разрабов и просто закомментил кусок кода в C:lazarusfpc3.0.0sourcepackagesfcl-dbsrcbasebufdataset.pas (возможно можно где то просто "птичку" убрать)-
//------------------------------------------------------------
// If there is a field with FieldNo=0 then the fields are not found to the
// FieldDefs which is a sign that there is no dataset created. (Calculated and
// lookup fields have FieldNo=-1)
FAutoIncField:=nil;
//pi
// for i := 0 to Fields.Count-1 do
// if Fields[i].FieldNo=0 then
// DatabaseError(SErrNoDataset)
// else if (FAutoIncValue>-1) and (Fields[i] is TAutoIncField) and not assigned(FAutoIncField) then
// FAutoIncField := TAutoIncField(Fields[i]);

InitDefaultIndexes;
//------------------------------------------------------------
и пересобрал lazarus.exe

Добавлено спустя 47 минут 48 секунд:
И не помогло.

Добавлено спустя 15 часов 30 секунд:
Насколько понял из аглицких текстов, так как TSQLQuery потомок TBufDataset то и изменение по использованию памяти компонентом TBufDataset повлияло и на работу TSQLQuery. То есть, если у TBufDataset делать так, как я делаю с TSQLQuery (частичное использование полей датасета), то будет возможна ошибка (например loop между полями) и эту возможность забанили. Ну заодно и удобство в простой работе с TSQLQuery.
Аватара пользователя
pi1
новенький
 
Сообщения: 43
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: missing (compatible) underlying dataset

Сообщение pi1 » 18.03.2017 13:08:27

Ладно, раз наводить порядок, то наведем. Количество полей в юните сделаем равным (не более) необходимому количеству в запросе в коде. А если в другом запросе нужно меньшее количество полей, то поставим на форму еще один SQLQuery, для которого в юните будет меньшее количество полей. Однако вылез баг. Ставлю компоненту SQLQuery на форму, активирую, в редакторе полей выбираю нужные и эти поля НЕ ДОБАВЛЯЮТСЯ (как раньше, автоматом) в список типов в юните. Приходится вписывать "ручками", а вот в файле lfm поля добавляются. Почему такое происходит (а на предыдущих версиях, сейчас 1.6.2, такого не встречал). Причем это не везде. Уже даже права файлов проверил в винде. Разницы не заметил между хорошими и плохими. :(

Добавлено спустя 47 минут 29 секунд:
Вроде причина в компоненте - zsspxml: XML reader
// Накалякано в Мозыре в 2009 году
// Автор: Неборак Руслан Владимирович (Ruslan V. Neborak)
// e-mail: avemey(мяу)tut(точка)by
// URL: http://avemey.com
// Ver: 0.0.5
// Лицензия: zlib
// Last update: 2012.08.12
Где то не стыковка с этой версией лазаря.

Добавлено спустя 2 часа 2 минуты 29 секунд:
Точно, в файле zsspxml.pas (src компоненты zexmlss ) нестыковка с новой версией IDE. Компонента от 2016 года, а этот файл не правили с 2012. Убрал из uses zsspxml , поработал с sqlQuery , вернул назад и откомпиллировал проект. Придется или так или самому править в zsspxml.pas директивы компилятора.
Аватара пользователя
pi1
новенький
 
Сообщения: 43
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google Adsense [Bot], Majestic-12 [Bot], rentdresznx, Yandex [Bot] и гости: 6

Рейтинг@Mail.ru