powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC. Работа с FDScript
20 сообщений из 20, страница 1 из 1
FireDAC. Работа с FDScript
    #40049763
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть желание выполнять произвольные фрагменты SQL-кода.
Обычный FDQuery выполняет только один оператор.
FDScript нормально выполняет несколько операторов. Но..
Непонятно, как получить кол-во RowAffected.
Spool выводит только значение последнего оператора, а хотелось бы отдельно по всем операторам.
Непонятно, как получать SQL-код каждого шага. Можно ли для этого заюзать FDScriptParser ?

Хотелось бы по каждому выполненному оператору получать что-то типа:

update .....
(affected 10 rows, 20ms)

delete from .....
(affected 2 rows, 10ms)
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049766
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049772
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, как он работает.
Он выполняет сразу все операторы.
Т.е. выполняется аналогично ExecuteAll.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049779
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.03.2021 11:27, L_argo пишет:
> Я не понял, как он работает.
> Он выполняет сразу все операторы.
> Т.е. выполняется аналогично ExecuteAll.

а ты терминатор настроил?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049780
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

02.03.2021 11:27, L_argo пишет:
> Я не понял, как он работает.
> Он выполняет сразу все операторы.
> Т.е. выполняется аналогично ExecuteAll.

а ты терминатор настроил?
Настройки терминатора ни как на это не повлияли. И в доке сказано, что терминатор необязателен.

Документация у Эмбы вааще идиотская.

Как получить текущий фрагмент выполняемого SQL-кода (тот самый Step) ?
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049783
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.03.2021 11:57, L_argo пишет:
> Как получить текущий фрагмент выполняемого SQL-кода (тот самый Step) ?

жди, пока объявится родитель всего этого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049784
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Он выполняет сразу все операторы.
Т.е. выполняется аналогично ExecuteAll.
Что показывает отладка?
L_argo
Как получить текущий фрагмент выполняемого SQL-кода (тот самый Step) ?
Вам не нужно его получать. Компонент сам разберет скрипт на операторы. Максимум, что может понадобиться сделать - это перед выполнением добавить
Код: pascal
1.
FDScript.Position := 0;


Весь код должен быть таким
Код: pascal
1.
2.
3.
4.
5.
6.
FDScript.LoadScript(...);
FDScript.Position := 0;
while not FDScript.Eof do begin
  FDScript.ExecuteStep;
  .......
end;
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049787
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

Может у вас в скрипте ошибка? Если он не большой, то сбросьте сюда под кат. Если большой, то сбросьте первые и последние 10 строк скрипта.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049830
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
L_argo,

Может у вас в скрипте ошибка? Если он не большой, то сбросьте сюда под кат. Если большой, то сбросьте первые и последние 10 строк скрипта.
В скрипте ошибки нет. Он крайне прост и нормально выполняется.

Проблема в возможности вывести инфу про выполнение каждого оператора.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049832
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
В скрипте ошибки нет.
Ага. Ошибка где угодно, только не в вашем коде
L_argo
Он крайне прост и нормально выполняется.
Ну так покажите его
L_argo
Проблема в возможности вывести инфу про выполнение каждого оператора.
Проблема в вашем неумении/нежелании читать, что вам пишут
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049974
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так покажите егоОК.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
update city
set statusid = statusid+1  
where id = 0;

update city
set statusid = statusid+2
where id = 1;  

update city
set statusid = statusid+3  
where id = 2;

помогло ? :)
Как получить по этому скрипту такой результат:

affected 1 row
affected 1 row
affected 1 row

?
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049981
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И FDScript.Position := 0
нельзя вот так присвоить. т.к. это TPoint;

SQL-код попадает в FDScript так (из TMemo) :

scRun.SQLScripts.Add.SQL.text := mem.SelText
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049983
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049988
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049989
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так осталась сущая мелочь: там же посмотреть как этот feedback ловить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40049998
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Ну так осталась сущая мелочь: там же посмотреть как этот feedback ловить.
Это просто теоретическое размышление ?
Куда именно смотреть ?

У меня 3 оператора отрабатывают за один step.
И в ответе по OnSpoolPut все три оператора вместе. И кол-во строк (affected) указано одно от последнего оператора.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40050006
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а эта часть документации не поможет?

Getting Feedback
To create an execution log, you can enable spooling as from Delphi code, by using the SpoolOutput and SpoolFileName options, as from a SQL script using the <code>SPOol <name></code> or <code>OUTput <name></code> commands. The content of the spool output is controlled by the EchoCommands, FeedbackCommands, AutoPrintParams, FeedbackScript, IgnoreError, Timing, ColumnHeadings, PageSize, ServerOutput options.

You can use the TFDGUIxScriptDialog component to allow a script execution engine to communicate with an end-user using a dialog. To interact with the end-user TFDScript, use events such as OnConsoleGet, OnConsolePut, OnGetText, OnPause, etc. this dialog provides a standard implementation for these events. To show an execution progress, TFDScript needs to know the total length of all scripts to be executed. For that, call the ValidateAll method before starting a script execution.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40050011
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди
а эта часть документации не поможет?

Getting Feedback
To create an execution log, you can enable spooling as from Delphi code, by using the SpoolOutput and SpoolFileName options, as from a SQL script using the <code>SPOol <name></code> or <code>OUTput <name></code> commands. The content of the spool output is controlled by the EchoCommands, FeedbackCommands, AutoPrintParams, FeedbackScript, IgnoreError, Timing, ColumnHeadings, PageSize, ServerOutput options.

You can use the TFDGUIxScriptDialog component to allow a script execution engine to communicate with an end-user using a dialog. To interact with the end-user TFDScript, use events such as OnConsoleGet, OnConsolePut, OnGetText, OnPause, etc. this dialog provides a standard implementation for these events. To show an execution progress, TFDScript needs to know the total length of all scripts to be executed. For that, call the ValidateAll method before starting a script execution.
Это давно прочитано.
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40050048
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

Так и что возвращается в событии OnSpoolPut ?
...
Рейтинг: 0 / 0
FireDAC. Работа с FDScript
    #40050566
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747
L_argo,

Так и что возвращается в событии OnSpoolPut ?
И по ExecuteAll и ExecuteStep однократно все 3 оператора. А счетчик обработанных строк -результат от последнего оператора и время выполнения всего батча.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC. Работа с FDScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]