Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Понятно. Может быть вам попадался какой-либо проект с похожей реализацией скриптом? т.е. в зависимости от значения в столбце другому присвоить следующее значение.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Можете описать вашу ситуацию более подробней, постараюсь помочь.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Например: есть таблица. В ней 4 столбца(поля):
1) Количество запущенных плат
2) Количество изготовленных плат
3) Разность полей 1) и 2)
4) Статус партии.
Если разность не равна нулю, то статусу будет присвоено значение 'Не завершено'
Как только разность станет равной нулю - Статус изменится на 'Завершено'.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

В вашем случае достаточно выч. поля (Статус партии):

CASE WHEN поле_Количество_запущенных_плат - поле_Количество изготовленных плат <= 0 THEN 'Завершено' else 'Не завершно' end
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Замечательно!Все работает как нужно)Спасибо, Дмитрий.

Evgeniy

31 (edited by Nervis 2015-06-24 11:34:07)

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день! Вопрос следующий: есть форма поиска. В ней несколько полей и комбобоксов. Заполнив одно или несколько этих полей понадобилось оперативно их очистить. Для этого создаем кнопку с процедурой по очистке текстовых полей и боксов. Очистка подходит для текстового поля, а вот в боксе она разумеется удаляет все значения подчистую. У каждого элемента есть состояние по умолчанию. Как на него выйти из скрипта?

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Для комбобокса можно так

Form1.ComboBox1.dbItemID := -1;
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день.
Понадобилось создать для БД простой журнал посещений (имя пользователя, дата входа, дата выхода). 1)Авторизация по логину и паролю в БД уже есть соответственно. При успешной авторизации в БД открывается главная форма. Переменной sUser присваивается имя пользователя, затем с помощью следующего sql-запроса пробую записать значение переменной в соответствующую таблицу autorisationjournal.

SQLExecute('INSERT INTO autorisationjournal (name_of_user) VALUES ('+sUser+');');

Программа запускается с ошибкой - в таблице нет колонки с именем пользователя. Подобные ошибки мне уже встречались ранее, их удавалось как-то отладить, но общего порядка действия я так и не понял.
2)На главной форме расположены компоненты DataTimePicker, предназначенные для изъятия текущей даты и времени.

SQLExecute('INSERT INTO autorisationjournal (date/time_enter, date/time_exit) VALUES (''+Form1.DateTimePicker1.sqlDateTime+','+Form1.DateTimePicker2.sqlDateTime+'');');

Программа указывает на отсутствие идентификатора для sqlDateTime. Подскажите как именно это тип данных, для объявления в глобальных/локальных переменных. Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis

1. попробуйте так:

SQLExecute('INSERT INTO autorisationjournal (name_of_user) VALUES ('''+sUser+''');');

2.  и так, если все равно будет ругаться на sqlDateTime, скорей всего у вас старая версия программы

SQLExecute('INSERT INTO autorisationjournal (date/time_enter, date/time_exit) VALUES ('+Form1.DateTimePicker1.sqlDateTime+','+Form1.DateTimePicker2.sqlDateTime+');');
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

C именем пользователя получилось. А вот с датами к сожалению нет. Версия программы 1.46.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Возможно ли после определения текущей даты и времени присвоить их переменной(переменным), а затем отправить в таблицу sql-запросом, так же как мы поступили с sUsers? т.е. дату преобразовать в текст. Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Попытался обойтись без sql и сделать все обычным скриптом. Но вновь столкнулся с проблемой.
У нас есть таблица. В ней 3 колонки (имя пользователя, дата входа и дата выхода). При открытии главной формы кнопкой сохраняется имя пользователя и текущее время. При закрытии главной формы 2-ой кнопкой сохранения записываем в таблицу последнюю дату. Информация должна сохраниться в одной строке, но на деле сохраняется отдельно в 2-х строках. Подобный пример на картинке. Можно ли как-то обойти это? Спасибо)

Post's attachments

Attachment icon журнал посещений.PNG 5.54 kb, 302 downloads since 2015-07-14 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis wrote:

C именем пользователя получилось. А вот с датами к сожалению нет. Версия программы 1.46.

для версии 1.46 можно так

SQLExecute('INSERT INTO autorisationjournal (date/time_enter, date/time_exit) VALUES ('''+FormatDateTime('yyyy-MM-DD hh:nn:ss.000', Form1.DateTimePicker1.DateTime)+''','''+FormatDateTime('yyyy-MM-DD hh:nn:ss.000', Form1.DateTimePicker2.DateTime)+''');');
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis wrote:

Попытался обойтись без sql и сделать все обычным скриптом. Но вновь столкнулся с проблемой.
У нас есть таблица. В ней 3 колонки (имя пользователя, дата входа и дата выхода). При открытии главной формы кнопкой сохраняется имя пользователя и текущее время. При закрытии главной формы 2-ой кнопкой сохранения записываем в таблицу последнюю дату. Информация должна сохраниться в одной строке, но на деле сохраняется отдельно в 2-х строках. Подобный пример на картинке. Можно ли как-то обойти это? Спасибо)

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

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Журнал посещений - Form10
Компоненты для заполнения - Form11

Post's attachments

Attachment icon Проект Базы SMD.7z 37.18 kb, 484 downloads since 2015-07-14 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis wrote:

Журнал посещений - Form10
Компоненты для заполнения - Form11

Поправил.

Post's attachments

Attachment icon Проект Базы SMD_fixed.zip 30.65 kb, 464 downloads since 2015-07-14 

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Получается при сохранении информации в одну таблицу разными кнопками будут создаваться отдельные строки. Вам же  удалось на одну клавишу повесить сохранение всех элементов, но в то же время она действует дважды для 2-ух событий. Очень здорово, но не совсем понятно как это работает. Большое вам спасибо, Дмитрий))

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Здравствуйте. Небольшие вопросы:
1) Возможно ли настраивать окно возникающее в результате команды showmessage?
2) А также - возможно ли менять цвет окантовки любого окна(не фона) или же это целиком и полностью зависит от выбранной цветовой темы в Windows?
Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Здравствуйте,


1. О каких именно настройках идет речь?

2. Это зависит от темы Windows, нет возможности это изменить.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

1. По умолчанию имя этого окна соответствует названию файла базы. Хотелось бы его изменить.+Форматирование текста сообщения в самом окошке. Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis wrote:

1. По умолчанию имя этого окна соответствует названию файла базы. Хотелось бы его изменить.+Форматирование текста сообщения в самом окошке. Спасибо)

Изменить заголовок сообщения пока нельзя.
В тексте сообщения можете вставлять перенос строки, например:

ShowMessage('Строка 1' + #13 + 'Строка 2');
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Спасибо, Дмитрий) Буду знать.
Вопрос по комбобоксам. Чтобы задать пустое значение нужно использовать скрипт:

Form1.ComboBox1.dbItemID := -1;

А как задать условие того, что комбобокс пустой?

if если комбобокс пустой then выполнить какое-то действие

Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis

if Form1.ComboBox1.dbItemID = -1 then ...
Dmitry.

49 (edited by Nervis 2015-07-22 12:10:43)

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Спасибо, сработало) казалось бы всего лишь двоеточие))
Взял скрипт из одного вашего примера по раскрашиванию ячеек таблицы в зависимости от содержимого ячейки.

procedure Form8_TableGrid1_OnChange (Sender: string);
var   i,c: integer;
begin
     c := Form8.TableGrid1.RowCount - 1;
     for i := 0 to c do
     begin
         if (Form8.TableGrid1.Cells[10,i]=0) then Form8.TableGrid1.Cell[10,i].Color := clYellow;
         if (Form8.TableGrid1.Cells[10,i]<0) then Form8.TableGrid1.Cell[10,i].Color := clRed;
         if (Form8.TableGrid1.Cells[10,i]>0) then Form8.TableGrid1.Cell[10,i].Color := clGreen;         
     end;
end;

Но в моем случае нужно сравнить не с какой-то текстовой информацией, а относительно нулевого значения. Программа разумеется не понимает, пишет, что типы невозможно сравнить. Как поступить?
10 колонка в таблице - это вычисляемое поле

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Немножко подумав, допилил и все заработало)

procedure Form8_TableGrid1_OnChange (Sender: string);
var   i,c: integer;
begin
     c := Form8.TableGrid1.RowCount - 1;
     for i := 0 to c do
     begin
         if (Form8.TableGrid1.Cells[10,i]=IntToStr(0)) then Form8.TableGrid1.Cell[10,i].Color := clYellow;
         if (Form8.TableGrid1.Cells[10,i]<IntToStr(0)) then Form8.TableGrid1.Cell[10,i].Color := clRed;
         if (Form8.TableGrid1.Cells[10,i]>IntToStr(0)) then Form8.TableGrid1.Cell[10,i].Color := clGreen;
     end;
end;
Evgeniy