Skip to forum content
My Visual Database
A Simple Solution for Creating Databases
You are not logged in. Please login or register.
Active topics Unanswered topics
Search options (Page 4 of 16)
Доброго всем дня! И вновь нужна помощь.
На форме frmCards грид TableGrid1 отображает данные из таблицы card.
При клике по ячейке грида срабатывает процедура:
procedure frmCards_TableGrid1_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
frmCards.cbPerson.dbItemID := SQLExecute ('SELECT IFNULL(id_person, -1) FROM card WHERE id='+frmCards.TableGrid1.sqlValue);
end;
и в комбобоксе cbPerson появляется фамилия сотрудника.
Нужно чтобы одновременно на этой же форме в комбобоксах или текстбоксах появились данные сотрудника:
- departament;
- otdel;
- room;
- job
Как автоматически заполнить комбобокс 1 на форме card при выборе значения из грида? Заполнение Edit получается, но нужен именно комбобокс, так как его значение должно сохраниться в таблицу.
Спасибо, Дмитрий. Этот запрос работает
ID вычисляет, но не работает.
Без условия работает, но собирает все записи.
Скрипт такой:
SELECT
procedures.rozkrittiaDate,
procedures.proceduresSUM,
subjectProcedure.subjectName,
strftime('%d.%m.%Y',procedures.rozkrittiaDate),
phases.phase,
strftime('%d.%m.%Y',phases.dateEnd),
phases.status,
(CASE WHEN phases.status=1 then 'НА КОНТРОЛІ' WHEN phases.status=0 then 'ВИКОНАНО' else '' end)
FROM procedures
LEFT OUTER JOIN phases ON phases.id_procedures=procedures.id
LEFT OUTER JOIN subjectProcedure ON procedures.id_subjectProcedure=subjectProcedure.id
ORDER BY strftime('%d.%m.%Y',phases.dateEnd)
WHERE procedures.id={TableGrid1};
Подскажите пожалуйста, как правильно записать условие SQL отчёта, чтобы из разных таблиц отбирались записи только относящиеся к выбранному в гриде значению. Записал так, но даёт ошибку:
WHERE procedures.id=IntToStr(Form1.TableGrid1.dbItemID);
Без этого условия отчёт работает, но отбирает всё подряд.
DriveSoft wrote:Тогда так
Спасибо, Дмитрий! Наконец-то добрался до своего проекта. Благодаря Вам работает.
Сделал для Вас проект. Но к комбобоксу он никакого отношения не имеет.
Igor wrote:После сохранения открываю запись и обнаруживаю что должности и фамилии в комбоксах одинаковые.
Иначе и быть не может. Ведь оба комбобокса "Должность" привязаны к одному и тому же полю таблицы. Оба комбобокса ФИО также привязаны к одному полю. А в чём смысл наличия двух сотрудников на одной форме?
2. Как-то так:
procedure FrmPodrazdelenie_ComboBox1_OnChange (Sender: string);
begin
FrmPodrazdelenie.Edit1.Text := SQLExecute ('SELECT Tel FROM Sotrudnik WHERE id='+FrmPodrazdelenie.ComboBox1.sqlValue);
FrmPodrazdelenie.Edit2.Text := SQLExecute ('SELECT Email FROM Sotrudnik WHERE id='+FrmPodrazdelenie.ComboBox1.sqlValue);
end;
Дмитрий, это не то. Каждому значению, выбранному в комбобоксе, соответствует своё зачение, попадающее в Edit1. Для этой записи - это - 28 дней, для другой, например, + 7 дней, для третьей ещё какое-то...
Очень прошу посмотреть скрипт. Что в последней строке не так?
procedure frmAddPhases_ComboBox1_OnChange (Sender: string);
Var
sDate: string;
c: string;
begin
frmAddPhases.Edit1.Text := SQLExecute ('SELECT phasesFactor FROM proceduresPhase WHERE id='+frmAddPhases.ComboBox1.sqlValue);
frmAddPhases.DateTimePicker2.DateTime := frmAddTender.DateTimePicker2.DateTime;
sDate := frmAddPhases.DateTimePicker2.sqlDateTime;
c := frmAddPhases.Edit1.sqlValue;
if sDate <> '' then frmAddPhases.DateTimePicker1.DateTime := SQLDateTimeToDateTime((sDate)+(c)) else frmAddPhases.DateTimePicker1.Checked := False;
end;
Дата в DateTimePicker1 должна быть на 28 дней отличаться от даты в DateTimePicker2.
Такой код создания HTML:
procedure frmAll_ButtonHTML_OnClick (Sender: string; var Cancel: boolean);
///// СОЗДАНИЕ И ОТКРЫТИЕ HTML ФАЙЛА /////////////////
begin
frmAll.TableGrid1.SaveToHTML('Report\Control.html');
OpenFile('Report\Control.html');
end;
Результат на рисунке. Кракозябры - это буквы кириллицы.
Можно ли в скрипте прописать нужную кодировку?
Это оно! Спасибо огромное, Дмитрий!
Даже в EXCEL это решаемо. А тут сутки бьюсь, и всё никак. Неужели нет решения?
По описанной выше проблеме сделал пример.
В грид формы frmAll должны отбираться только те записи, у которых в названии обозначено НА КОНТРОЛЕ.
DriveSoft wrote:WHERE
task.status=1 AND subtask.status=1
Такая запись предполагает, что выполняться должны одновременно оба условия. В таком случае в результат не попадают задачи, не имеющие подзадач.
Нужно, чтобы было ИЛИ-ИЛИ.
Т.е.:
1) Есть task у которого task.status=1, но не содержащий подзадач subtask;
2) Есть task у которого task.status=1, включающий в себя подзадачи со статусами как subtask.status=1 так и subtask.status=0;
3) Есть task у которого task.status=0, но не содержащий подзадач subtask;
4) Есть task у которого task.status=0, включающий в себя подзадачи со статусами subtask.status=0;
В результате должны быть отобраны 1) и 2). Но у 2) только те subtask, статус которых subtask.status=1.
Пробовал вместо AND записать OR, но результата никакого - отбирает все записи подряд, и выполненные и не выполненные.
Прошу помощи в написании запроса.
SELECT
task.taskname,
strftime('%d.%m.%Y',task.dateEnd),
subtask.subtaskname,
strftime('%d.%m.%Y',subtask.dateEnd)
FROM task
LEFT OUTER JOIN subtask ON subtask.id_task=task.id
WHERE
task.status=1;
subtask.status=1;
ORDER BY strftime('%d.%m.%Y',task.dateEnd), strftime('%d.%m.%Y',subtask.dateEnd)
Сейчас у меня не выполняется второе условие. Нужно, чтобы в таблице были показаны все те задачи, статус которых равен 1 и только те подзадачи (а их у задачи может и не быть), статус которых равен 1. Если подзадача уже выполнена, т.е. её статус равен 0, то отбираться запросом она не должна.
На рисунке: субзадача "Найти первый орешек" выполнена и имеет статус = 0, поэтому в результат запроса попасть она не должна.
Спасибо, Дмитрий! Такой мудрёный скрипт - ни за что сам не сделал бы...
СПАСИБО!!!!!
По ходу ещё. А если в таблице group кроме поля group есть ещё текстовое поле, например zzz, как и его значение вывести в edZzz на форму?
Сделал пример для наглядности того, что мне хотелось бы получить.
А хотелось бы, чтобы при клике по строке грида и при навигации по гриду в компонентах формы отображались не только имя и Мемо, но также дата рождения (проблемы описаны выше) и группа (находится в другой таблице).
DriveSoft wrote:в sql запросе пропущено слово FROM
С FROM contact даёт ошибку (на рисунке)
теперь ругается на отсутствие колонки contact.birthday. В таблице и гриде она есть.
Пожалуйста подскажите, что не правильно в записи
Form1.dtpBirthday.DateTime := SQLExecute ('SELECT strftime('%d.%m.%Y',contact.birthday) WHERE id='+Form1.TableGrid2.sqlValue);
Ругается на скобку перед форматом даты.
DriveSoft wrote:сделал процедуру DoStatus для определения статуса
Спасибо огромное, Дмитрий. Как будто бы работает. Но погоняю ещё для полной уверенности.
Posts found: 76 to 100 of 376