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 3 of 16)
Люди!!!! Помогите!!!! Подскажите!!!!
Застрял на скрипте:
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 исключает инвентарные номера не только те, которые уже выданы. Нужно ещё исключить те, которые не рабочие или находятся в ремонте. Как это можно организовать?
Проект во вложении.
Спасибо большое. С ковырянием из грида вопрос уже решён.
Имеется такой скрипт, и он работает:
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?
Жаль. Но обращение было не только к Вам, Дмитрий. Если кого-то интересует проект по учёту мат. ценностей и их закреплению за сотрудниками - добро пожаловать в проект. Жду посильной помощи. Ранее выложенная проблема до сих пор не решена, а это важно.
Мозги закипают, время идёт, работа стоит. Ну никак не пойму, в чём ошибка! Прошу помощи! SOS!
Доброго всем дня!
Прошу помощи в моей проблеме. Не работают строки 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 хочу видеть фамилию этого конкретного человека.
Проект во вложении.
Столкнулся со следующей проблемой. В этот грид на frmMain загружаются данные через CSV, а значит даты при наличии в гриде вычисляемого поля, загружать нет возможности. Можно ли не создавать вычисляемое поле, а в гриде задать формат для даты MMMM yyyy (как на frmAddUnit)? Речь идёт о дате изготовления техники, число в ней как правило отсутствует. Проект прилагаю.
Спасибо. Разобрался. Пока в карточке есть наполнение, удалить её нельзя. Прежде нужно карточку обнулить.
Коллеги! Прошу посмотреть проект. На форме frmMain не работает кнопка удаления записи Button3. Выдаёт ошибку, связанную с ключом (скрин ошибки во вложении).
Создайте вычисляемое поле вида
strftime('%m/%Y', datefield)
затем можете его вывести в грид.
СПАСИБО!
Здравствуйте!
Если для DateTimePicker1 на форме установлен формат "MMMM, yyyy", то каким образом в гриде можно получить выбранное значение в виде "ММ/уууу" (например сейчас август 2016, значит в гриде отображается 08/2016)?
Полагаю, что помимо поля Date в таблице нужно иметь вычисляемое поле DateText и уже его значение выводить в грид. Так? Но как в нём прописать формулу?
Странности продолжаются. Отправил проект в личку. Может быть проблема в версии MyVisualDB (на работе я делаю проект в MyVisualDB 1.53 BETA)? Добавил в гриде вычисление суммы по колонке, и все стоимости в гридах обнулились. Причём только в гридах. В таблице данные по стоимости остались и на печать в SQL отчёте выводятся.
DriveSoft wrote:kunar80
если равна нулю, тогда
numMaino.balancePrice = 0
если NULL
numMaino.balancePrice IS NULL
Первое в моём случае не работает. Со вторым вариантом получилось. СПАСИБО, ДМИТРИЙ!
В отчёте SQL задано условие
WHERE card.record_count={EditCounter1} AND numMaino.balancePrice > 0
и оно работает.
Как для другого отчёта задать противоположное условие на отбор только тех значений, у которых балансовая стоимость не указана, т.е. равна 0. Формат поля - ДЕНЬГИ. Пробовал и =0, и =NULL. Эти варианты не проходят.
Доброго дня всем. Непонятка какая-то с деньгами. В таблице деньги сохраняются, но в гриде почему-то не отображаются (см. рисунок).
При входе в проект через форму frmLogin после клика по кнопке "Вход" выскакивает ошибка (см. рисунок), хотя дальше всё работает без проблем.
Что это за ошибка и как её устранить?
Доброго всем дня!
Вот таким скриптом организуется импорт в таблицу данных АКТ-ПАПКА-ДОКУМЕНТ.
// id_Act - текстовое содержимое первого столбца содержится в arrStr[0]
if arrStr[0] <> '' then
begin
ActID := SQLExecute ('SELECT id FROM act WHERE act LIKE "' + arrStr[0] +'"');
if ActID = '' then
begin
SQLExecute ('INSERT INTO act (act) VALUES ("'+ arrStr[0] +'");');
ActID := IntToStr(Last_Insert_id('act'));
if ActID = '-1' then ActID := 'NULL';
end;
end else ActID := 'NULL';
// id_Folder - текстовое содержимое второго столбца содержится в arrStr[1]
if arrStr[1] <> '' then
begin
FolderID := SQLExecute ('SELECT id FROM folder WHERE folder LIKE "' + arrStr[1] +'"');
if FolderID = '' then
begin
SQLExecute ('INSERT INTO folder (folder) VALUES ("'+ arrStr[1] +'");');
FolderID := IntToStr(Last_Insert_id('folder'));
if FolderID = '-1' then FolderID := 'NULL';
end;
end else FolderID := 'NULL';
// Document - текстовое содержимое третьего столбца содердижится в arrStr[2]
if arrStr[2]<>'' then sDocument := '"'+arrStr[2]+'"' else sDocument := 'NULL';
SQLExecute ('INSERT INTO document (id_act, id_folder, [document]) VALUES ('+
ActID +','+
FolderID +','+
sDocument +
');'); // с помощью SQL запрос вставляем данные в БД
Проблема в следующем. Помимо номера акт имеет ещё и дату (поле date в таблице act). Актов с одинаковыми номерами может быть несколько, но с разными датами (за разные годы). Если не указана дата, а только номер, то при загрузке новые записи привязываются к тому акту, у которого наименьший ID.
Как в этот скрипт добавить дату акта? Файл CSV соответственно должен иметь колонки АКТ-ДАТА--ПАПКА-ДОКУМЕНТ
Есть таблица ДЕЛО и в ней поля id_КОМНАТА, id_СТЕЛЛАЖ, id_ПОЛКА, хранящие информацию о месте нахождения ДЕЛА.
И есть связанная с ней таблица ТОМ с полями id_ДЕЛО, id_КОМНАТА, id_СТЕЛЛАЖ, id_ПОЛКА. Если дело многотомное, то места хранения разных томов могут быть разными (ну не помещаются на одной полке или стеллаже!)
Как в сводном гриде объединить в одной ячейке ДЕЛО.id_КОМНАТА и ТОМ.id_КОМНАТА, в другой ДЕЛО.id_СТЕЛЛАЖ и ТОМ.id_СТЕЛЛАЖ, в третьей ДЕЛО.id_ПОЛКА и ТОМ.id_ПОЛКА?
Имеется ввиду, что sprava.id_room отсутствует, а есть document.id_room у подчинённых документов. Проект прилагаю.
Прошу помощи по вычисляемому полю calculate_room.
В двух связанных таблицах есть поля id_room. В вычисляемом поле нужно прописать:
- Если sprava.id_room = 0 , а document.id_room > 0, то вычисляется значение последнего, и наоборот.
Илюстрация к сказанному:
дело может состоять из одного тома, находящегося в каком-то указанном месте (здесь вычисляется и записывается sprava.id_room), а может состоять из многих томов, и тогда для каждого тома определяется своё место хранения document.id_room.
Можно использовать sprava.folder - оно показывает количество привязанных к делу документов.
Здравствуйте! В DateTimePicker мне нужен только год. Установил для него формат = yyyy, DateMode = UpDown, Kind = MonthYear. В самом DateTimePicker виден только год и есть возможность стрелками вверх-вниз выбирать нужное значение. Но в таблицу сохраняет в формате DD.MM.yyyy. Как сделать, чтобы сохранялся только год?
DriveSoft wrote:можно так в CombBox-ы
Спасибо, работает!
Posts found: 51 to 75 of 376