Не генерируется запрос _stUpdate (GenerateSQL)

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Пн 12 июл 2021 12:42

Сколько лет работаю с uniDAC, первый раз о таком слышу.
Странно, что мне техподдержка не посоветовала изначально просто оставить эти свойства пустыми и не пилить свой велосипед с TDBAccessUtils.SQLGenerator().


Ладно. Вдогонку еще вопрос. Если мне нужно, чтобы uniQuery не генерировал свои update-запросы, какое свойство нужно отключить?

Спасибо.

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Вт 13 июл 2021 07:53

Как мы уже писали в предыдущем посте, для отключения автоматической генерации запроса его необходимо сгенерировать в дизантайме или установить вручную.
Более подробно о компоненте TUniQuery вы можете прочитать по ссылке:
https://www.devart.com/unidac/docs/deva ... iquery.htm .
О его свойствах, методах, событиях:
https://www.devart.com/unidac/docs/deva ... embers.htm .
Вы использовали внутренние методы, которые предназначены для внутреннего использования, поэтому их поведение может измениться в новых версиях и это никак не будет отражено в документации. Поэтому мы не рекомендуем их использовать.
Наши ответы зависят от вашего обращения в техподдержку. Если бы вы спросили, есть ли возможность генерировать SQL запросы в run-time без объяснения для чего это вам надо, то наша техподдержка могла вам предложить такое решение.

С уважением,
Евгений
Последний раз редактировалось EvgeniyM Вт 13 июл 2021 07:59, всего редактировалось 1 раз.

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Вт 13 июл 2021 07:54

Вы не поняли, наверное.
Как сделать, чтобы тела update-запросов были пустыми.

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Вт 13 июл 2021 11:05

Как было указано ранее, свойства SQLInsert, SQLUpdate, SQLDelete, SQLRefresh по-умолчанию имеют пустое значение. В таком случае, при выполнении DML-операций соответствующие SQL-запросы будут сгенерированы автоматически. Если для любого ил указанных свойств будет установлен SQL-запрос в runtime, либо с использованием редактора в design-time - то будет использован этот запрос.
Что вы имеете ввиду под "тела update-запросов были пустыми"? Мы подразумеваем под этим SQUpdate.Text := ''.

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Вт 13 июл 2021 11:28

Мы подразумеваем под этим SQUpdate.Text := ''.
Все верно.
Что нужно отключить, чтобы после uniQuery.Open sql-запросы (SQUpdate, SQLInser, SQLDelete) оставались пустыми.
Фактически мне нужен только Select запрос.

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Вт 13 июл 2021 13:13

Ничего отключать не нужно. Как было указано ранее, свойства SQLInsert, SQLUpdate, SQLDelete, SQLRefresh по-умолчанию и так имеют пустое значение. Если не устанавливать их вручную - то для DML-операций будут автоматически генерироваться нужные запросы в момент изменения данных. Свойства SQLInsert, SQLUpdate, SQLDelete, SQLRefresh при этом останутся пустыми.
Поэтому если вы вызвали метод Open и не выполняли изменений данных никакие заппросы на изменения формироваться не будут.

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Вт 13 июл 2021 13:50

DML-операций будут автоматически генерироваться нужные запросы
в третий раз пишу: мне этого не нужно, как это отключить?

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Ср 14 июл 2021 10:29

Уточните, пожалуйста, что именно Вы хотите отключить?
Если Вы вообще не собираетесь использовать редактирование данных в датасете - Вы можете установить свойство датасета ReadOnly в True.
Иначе - будет работать то поведение, которое мы описывали: либо будут использоваться запросы SQLInsert, SQLUpdate, SQLDelete, SQLRefresh (если Вы их задали явно), либо соответствующие запросы на изменение данных будут генерироваться автоматически.

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Ср 14 июл 2021 10:43

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

Уточните, пожалуйста, что именно Вы хотите отключить? 
создание (автогенерацию) update-запросов.

Извините, я уже и не знаю, как вам пояснить :(

что именно в моем вопрос непонятно? какое из слов?

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Ср 14 июл 2021 10:53

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

Если Вы вообще не собираетесь использовать редактирование данных в датасете - Вы можете установить свойство датасета ReadOnly в True. 
Вообще - тоже не подходит.
Проблема в том, что, если включить ReadOnly, то сетка DBGrid часть полей "рисует" серыми.

По идее, датасет должен быть условно редактируемым, т.е. чтобы сетка "думала", что датасет редактируемый, а самом деле у датасета есть только select и refresh запросы. Как-то так.

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Ср 14 июл 2021 10:56

Проблема с форумом - не могу прикрепить картинку к сообщению.
В статусе написано "Не удалось прикрепить вложение".

Не знаю, куда сообщить, поэтому пишу здесь.

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Ср 14 июл 2021 11:14

Запросы генерируются исключительно для изменения данных на сервере. Если изменения данных не происходит - они не генерируются.

Кроме этого если установить свойство LocalUpdate в True запросы генерироваться не будут. Но и на сервер никакие изменения уходить тоже не будут.

В режиме LocalUpdate данные в наборе данных изменяются локально, но информация об изменениях не сохраняется. Таким образом, вы не можете отправить изменения в базу данных.
Информация о режиме LocalUpdate доступна по ссылке:
https://www.devart.com/unidac/docs/deva ... update.htm

Akella
Сообщения: 210
Зарегистрирован: Пн 02 апр 2012 14:41

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение Akella » Ср 14 июл 2021 11:16

Кроме этого если установить свойство LocalUpdate в True запросы генерироваться не будут. Но и на сервер никакие изменения уходить тоже не будут.
Спасибо!

EvgeniyM
Сообщения: 8
Зарегистрирован: Пт 14 май 2021 08:21

Re: Не генерируется запрос _stUpdate (GenerateSQL)

Сообщение EvgeniyM » Ср 14 июл 2021 14:16

Мы рады слышать, что проблема решена. Обращайтесь если у Вас возникнут другие вопросы или Вам потребуется дополнительная информация.

Ответить