Topic: работа с Grid

Дмитрий, искренне Вас приветствую !

Прошу помочь с несколькими вопросами:
1. как реализовать подсчёт количества вхождений в ту или иную запись с Grida ( счётчик активности записи)
    ( т.е. при двойном нажатии на ту или иную запись в Gride происходит открытие другой формы по данному выбору.)
    для меня актуальна данная активность и её подсчёт \ вывод информации о ней в тот же grid на главной форме.
    Причём было бы замечательно вести подсчёт по трем критериям: за сутки, за месяц, всего)
2. как реализовать: при активации той или иной строки записи в  Gride, в отдельном поле DBImage появляется соответствующее выбранной записи изображение.

Заранее благодарю
С Уважением
Олег

Re: работа с Grid

Дмитрий, сорри, ещё один вопрос:
возможно ли в Gride отключить нижний горизонтальный скролл. Вертикальный надо оставить.
Спасибо за оперативный ответ
С Уважением
Олег

Re: работа с Grid

Не совсем конечно понятно для чего убирать горизонтальный. в опциях таблицы вроде нет этого но можно задать размер колонок в % отношении от размера грида. при сумме % = 100% горизонтальный скрол уберется сам

Чучкин Евгений

Re: работа с Grid

Евгений, добрый день.
Горизонтальный скролл портит внешний вид интерфейса т.к. у меня не так много выводится колонок в gride/
Спасибо за Ваш совет - а нельзя ли чуть поподробнее, как реализовать данное предложение: играть с настройками или написать отдельный скрипт.
Спасибо
С Уваженнием
Олег

Re: работа с Grid

надо скрипт писать
сперва задаете переменную по общей длине таблицы типа
var
table: integer

потом создате процедуру на отрытии той формы где табля типа
procedure main_OnShow
begin
table:= main.TableGrid1.Width;
end;

туда же вписываете размеры колонок типа
main.TableGrid1.Columns[0].Width := table/100*30;
main.TableGrid1.Columns[1].Width := table/100*30;
main.TableGrid1.Columns[2].Width := table/100*40;

чтобы в итоге получилось:
procedure main_OnShow
begin
table:= main.TableGrid1.Width;
main.TableGrid1.Columns[0].Width := table/100*30;
main.TableGrid1.Columns[1].Width := table/100*30;
main.TableGrid1.Columns[2].Width := table/100*40;
end;


не уверен конечно но думается что должно получиться.
можно конечно проще пойти если у вас размер формы не зависит от размера экрана - статитеская то есть.
тогда проще - без всяких переменных задаете размер колонок
к примеру длина таблицы 1200 пикселей
main.TableGrid1.Columns[0].Width := 300;
main.TableGrid1.Columns[1].Width := 500;
main.TableGrid1.Columns[2].Width := 400;

Чучкин Евгений

Re: работа с Grid

Евгений, спасибо за совет.
Дали верное направление. Реализовал следующим образом: автоматическая установка ширина колонок ( по наименованию и по содержимому) и ....вуаля - скролл ушёл.
Спасибо
С уважением
Олег

Re: работа с Grid

oleg45112 wrote:

Дмитрий, искренне Вас приветствую !

Прошу помочь с несколькими вопросами:
1. как реализовать подсчёт количества вхождений в ту или иную запись с Grida ( счётчик активности записи)
    ( т.е. при двойном нажатии на ту или иную запись в Gride происходит открытие другой формы по данному выбору.)
    для меня актуальна данная активность и её подсчёт \ вывод информации о ней в тот же grid на главной форме.
    Причём было бы замечательно вести подсчёт по трем критериям: за сутки, за месяц, всего)
2. как реализовать: при активации той или иной строки записи в  Gride, в отдельном поле DBImage появляется соответствующее выбранной записи изображение.

Заранее благодарю
С Уважением
Олег


1. К сожалению не смог понять вопрос.

2. http://myvisualdatabase.com/forum/viewtopic.php?id=1059

Dmitry.

Re: работа с Grid

Дмитрий, добрый день.
Вопрос №2:  спасибо, как раз реализовал, как в предложенном Вами примере
Вопрос №1: на Form1 имеется TableGrid1 который содержит записи по запросу. При активации соответствующей записи (двойное нажатие левой кнопки мышки) открывается Form2 (просмотр\редактирование выбранной записи).
Мне как раз и надо производить подсчёт количества раз открытия записи ( или же переходов на форму просмотра\редактирования записи)
И что бы это количество отображалось в Form1.TableGrid1 в колонке с полем АКТИВНОСТЬ в строке соответствующей записи.

Я, как админ и руководитель, открыл главную форму (FORM1) и в TableGrid по колонке АКТИВНОСТЬ увидел бы самую востребованную клиентами услугу на данный момент времени и далее предпринимал бы некие маркетинговые действия по развитию отстающих услуг, т.е. тех у которых количество раз открытия самое маленькое.
Дмитрий, надеюсь мне удалось Вам объяснить смысл моего желания.
С Уважением
Олег

Re: работа с Grid

Я думаю задача проста если у вас структура базы еще не завершена.
создаете еще 1 таблицу (newtable) где всего параметр - дата (date).
на форму 2 (открытие записи из грида) навешиваете скрипт procedure form2_OnShow
куда вносите всего 1 строку
SQLExecute('insert into newtable (date) VALUES (nau));


на главной форме создаете несколько надписей Label1, Label2 и т.д

на закрытие  формы показа записи навешиваете скрипт подсчета количества записей в таблице по условиям (за день, месяц, год)
типа
form1.Label1.Caption :=SQLExecute('SELECT count(id) FROM newtable where date=' ____';')

ну и все
синтаксис как и раньше с косяками но принцип должен быть понятен.
Если будут траблы с синтаксисом скриптов - пишите. Хотя я всегда пытаюбсь сперва сам решить а потом уже беспокоить форумчан smile

Чучкин Евгений

Re: работа с Grid

хотя нет. наврал. прочитал немного внимательней требования. нужно видеть проект - но в принципе направление все равно то же самое только с корректировкой немного

Чучкин Евгений

Re: работа с Grid

По-моему, решений много. Я в силу своего мизерного опыта добавил бы поле в таблицу (допустим "count") и сделал бы событие на двойной клик по гриду, где

var
   sCount: integer;
begin
   sCount := SQLExecute('SELECT count FROM таблица WHERE id='+IntToStr(форма.TableGrid1.dbItemID)+1;
   SQLExecute('UPDATE таблица SET count='+sCount+' WHERE id='+IntToStr(форма.TableGrid1.dbItemID);
end;

Проверить сейчас возможности нет, да и, уверен, Дмитрий может оптимизировать решение. )

Но... Для начала. Это не может быть качественным показателем интереса. Ошибочный выбор, еще что-то... Тут, правда, по проекту смотреть надо. Может, на какое-то конкретное действие в открывшейся форме лучше бы действие привязал, чтоб погрешность "интереса" уменьшить, если я правильно понимаю. Если там выполняются какие-то действия.

Re: работа с Grid

oleg45112 wrote:

Дмитрий, добрый день.
Вопрос №1: на Form1 имеется TableGrid1 который содержит записи по запросу. При активации соответствующей записи (двойное нажатие левой кнопки мышки) открывается Form2 (просмотр\редактирование выбранной записи).
Мне как раз и надо производить подсчёт количества раз открытия записи ( или же переходов на форму просмотра\редактирования записи)
И что бы это количество отображалось в Form1.TableGrid1 в колонке с полем АКТИВНОСТЬ в строке соответствующей записи.

Я, как админ и руководитель, открыл главную форму (FORM1) и в TableGrid по колонке АКТИВНОСТЬ увидел бы самую востребованную клиентами услугу на данный момент времени и далее предпринимал бы некие маркетинговые действия по развитию отстающих услуг, т.е. тех у которых количество раз открытия самое маленькое.
Дмитрий, надеюсь мне удалось Вам объяснить смысл моего желания.
С Уважением
Олег

Приложите пожалуйста ваш проект, доработаю его.

Dmitry.