Topic: Вычислить последовательность

есть 10 дат в БД, как скриптом их вытащить и поместить в 10 чекбоксов так, что бы в чекбокс 1 была самая малая дата, а к чекбоксу 10 самая большая. Естественно с 2 по 9 так же была сортировка по принципу от меньшего к большему.

2 (edited by agatlogic101 2020-02-01 10:46:12)

Re: Вычислить последовательность

для вытаскивания данных, не знаю правильно или нет но такой вариант пробую
m1 := SQLExecute('SELECT дата FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата');
m2 := SQLExecute('SELECT дата FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 1,1');
m3 := SQLExecute('SELECT дата FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 2,1');
Если я правильно понимаю теперь нужно что бы эти данные поместились в checkbox?автоматически при открытие формы
то есть у меня есть переменная m1, m2, m3. Есть ли возможность что бы checkbox?= м1, checkbox?= значению м2 и так далее

Re: Вычислить последовательность

1 В условие заранее известно где дата больше?
2 10 дат берутся подряд?

4 (edited by sibprogsistem 2020-02-01 12:21:38)

Re: Вычислить последовательность

в общем вот вариант

procedure Form1_OnShow (Sender: TObject; Action: string);
var
list:TStringList;
i,c:integer;
begin
  list:=TStringList.Create;
  list.Text:=SQLExecute( 'SELECT group_concat(sdate, char(13) || char(10)) FROM q' );
  list.Sorted := True;
  c:=list.Count-1;
  for i:=0 to c do
  begin
   TCheckBox(Form1.FindComponent('CheckBox'+IntToStr(i))).Caption:=list[i];
  end;
  list.Free;
end;

есть проблема  ( установить лимит не получилось)

Post's attachments

Attachment icon test.7z 3.39 kb, 235 downloads since 2020-02-01 

5 (edited by agatlogic101 2020-02-01 15:39:58)

Re: Вычислить последовательность

Спасибо за пример, но я перепутал название чекбокса и комбобокса... мне нужно было комбобокса, извиняюсь. Но я придумал решение
procedure маршрутный_OnShow (Sender: TObject; Action: string);
begin
    megan1:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата');
    megan2:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 1,1');
    megan3:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 2,1');
    megan4:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 3,1');
    megan5:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 4,1');
    megan6:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 5,1');
    megan7:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 6,1');
    megan8:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 7,1');
    megan9:= SQLExecute('SELECT id FROM trainbook WHERE id_trip="'+idTrip+'" ORDER BY дата LIMIT 8,1');
    маршрутный.ComboBox1.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox1.dbItemID:= megan1;
    маршрутный.ComboBox1.dbUpdate;
    маршрутный.ComboBox2.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox2.dbItemID:= megan2;
    маршрутный.ComboBox2.dbUpdate;
    маршрутный.ComboBox3.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox3.dbItemID:= megan3;
    маршрутный.ComboBox3.dbUpdate;
    маршрутный.ComboBox4.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox4.dbItemID:= megan4;
    маршрутный.ComboBox4.dbUpdate;
    маршрутный.ComboBox5.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox5.dbItemID:= megan5;
    маршрутный.ComboBox5.dbUpdate;
    маршрутный.ComboBox6.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox6.dbItemID:= megan6;
    маршрутный.ComboBox6.dbUpdate;
    маршрутный.ComboBox7.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox7.dbItemID:= megan7;
    маршрутный.ComboBox7.dbUpdate;
    маршрутный.ComboBox8.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox8.dbItemID:= megan8;
    маршрутный.ComboBox8.dbUpdate;
    маршрутный.ComboBox9.dbFilter := 'id_trip="'+idTrip+'"';
    маршрутный.ComboBox9.dbItemID:= megan9;
    маршрутный.ComboBox9.dbUpdate;
end;
но только осталось маленькая дороботка. Мой скрипт нормально работает при первом открытии формы. Если открыть уже другую запись, то будет пусто, если второй раз опять её открыть то он сработает. То есть приходится открывать, закрывать и опять открывать что бы всё работало. Как исправить?