Хм... странно, я вообще убрал из кода свою процедуру, которая генерирует тексты update-запросов для этой компоненты uniQuery1.
Ошибка исчезла. Но...
Но все равно данные в базу через этот же самый uniQuery1 добавляются и редактируются.
Получается, что без моего ведома компонента uniQuery1 сама создает update-запросы автоматически? Или это регулируется каким-то свойством?
Найдено 217 результатов
- Пн 12 июл 2021 09:46
- Форум: Universal Data Access Components
- Тема: Не генерируется запрос _stUpdate (GenerateSQL)
- Ответы: 28
- Просмотры: 18522
- Чт 08 июл 2021 08:22
- Форум: Universal Data Access Components
- Тема: Не генерируется запрос _stUpdate (GenerateSQL)
- Ответы: 28
- Просмотры: 18522
Re: Не генерируется запрос _stUpdate (GenerateSQL)
Добрый день. Еще маленькая проблема.
Если датасет пустой, т.е. данных в таблице нет, то вываливает AV
Если датасет пустой, т.е. данных в таблице нет, то вываливает AV
Код: Выделить всё
DAParamsInfo := TDAParamsInfo.Create(TDAParamInfo);
try
try
на этой строке ->> UniQuery.SQLInsert.Text := TDBAccessUtils.SQLGenerator(UniQuery).GenerateSQL(DAParamsInfo, _stInsert, true);
- Чт 29 апр 2021 07:28
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
ужасная техподдержка у вас
- Вт 27 апр 2021 13:51
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
Проблема не решена.
Версия компонент 8.4.3
Такое впечатление, что в версии 8.4.3 все вернули обратно и проблема снова проявилась.
Снимок http://prntscr.com/1259838
Еще снимок http://prntscr.com/1259hn6
Версия компонент 8.4.3
Такое впечатление, что в версии 8.4.3 все вернули обратно и проблема снова проявилась.
Снимок http://prntscr.com/1259838
Еще снимок http://prntscr.com/1259hn6
- Пн 22 мар 2021 18:49
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
Спасибо, увидел.
Поверхностно пока что проверил - вроде работает.
Поверхностно пока что проверил - вроде работает.
- Пт 19 мар 2021 14:27
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
Добрый день.
Спасибо, что удалось обнаружить и исправить проблему.
Жду с нетерпением, т.к. проекты в разработке...
Спасибо, что удалось обнаружить и исправить проблему.
Жду с нетерпением, т.к. проекты в разработке...
- Чт 18 мар 2021 17:48
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
Отправил.
Нажмите кнопку Button3, а потом Insert
Нажмите кнопку Button3, а потом Insert
- Чт 18 мар 2021 17:25
- Форум: Universal Data Access Components
- Тема: Генератор SQL и псевдонимы полей
- Ответы: 3
- Просмотры: 5314
Re: Генератор SQL и псевдонимы полей
я думал, что вот так правильно
разве нет?
Код: Выделить всё
INSERT INTO STREETS
(ID, NAME, DELETED)
VALUES
(:ID, :NAME, :DELETED)
- Чт 18 мар 2021 10:07
- Форум: Universal Data Access Components
- Тема: UniQuery-FetchRows и пагинация
- Ответы: 10
- Просмотры: 11278
Re: UniQuery-FetchRows и пагинация
Как работает технология smartfetch + liveblock - это я понял.
Я не понял, нужно ли включать при этом включать
UniQuery1->SpecificOptions->Values["FetchAll"] = "True";
или нет?
Я не понял, нужно ли включать при этом включать
UniQuery1->SpecificOptions->Values["FetchAll"] = "True";
или нет?
- Ср 17 мар 2021 18:53
- Форум: Universal Data Access Components
- Тема: UniQuery-FetchRows и пагинация
- Ответы: 10
- Просмотры: 11278
Re: UniQuery-FetchRows и пагинация
Я еще раз переспрошу и уточню по этим трем параметрам.
Т.е. если включены SmartFetch и LiveBlock, то нужно включать еще и третий спец. параметр "FetchAll"? Правильно я понимаю?
Т.е. если включены SmartFetch и LiveBlock, то нужно включать еще и третий спец. параметр "FetchAll"? Правильно я понимаю?
- Ср 17 мар 2021 11:09
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
Когда я вызываю метод Insert, то появляется исключение:
Очень плохо, что uniDAC не показывает в какой SQL-секции произошло исключение и что именно за запрос вызвал это конкретное исключение.
откуда 113, если в запросе всего до 60 символов?Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 113
).
Очень плохо, что uniDAC не показывает в какой SQL-секции произошло исключение и что именно за запрос вызвал это конкретное исключение.
- Ср 17 мар 2021 09:34
- Форум: Universal Data Access Components
- Тема: Исключить COMPUTED BY поля для генератора запроса
- Ответы: 22
- Просмотры: 19683
Re: Исключить COMPUTED BY поля для генератора запроса
uniDAC 8.4.1, Firebord 3.
Теперь появилась другая проблема.
Исходный запрос:
все три поля редактируемые
вот скрипт создания таблицы
а вот автоматически сгенерированный запрос:
отсутствует поле deleted
а вот со сгенерированным запросом update проблемы нет:
вот процедура автогенерации запросов (вот снимок, где виден входящий sql-запрос http://prntscr.com/10nxr0e )
Теперь появилась другая проблема.
Исходный запрос:
Код: Выделить всё
select id, name, deleted from OPERATION
вот скрипт создания таблицы
Код: Выделить всё
CREATE TABLE OPERATION (
ID INTEG NOT NULL /* INTEG = INTEGER */,
NAME STRING32 /* STRING32 = VARCHAR(32) */,
OPER_SUPER_TYPE STRING128 /* STRING128 = VARCHAR(128) */,
DELETED FIB$BOOLEAN /* FIB$BOOLEAN = SMALLINT DEFAULT 0 CHECK (VALUE IN (0,1,NULL)) */
);
Код: Выделить всё
INSERT INTO OPERATION
(ID, NAME)
VALUES
(:ID, :NAME)
а вот со сгенерированным запросом update проблемы нет:
Код: Выделить всё
UPDATE OPERATION
SET
ID = :ID, NAME = :NAME, DELETED = :DELETED
WHERE
ID = :Old_ID
вот процедура автогенерации запросов (вот снимок, где виден входящий sql-запрос http://prntscr.com/10nxr0e )
Код: Выделить всё
procedure GenSQL(const UniQuery: TUniQuery; const aSelectSql: string = '');
Var
DAParamsInfo: TDAParamsInfo;
begin
// если параметр aSelectSql пустой, значит запрос живет UniQuery.SQL и тогда его не меняем
if not aSelectSql.IsEmpty then
UniQuery.SQL.Text := aSelectSql;
UniQuery.KeyFields := 'id';
if not UniQuery.Active then
UniQuery.Open;
TDBAccessUtils.SQLGenerator(UniQuery).SubstituteParamName := False;// для генерирования запроса с именованными параметрами
DAParamsInfo := TDAParamsInfo.Create(TDAParamInfo);
UniQuery.SQLInsert.Text := TDBAccessUtils.SQLGenerator(UniQuery).GenerateSQL(DAParamsInfo, _stInsert, true);
DAParamsInfo.Free;
DAParamsInfo := TDAParamsInfo.Create(TDAParamInfo);
UniQuery.SQLUpdate.Text := TDBAccessUtils.SQLGenerator(UniQuery).GenerateSQL(DAParamsInfo, _stUpdate, False);// Для Update 3й параметр = False
DAParamsInfo.Free;
DAParamsInfo := TDAParamsInfo.Create(TDAParamInfo);
UniQuery.SQLDelete.Text := TDBAccessUtils.SQLGenerator(UniQuery).GenerateSQL(DAParamsInfo, _stDelete, true);
DAParamsInfo.Free;
DAParamsInfo := TDAParamsInfo.Create(TDAParamInfo);
UniQuery.SQLRefresh.Text := TDBAccessUtils.SQLGenerator(UniQuery).GenerateSQL(DAParamsInfo, _stRefresh, true);
DAParamsInfo.Free;
end;
- Ср 17 мар 2021 09:09
- Форум: Universal Data Access Components
- Тема: Генератор SQL и псевдонимы полей
- Ответы: 3
- Просмотры: 5314
Генератор SQL и псевдонимы полей
Добрый день.
SQLGenerator некорректно генерирует insert/update запросы, если используются всевдонимы
Firebird 3.
Вот пример запроса:
вот так сгенерированные запросы выглядят после генерации:
и
по идее, псевдонимы не должны участвовать в insert/update?
SQLGenerator некорректно генерирует insert/update запросы, если используются всевдонимы
Firebird 3.
Вот пример запроса:
Код: Выделить всё
select id, name "имя", deleted "архив" from table1
Код: Выделить всё
INSERT INTO STREETS
(ID, NAME, DELETED)
VALUES
(:ID, :"имя", :"архив")
Код: Выделить всё
UPDATE STREETS
SET
ID = :ID, NAME = :"имя", DELETED = :"архив"
WHERE
ID = :Old_ID
- Вт 16 мар 2021 18:05
- Форум: Universal Data Access Components
- Тема: Data type mapping
- Ответы: 3
- Просмотры: 5302
Re: Data type mapping
Спасибо.
Буду знать.
Но... Если вопрос касается производительности, то тогда другое дело.
Тогда вопрос вдогонку. Может у вас какая-то статистика, информация или рекомендации?
Может мне действительно переделать persistent-поля в smallint? Просто стоит ли на это тратить время? Как понять, как определить?
Например, почувствую ли я разницу на таблице в 1000 записей, в 100 тыс или только если записей будет более миллиона?
Буду знать.
Но... Если вопрос касается производительности, то тогда другое дело.
Тогда вопрос вдогонку. Может у вас какая-то статистика, информация или рекомендации?
Может мне действительно переделать persistent-поля в smallint? Просто стоит ли на это тратить время? Как понять, как определить?
Например, почувствую ли я разницу на таблице в 1000 записей, в 100 тыс или только если записей будет более миллиона?
- Вт 16 мар 2021 14:34
- Форум: Universal Data Access Components
- Тема: Data type mapping
- Ответы: 3
- Просмотры: 5302
Data type mapping
В новой версии uniDAC (8.4.1) теперь ошибка, если в базе (firebird) поле smallint, но оно считается, как boolean.
И посыпалось куча ошибок. И теперь много переделывать.
Могли бы оставить обратную совместимость :(
Можно было бы в колонку Database type (http://prntscr.com/10n9dvh ) добавить не только типы, но и название доменов.
Например, если домен содержит в имени "boolean", то это автоматически приравнивается к boolean даже если поле типа smallint.
И еще неудобство. В выпадающих списка нет контекстного поиска и сортировки. Полей в таблице много и пока найдешь нужное, то в глазах уже, извините, рябит.
Старая версия uniDAC насоздавала persistent-полей типа TBooleanField. А новая версия теперь ругается и выдает ошибки о несовместимости типов то в том месте программы, то в этом.
И посыпалось куча ошибок. И теперь много переделывать.
Могли бы оставить обратную совместимость :(
Можно было бы в колонку Database type (http://prntscr.com/10n9dvh ) добавить не только типы, но и название доменов.
Например, если домен содержит в имени "boolean", то это автоматически приравнивается к boolean даже если поле типа smallint.
И еще неудобство. В выпадающих списка нет контекстного поиска и сортировки. Полей в таблице много и пока найдешь нужное, то в глазах уже, извините, рябит.
Старая версия uniDAC насоздавала persistent-полей типа TBooleanField. А новая версия теперь ругается и выдает ошибки о несовместимости типов то в том месте программы, то в этом.