Последняя версия DataExpress 3 beta от 9 октября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Количество записей, получить в цикле ID каждой записи

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Пн июн 11, 2018 1:27 am

Уважаемые форумчане.
Здравствуйте! Помогите пожалуйста с задачей. Мне нужно из текущей формы создать разделы договора. при этом количество и название должно быть как в форме "шаблоны разделов". Сейчас получилось сделать это только в обычном цикле, но разделы шаблонов договоров будут постоянно изменятся, поэтому нужно нормальное решение. Не могу сообразить куда приделать RecordCount и MoveLast. Все пробы вызывают ошибку.
Прошу помощи. Заранее спасибо!
Код ниже.

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


procedure ButtonClick(Sender: TObject);
Var
Fm: TdxForm;
Fm2: TdxForm;
id:integer;
i:integer;
Q : TdxQueryGrid;

begin

id := Self.RecId;
Q := Self.Queries['РазделыВДоговоре'];
Fm2 := CreateForm('шаблоны разделов');


Fm := CreateForm('Раздел');
Fm.OpenRecord(0);


for i:=0 to 19 do
begin

Fm.Append;
Fm['Договор'] := Self.RecId;
Fm['раздел'] :=    i;

end;


DestroyForm(Fm);
q.Refresh;
end;

procedure Form_Create;
begin
 dxButton2.OnClick := @ButtonClick;
end; 


jurist23rus
Эксперт
Сообщения: 2438
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Количество записей, получить в цикле ID каждой записи

Сообщение jurist23rus » Пн июн 11, 2018 9:30 am

Задача поставлена невнятно. Базу приложите и объясните толком, что скрипт должен делать.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Пн июн 11, 2018 11:04 am

jurist23rus писал(а):Задача поставлена невнятно.


EXPERTLAB.zip
(156.34 КБ) 11 скачиваний


Пароль Админа 123456*
БД в альфа-стадии.

В форме "Договор" есть кнопка "заполнить разделы" и соответственно создаются эти разделы договор, чтобы вручную не заполнять.
Количество разделов и названия берутся из шаблонов разделов.
Нужно получить количество этих шаблонов, и присвоить ID шаблона к конкретному разделу.

Ну вот наверное и все.

Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Пн июн 11, 2018 12:12 pm

хотя стащил идею отсюда. кажется работает.

cordek писал(а):долго перебирал варианты, в итоге пришел к такой структуре

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

procedure CreateSamples(Sender: TObject);
var
  Pr, Sm: TdxForm;
  Q, T: TdxQueryGrid;
  i, n, ID: Integer;
begin
  Self.Edit;
  //while Self.EOF = False do //для импорта всех заявок
  //begin //для импорта всех заявок
  // Если проб нет, то выходим, иначе продолжаем.
  Q := Self.Queries['Пробы1'];
  Q.Refresh;
  if Self['Пробы'] = 0 then Exit;
    Q.DisableControls;
    Q.MoveFirst;
     // Создаем экземпляр форм "Пробы" и "Образцы".
    Pr := CreateForm('Пробы');
    Sm := CreateForm('Образцы');
    while Q.Eof = False do  // пока есть строки в запросе выполняется действие
     begin
       // Считываем из базы конкретную запись, которая выделена в запросе.
       ID := Q.RecId;
       Pr.OpenRecord(ID);
       n := Pr.AsI['Количество_образцов'];
       T := Pr.Queries['Образцы на исследование'];
       Pr.Edit;
       T.Refresh;
       i := Pr.AsI['I'];
       // Создаем новые записи в цикле.
          while i < n do
           begin
           Sm.Open;
           Sm.Append;
           i := i + 1;
           Sm['Шифр_пробы'] := ID;
            IF n = 1 Then Sm['Номер_образца'] := 0
            else Sm['Номер_образца'] := i;
            Sm.Post;
            Sm.Close;
           end;
        T.Refresh;
        Pr.Post;
        Pr.Close;
        Q.MoveNext;
        end;
    //Очищаем формы;
    Pr.free;
    Sm.free;
    Q.EnableControls;
    Q.Refresh;
     //Обновляем запрос к форме Образцы;
    dxQueryGrid3.Refresh;
  //Self.MoveNext; // //для импорта всех заявок
  //end; // //для импорта всех заявок
end;

вроде работает, исключений не возникает.

jurist23rus
Эксперт
Сообщения: 2438
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Количество записей, получить в цикле ID каждой записи

Сообщение jurist23rus » Пн июн 11, 2018 12:21 pm

Ну и хорошо.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Вт июн 12, 2018 1:16 am

jurist23rus писал(а):Ну и хорошо.


как казалось не совсем хорошо. Иногда возникает ошибка

неожиданное исключение.PNG
неожиданное исключение.PNG (16.01 КБ) 435 просмотров


Лечится перезагрузкой БД. можете подсказать, в чем причина?

EXPERTLAB.12.06.zip
(214.54 КБ) 11 скачиваний


Пароль на админа: 123456*

jurist23rus
Эксперт
Сообщения: 2438
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Количество записей, получить в цикле ID каждой записи

Сообщение jurist23rus » Вт июн 12, 2018 10:47 am

Какие действия нужно совершить, чтобы появилась ошибка?
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Вт июн 12, 2018 11:10 am

создаю новый договор
новый договор.PNG
новый договор.PNG (17.39 КБ) 406 просмотров


сохраняю его
сохранить.PNG
сохранить.PNG (37.77 КБ) 406 просмотров


заполняю данные (тут собственно и работает скрипт)
заполняю.PNG
заполняю.PNG (69.52 КБ) 406 просмотров


нажимаю двойным щелчком на разделе
опараз.PNG
опараз.PNG (85.12 КБ) 406 просмотров


или перехожу в во вкладку, и там нажимаю двойным щелчком
опадва.PNG
опадва.PNG (53.43 КБ) 406 просмотров


причем это происходит где то в 50% случаев. т.е. 50% отрабатывает нормально.

jurist23rus
Эксперт
Сообщения: 2438
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Количество записей, получить в цикле ID каждой записи

Сообщение jurist23rus » Вт июн 12, 2018 11:27 am

На форме "Раздел" отключите Логер и ошибка должна исчезнуть.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
rausNT
Знаток
Сообщения: 473
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Количество записей, получить в цикле ID каждой записи

Сообщение rausNT » Вт июн 12, 2018 11:35 am

jurist23rus писал(а):На форме "Раздел" отключите Логер и ошибка должна исчезнуть.

попробую, но как раз там логгер очень нужен.