Как-то так. После выбора материала кликом по гриду и записи количества "1" в комбобоксе должны открываться не все инвентарные номера, существующие в базе, а только те, которые привязаны конкретно к этому материалу. Это задача № 1. И задача № 2 :  в комбобоксе видны только те номера, которые не привязаны к расходным накладным, иначе говоря не выданы и находятся на складе.

DriveSoft wrote:

В последних версиях у функции Last_Insert_id были убраны параметры, т.е. нужно писать

productNameID  := IntToStr(Last_Insert_id);

У меня версия 1.52

Выкладываю последнюю версию. Это уже рабочий проект с реальными документами. Расходную (видаткову) создайте новую, т.к. я ещё ни одну в базу не внёс. И ещё что хотелось бы: на форме отчётов (переход с главной по кнопке "Звіти") видно движение по материалам. Хочется через запрос выводить на печать карточку, в которой отображена вся инфа по материалу от момента его прихода до текущего дня. Полагаю, что с этим справлюсь. НО КАК В НЁМ СДЕЛАТЬ ПРОМЕЖУТОЧНЫЕ ИТОГИ (за месяц, за год) ДАЖЕ НЕ ПРЕДСТАВЛЯЮ.

sibprogsistem wrote:

хотел посмотреть Ваш проект, так как заинтересован в нечто подобном

Прикрепляю. Но, как говорил выше, более новый вариант у меня на работе. Хотя и здесь видна та проблема, о которой говорил: откройте расходную (видаткову по-укр) и добавьте новую позицию. Вот там и нужен выбор инв. номера.

Как-то потерялся мой глас, взывающий о помощи в создании проекта. И адресован был он не только Дмитрию. На форуме уже неоднократно поднимался вопрос о складской программе. Делился и Дмитрий проектом Склад2. То, что сейчас имею я - это уже вполне рабочий проект. Пишу из дому, поэтому не могу приложить текущую версию. В ней уже можно работать, что я и делаю как лицо материально ответственное в своём учреждении. Не решён только вопрос с инвентарными номерами (см. "1)" в предыдущем топике). В списке материалов присутствуют и принтеры, имеющие инвентарные номера, и туалетная бумага, которую уборщица по ведомости получает, а оформляется она накладной по итогам месяца. Поэтому иметь поле invNum в таблице products просто нет смысла. Поставить на приход три-четыре сотни компьютеров, каждый отдельной строкой и со своим инвентарным - это труд немалый, да и не нужный именно в этом проекте. Моё видение таково: эти три сотни компьютеров (или стульев) приходуются одной строкой без учёта инвентарных номеров, как и записано в накладной поставщика, а инвентарный номер учитывается в расходной накладной при выдаче в эксплуатацию. При приходовании этих самых стульев (или телефонов) в таблицу invNum заносятся через CSV эти самые триста номеров - всего-то два значения - наименование и инвентарный номер. А при оформлении расходной накладной из инвентарных номеров, привязанных к конкретному наименованию, выбирается тот, который 1) действительно привязан к этому наименованию и 2) свободен и находится на складе.
Вот эти два пункта у меня до сих пор не решены.
Так что, друзья, если заинтересованы в наличии такой складской программки - присоединяйтесь к решению проблемы. Такая прога действительно нужна не только мне. Попробуйте-ка найти в интернете что-либо похожее, да ещё и бесплатное! Не найдёте.
Завтра с работы выложу текущую наработку. Реальные документы удалять не буду, с ними всё-же нагляднее.

DriveSoft wrote:

Это неправильно.

1) Никак не могу сообразить, как организовать выбор инвентарного номера выдаваемого товара, причём выбор только из свободных номеров.
2) [РЕШЕНО - знак равенства в условии заменил на LIKE] Если номер документа не число (по нему отбираются значения) , то SQL запрос почему то сообщает об ошибке, хотя формат для номера установлен текстовый 
Всех заинтересованных в программе учёта мат. средств организации (учреждения) прошу помочь довести до ума проект!

Никак не пойму, почему не работает процедура:

procedure frmOrderMINUS_detail_TableGrid1_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
frmOrderMINUS_detail.ComboBox2.dbItemID := SQLExecute ('SELECT IFNULL(id_product, -1) FROM invNum WHERE id='+frmOrderMINUS_detail.TableGrid1.sqlValue);
end;

В TableGrid1 таблица product
В ComboBox2 - id_product таблицы invNum

Спасибо, Дмитрий. Так работает.

Доброго всем дня! В работе над проектом для складского учёта материальных средств учреждения столкнулся с непоняткой.
При вводе новых товаров через файл CSV (на вкладке 7 словарей) вроде бы всё выглядит нормально и загрузка происходит корректно. В гриде на этой вкладке также всё выглядит правильно (таблица "product")(см. цена на блокнот = 10,380). Но в гридах на frmOrderPLUS_detail и frmOrderMINUS_detail (та же самая таблица "product") в цене три знака после запятой почему-то обнуляются (Цена на блокнот = 10,000). Если же новый товар вводить не через CSV, а вручную, то этой проблемы не возникает. Если в словаре на вкладке 7 через редактирование перезаписать товар, то и на указанных выше формах (это выбор товара при приходе и расходе) всё становится на свои места. Вот такая вот у меня непонятка. Прошу помощи друга.

Прошу подсказать в чём ошибка?
При такой записи условия всё работает:

SELECT
contact.name,
contact.phone,
contact.phone2,
groups.groupName,
organization.organization,
department.department,
otdel.otdel,
room.room,
contact.num,
post.post

FROM contact

LEFT OUTER JOIN groups ON contact.id_groups=groups.id
LEFT OUTER JOIN organization ON contact.id_organization=organization.id
LEFT OUTER JOIN department ON contact.id_department=department.id
LEFT OUTER JOIN otdel ON contact.id_otdel=otdel.id
LEFT OUTER JOIN room ON contact.id_room=room.id
LEFT OUTER JOIN post ON contact.id_post=post.id

WHERE contact.id_organization={cbOrg} AND contact.name<>'ВАКАНСІЯ'

А если добавляю ещё одно условие, то, как говорится, " усё пропало, шеф!":

SELECT
contact.name,
contact.phone,
contact.phone2,
groups.groupName,
organization.organization,
department.department,
otdel.otdel,
room.room,
contact.num,
contact.note,
post.post

FROM contact

LEFT OUTER JOIN groups ON contact.id_groups=groups.id
LEFT OUTER JOIN organization ON contact.id_organization=organization.id
LEFT OUTER JOIN department ON contact.id_department=department.id
LEFT OUTER JOIN otdel ON contact.id_otdel=otdel.id
LEFT OUTER JOIN room ON contact.id_room=room.id
LEFT OUTER JOIN post ON contact.id_post=post.id

WHERE contact.id_organization={cbOrg} AND contact.name<>'ВАКАНСІЯ' AND contact.note<>'ДЕКРЕТ'
DriveSoft wrote:

calc_ostatok - это вычисляемое поле?
Если да, то вы не можете его использовать в SQL запросах, т.к. его на самом деле его не существует в базе данных.


Допустим если выч. поле у вас например такое Cost*Quantity, тогда ваш запрос выглядел бы так

frmMINUS_details.Edit4.Text := SQLExecute ('SELECT (Cost*Quantity) FROM sklad WHERE id='+frmMINUS_details.ComboBox1.sqlValue);

вам просто необходимо продублировать содержание выч. поля в SQL запросе.

Вычисляемое поле такое:

(
(SELECT TOTAL(sklad.amountPlus) FROM sklad WHERE sklad.id_product=product.id) -
(SELECT TOTAL(sklad.amountMinus) FROM sklad WHERE sklad.id_product=product.id)
)

(все приходы по определённому продукту минус все расходы по нему)
Попробовал сделать так, как Вы подсказали. В итоге ничего кроме красных ругательств. А очень нужно при оформлении выдачи видеть остаток по складу.

В прилагаемом проекте на frmMINUS_details не работает Edit4.
Процедура для него записана так:

frmMINUS_details.Edit4.Text := SQLExecute ('SELECT calc_ostatok FROM sklad WHERE id='+frmMINUS_details.ComboBox1.sqlValue);

. Прошу помощи!

Спасибо, Дмитрий!

Вот такой получился проект. Кому нужен - берите. Не решил только один вопрос: как изменить язык в субменю на украинский. Подскажите плз.

Спасибо, Дмитрий! Удачи!

Доброго всем дня! Пожалуйста подскажите, возможно ли средствами My Visual DataBase version 1.52 сделать программку для автоматической нумерации бланков, подобную той, ссылка на которую прилагается. Хотелось бы иметь возможность редактирования и сохранения формы бланка в FastReport, чего не позволяет прилагаемая прога.
Ссылка:  http://www.softportal.com/software-23947-numerator.html

К сожалению, имеющаяся у меня лицензия на версии 1.ХХ не позволяет пользоваться последними версиями.

DriveSoft wrote:

Здесь можете скачать пример
http://myvisualdatabase.com/forum/misc. … download=1

Выдаёт ошибку (см вложение)

44

(5 replies, posted in Russian)

может другие пользователи помогут

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

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

Есть таблица 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

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

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

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

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

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