1 (edited by kunar80 2016-09-02 11:23:39)

Topic: Проект по учёту материальных ценностей и их закреплению за работниками

Доброго всем дня!
Прошу помощи в моей проблеме. Не работают строки 167 и 188 кода:

156 procedure frmMain_tgUnit_OnCellClick (Sender: string; ACol, ARow: Integer);
157 begin
158 frmMain.Button6.Enabled := True;
159 ///// ОТОБРАЖЕНИЕ ДАННЫХ ПРИ КЛИКЕ /////////////////////////////////////////////
160 frmMain.Edit1.Text := SQLExecute ('SELECT mfr FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
161 frmMain.Edit4.Text := SQLExecute ('SELECT mfrYear FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
162 frmMain.ComboBox1.dbItemID := SQLExecute ('SELECT id_UnitGroup FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
163 frmMain.ComboBox2.dbItemID := SQLExecute ('SELECT id_UnitName FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
164 frmMain.ComboBox5.dbItemID := SQLExecute ('SELECT IFNULL(id_Unit, -1) FROM Fixed WHERE
Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
165   if frmMain.ComboBox5.dbItemID<>-1 then
166   begin
167    frmMain.cbPerson.dbItemID := SQLExecute ('SELECT IFNULL(id_Person, -1) FROM Fixed WHERE Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
168    frmMain.edRoom.Text := SQLExecute ('SELECT fixedRoom FROM Fixed WHERE Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
169    end;
170    if frmMain.ComboBox5.dbItemID=-1 then
171    begin
172    frmMain.edRoom.Text := '';
173    frmMain.cbPerson.dbItemID := -1;
174    end;
175 end;
176
177 procedure frmMain_tgUnit_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
178 begin
179 frmMain.Button6.Enabled := True;
180 ///// ОТОБРАЖЕНИЕ ДАННЫХ ПРИ КЛИКЕ /////////////////////////////////////////////
181 frmMain.Edit1.Text := SQLExecute ('SELECT mfr FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
182 frmMain.Edit4.Text := SQLExecute ('SELECT mfrYear FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
183 frmMain.ComboBox1.dbItemID := SQLExecute ('SELECT id_UnitGroup FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
184 frmMain.ComboBox2.dbItemID := SQLExecute ('SELECT id_UnitName FROM Unit WHERE id='+frmMain.tgUnit.sqlValue);
185 frmMain.ComboBox5.dbItemID := SQLExecute ('SELECT IFNULL(id_Unit, -1) FROM Fixed WHERE Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
186     if frmMain.ComboBox5.dbItemID<>-1 then
187     begin
188     frmMain.cbPerson.dbItemID := SQLExecute ('SELECT IFNULL(id_Person, -1) FROM Fixed WHERE Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
189     frmMain.edRoom.Text := SQLExecute ('SELECT fixedRoom FROM Fixed WHERE Fixed.id_Unit='+frmMain.tgUnit.sqlValue);
190     end;
191     if frmMain.ComboBox5.dbItemID=-1 then
192     begin
193     frmMain.edRoom.Text := '';
194    frmMain.cbPerson.dbItemID := -1;
195    end;
196 end;

Т.е., если конкретная железка выдана конкретному человеку и в гриде tgUnit для этой железки сформировалась отметка "ВЫДАНО", то при навигации по гриду в cbPerson формы frmMain хочу видеть фамилию этого конкретного человека.
Проект во вложении.

Post's attachments

Attachment icon Проект.rar 17.41 kb, 439 downloads since 2016-09-01 

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Мозги закипают, время идёт, работа стоит. Ну никак не пойму, в чём ошибка! Прошу помощи! SOS!

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

К сожалению не смогу помочь с этим вопросом, т.к. для его решения необходимо понять весь проект и его структуру.

Dmitry.

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Жаль. Но обращение было не только к Вам, Дмитрий. Если кого-то интересует проект по учёту мат. ценностей и их закреплению за сотрудниками - добро пожаловать в проект. Жду посильной помощи. Ранее выложенная проблема до сих пор не решена, а это важно.

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Имеется такой скрипт, и он работает:

procedure frmCard_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
// при создании новой записи, фильтруем инвентарные номера, чтобы видеть только непривязанные
frmFixed.ComboBox3.dbFilter:='(SELECT count(*) FROM Fixed WHERE fixed.id_Unit = Unit.id)=0';
end;

Т.е., если предмет уже выдан, то повторно его выдать нельзя. Но возникают ситуации, когда предмет неисправен или находится в ремонте, а значит его тоже нужно отфильтровать.
Для этого в таблицу Unit добавил поле remont типа ДА/НЕТ.
Как в приведенный выше код дописать ещё условие, что Unit.remont=0?

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Когда нужно по выделенной в гриде строке выковырять какую-либо информацию я поступаю следующим образом:
1. Простой запрос:
Main_Form.Characteristics_Memo_EquipmentsShow.Text := SQLExecute('SELECT Characteristics FROM Equipments WHERE id=' + IntToStr(Main_Form.TableGrid_Equipments.dbItemID) );

2. Если нужно выковырять из связанных таблиц через 2 таблицы, то посложнее:
MovingsEquipments_Form.Post_Edit.Text := SQLExecute('SELECT Post FROM Posts LEFT OUTER JOIN Employees ON Employees.id_Posts=Posts.id WHERE Employees.id=' + IntToStr(MovingsEquipments_Form.Employee_ComboBox.dbItemID));

7 (edited by kunar80 2016-09-05 14:09:55)

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Спасибо большое.  С ковырянием из грида вопрос уже решён.

Не боги горшки лепят!

8 (edited by kunar80 2016-09-05 15:30:12)

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Люди!!!! Помогите!!!! Подскажите!!!!
Застрял на скрипте:

procedure frmCard_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
// при создании новой записи, фильтруем инвентарные номера, чтобы видеть только непривязанные
frmFixed.ComboBox3.dbFilter:='(SELECT count(*) FROM Fixed WHERE fixed.id_Unit = Unit.id)=0';
end;

Дело в том, что скрипт в том виде, как записан выше, прекрасно работает.
Но в правую часть нужно дописать условие, что ComboBox3 исключает инвентарные номера не только те, которые уже выданы. Нужно ещё исключить те, которые не рабочие или находятся в ремонте. Как это можно организовать?
Проект во вложении.

Post's attachments

Attachment icon Проект_20160905.rar 175.71 kb, 429 downloads since 2016-09-05 

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

К так и не решённому вопросу предыдущего топика добавился ещё один:
на вкладке 2 формы frmMaim при выборе комнаты для формирования отчёта (текстбокс с лабелом Fixed.fixedRoom), если значение № комнаты числовое, то всё работает, иначе (например 1106-а) даёт ошибку. Формат для поля установлен в таблице текстовый.

Post's attachments

Attachment icon Проект_20160908.rar 206.47 kb, 426 downloads since 2016-09-08 

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Всем доброго дня! Очень прошу помощи  по проблемам, изложенным в топиках 8 и 9.

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Проблему, изложенную в топике 9, решил (проект прикреплен).  По топику 8 всё ещё надеюсь на "помощь друга".

Post's attachments

Attachment icon Проект_20160914.rar 178.67 kb, 418 downloads since 2016-09-14 

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

По топику 8 вопрос закрыт. Решено.

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Здравствуйте.
Опять я со своими проблемами.

Есть таблица Card (Личные карточки сотрудников) с полями:
- id
-id_Person
-id_Fixed

Есть таблица Fixed (Закрепление имущества) с полями:
-id_Person
- id_Card

Задача: перенос записи из карточки одного сотрудника в карточку другого.
Для этого:

На форме frmCopy созданы два компонента, принадлежащие таблице Card:
- ComboBox7, отображающий значение Person из поля Card.id_Person таблицы Card;
- Edit2, отображающее значение id из таблицы Card
При выборе в ComboBox7 фамилии сотрудника, на которого нужно переписать имущество, в поле Edit2 отображается id его личной карточки. Это работает.

Все остальные компоненты на frmCopy принадлежат таблице Fixed и отображают данные об имуществе.
Для переноса в другую карточку созданы два компонента, принадлежащие таблице Fixed:
- ComboBox5, отображающий значение Person из поля Fixed.id_Person таблицы Fixed при выборе значения в вышеупомянутом ComboBox7 (это работает);
- ComboBox6 (значение id поля Fixed.id_Card таблицы Fixed).

Проблема: ComboBox6 должен автоматически заполниться при выборе сотрудника в ComboBox7, чего добиться никак не могу. При ручном выборе значения id перенос записи в другую карточку работает.
Прошу помощи в написании запроса на вычисление id в ComboBox6

Нагляднее смотрите на рисунке во вложении.

Post's attachments

Attachment icon Проблема.jpg 58.14 kb, 302 downloads since 2016-09-29 

Не боги горшки лепят!

Re: Проект по учёту материальных ценностей и их закреплению за работниками

Уже почти работает. Есть одна непонятка: почему-то не вычисляет id карточки, если она существует, но не содержит ни одной записи. Такое условие нигде не прописано. Откуда ноги растут никак не пойму. Нужно, чтобы id карточки вычислялся в любом случае, если карточка существует, независимо от того есть в ней записи или нет. Проект прилагаю.

Post's attachments

Attachment icon Проект_20160930.rar 181.67 kb, 458 downloads since 2016-09-30 

Не боги горшки лепят!