Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: помогите в создании расходной накладной, ПОЖАЛУЙСТА  (Прочитано 37550 раз)
0 Пользователей и 7 Гостей смотрят эту тему.
Len
Гость
« : 26-03-2007 08:18 » 

Есть две таблицы Расходная накладная(Номер, Дата, Id_Продавца, Id_Покупателя,Id_Товара) и  Товар(Id_Товара, Наименование). В форме расходная накладная с помощью DBLookupComboBox выбираю код нужного клиента его данные проставляются в соответсвующих DBEdit-ах, а когда нужно выбрать товар для реализации, тут возникает вопрос, а ведь товар может быть не один, а несколько видов, как их отобразить на форме и прикрепить к данной накладной? А черт его знает...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-03-2007 08:28 » 

Создаешь таблицу РасходнаяНакладнаяТовар(НомерРасходной,Id_Товара,....)
Отдельным гридом бросаешь на форму Расходной накладной и... забываешь о своих проблемах Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #2 : 26-03-2007 08:35 » 

А зачем же тогда таблица Товар? Как я понимаю расходная накладная призвана для того, чтобы минусовать количество товара из таблицы Товар.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 26-03-2007 08:54 » 

таблица Товар содержит информацию о Товаре (в том числе и о количестве, если ты это так понимаешь)
Расходная накладная содержит информацию о контрагенте и товарах (заметь - о товарах). Исходя из данных условий и создается таблица РасходнаяНакладнаяТовар, которая привязывается к Расходная накладная, а каким образом ты будешь вести учет товара, это уже другой вопрос.
Например, в случае вставки(на этапе редактирования) в таблицу, товар резервируется, в случае записи в таблицу товар списывается
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #4 : 26-03-2007 09:18 » 

Я все-таки немного недопонимаю... Можете подробно описать Ваши действия по созданию Накладной более подробнее... Буду признателен...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 26-03-2007 09:48 » 

Len, я вообще не имею понятия о Расходной накладной, а тем более ее создаю не я, а Вы
Я сужу только о поставленной задаче
Прошу описать, что в Расходной накладной должно присутствовать,
И как Вы представляете, вообще, форму расходной накладной?
Возьмите стандартную (типографскую) форму и создайте аналогичную, тогда Вы, надеюсь, поймете о чем я говорю.
А вот работа с товаром, это уже вопрос о функциональности, на нем в данный момент заморачиваться не будем Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #6 : 26-03-2007 10:31 » 

Я опишу подробнее все мои действия: Есть три таблицы: Конрагенты, Товар и Расх. накладная. Форма выглядит следующим образом, DBEdit(Номер) DBEdit(Дата) DBLookupComboBox(Код клиента) когда код выбирается, то данные этого контрагента проставляются в DBEdit-ах Далее по моим замыслам товар который нужно реализовать заполняется в DBGrid-е, но этот товар я хочу выбирать из уже имеющейся таблицы Товар, можно ли так сделать нажимаешь кнопку ТОВАР, появляется форма Товар и двойным щелчком на нужной строке данные проставляются в первой строке DBGrid и так выбираем товары для реализации в данной накладной...
« Последнее редактирование: 26-03-2007 10:33 от Len » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 26-03-2007 11:38 » 

Len, я ничего не понимаю в DBEditах и  DBLookupComboBoxах, в этом также ничего не понимают (З)аказчики.

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

Кстати в приведенном мною описании З тоже ничего не понимают.

Теперь по сути.
Создав на форме заполнения РН, отдельную табличку для заполнения информации о Т, ты также должен создать интерфейс выбора товара.
Если в случае выбора К ты пользуешься выпадающим списком (я так интерпретировал DBLookupComboBox), то в случае заполнения данных о Т, тебе нужно выводить Большой список, что не есть совсем удобно, поэтому здесь удобно, на мой взгляд, использовать окно выбора. Кроме того, окно выбора можно использовать и при выборе К

Итак.
1. Номер расходной накладной вводим ручками, или автоматически генерируем.
Код:
NРН= Select max(Номер)+1 from Расходная накладная;
2. Дату накладной вводим руками или автоматически генерим.
Код:
ДАТА = sysdate
3. Данные о клиенте вводим путем выбора К из таблицы К . Назовем это "Выбрать".
Код:
Клиент = select * from К where idK=&Контрагент
4. Данные о товаре вводим путем выбора Т из таблицы Т. Но назовем "Добавить".
Код:
Т1= здесь мне лень придумывать код :)
Т2= здесь мне лень придумывать код :)
Соответственно, "грид" Товар, "обвешиваем" удобным интерфейсом (кнопочки "Добавить", "Удалить" и пр.)

Выбор из таблиц организовываем в виде окон( скорей всего модальных, хотя и здесь могут быть варианты.)
Соответственно эти окна, на мой взгляд должны быть одного класса с формами ввода клиента или товара (в случае отсутствия необходимого элемента должна быть возможность добавить новый элемент, но это уже развитие интерфейса и к теме не относится)
При сохранении РН - сохранение данных происходит в двух таблицах (РН и РасходнаяНакладнаяТовар (РНТ) )
Т.е. я так понимаю, что вот здесь и возник вопрос, а что это за таблица РНТ.
Структуру таблицы я уже приводил.
« Последнее редактирование: 26-03-2007 12:07 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #8 : 26-03-2007 11:55 » 

Как я понял Расходная накладная товар нужна как переходная таблица от Товара к Расходным накладным, чтобы и сделать это соответствие один ко многим?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 26-03-2007 13:15 » new

Как я понял Расходная накладная товар нужна как переходная таблица от Товара к Расходным накладным, чтобы и сделать это соответствие один ко многим?
в общем-то да
Но эта таблица не имеет смысла без существования таблицы РН
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #10 : 26-03-2007 14:53 » 

<4. Данные о товаре вводим путем выбора Т из таблицы Т. Но назовем "Добавить".
Код:
Т1= здесь мне лень придумывать код Улыбаюсь
Т2= здесь мне лень придумывать код Улыбаюсь
Соответственно, "грид" Товар, "обвешиваем" удобным интерфейсом (кнопочки "Добавить", "Удалить" и пр.)>

Вот здесь у меня и возникла затруднительная ситуация. Т.е при нажатии кнопки Добавить всплывает форма Товар(это у меня получается), далее нужно написать код для оперции OnDblClik(двойной клик), чтобы при клике мышкой данная строка вставилась в таблицу Grid на форме Расх накл? А какой код не знаю...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 26-03-2007 15:09 » 

При даблклике закрываешь окно и  возвращаешь в гридТовар запись о Товаре
Т.е. функция(метод) закрытия окна должны возвращать определенную структуру
Я бы возвращал полную запись (или ссылку на запись) (Id_Товара, Наименование,...), а уже потом бы в форме РН выбирал нужные элементы
В случае вызова формы Товар независимо - возвращать можно как, например, текущую, или нулевую ссылку(пустую запись)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 27-03-2007 06:59 » 

Ну? где застряли? Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #13 : 27-03-2007 07:13 » 

давай разберемся по порядку... правильно ли я сделал?  В таблице Расх накл(РН) есть поля: Номер*, Дата, Код клиента, Код РНТ. В таблице Товар есть поля: Артикул*, Наименование, Цена, Количество, Номер ПН(прих накл). Првильно ли я связал таблицы: Товар->РНТ->РН. Какие поля надо создать в таблице РНТ(расх накл товар)? Код РНТ, Код РН, артикул, количество? Что нибудь не так?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 27-03-2007 08:28 » 

давай разберемся по порядку... правильно ли я сделал?  В таблице Расх накл(РН) есть поля: Номер*, Дата, Код клиента, Код РНТ. В таблице Товар есть поля: Артикул*, Наименование, Цена, Количество, Номер ПН(прих накл). Првильно ли я связал таблицы: Товар->РНТ->РН. Какие поля надо создать в таблице РНТ(расх накл товар)? Код РНТ, Код РН, артикул, количество? Что нибудь не так?
Давай создадим модель твоих объектов
Код:
Товар = объект {
   IDтовар not null,
   Артикул not null,
   Наименование,
   Цена :=0,
   Количество:=0
}
Клиент = объект {
   IDКлиент not null,
   Наименование,
   Адрес,
   Доп.реквизиты
}
РасходнаяНакладная = объект {
   IDРН not null,
   Номер not null,
   Дата,
   IdКлиент := null,
   IDРНТ :=null  /*этого поля может не быть, скорее всего не должно быть - вскрытие покажет :) */
}
РасходнаяНакладнаяТовар = объект {
   ID_РНТ not null,
   ID_Товар.
   КоличествоТовара,
   ОтпускнаяЦена /* заложим на будущее */
}
Опишем процедуру заполнения РН
Код:
  Ввод номера РН
  Ввод даты отгрузки(выдачи товара)
  Ввод данных о Клиенте путем выбора из объекта Клиент
  Заполнение данных о товаре, путем добавления из объекта Товар
Опишем процедуру сохранения РН
Код:
   Сохранить  необходимые реквизиты в таблице РН (номер, дата, клиент и т.д.)
   Сохранить данные о выбранных товарах в табл РНТ

Опишем процедуру просмотра РН
Код:
    Выбор Номера Расходной Накладной
    Выбор товаров из таблицы РасходнаяНакладнаяТовар по номерурасходной

Поля IDРНТ :=null  /*этого поля может не быть, скорее всего не должно быть - вскрытие покажет Улыбаюсь */
все таки не нужно, так как информация о принадлежности к РН находится в табл. РНТ
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #15 : 27-03-2007 08:52 » 

Итак модель объектов я задал. Теперь процедура заполнения РН: ввод номера(это поле принадлежит РН-номерРН), вводим дату(тоже заполняется поле РН-датаРН), ввод данных о клиенте(заполняется поле РН-код клиента). С этим все понятно. "Заполнение данных о товаре, путем добавления из объекта Товар". Давай здесь остановимся поподробнее...Как это будет выглядеть на форме?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 27-03-2007 09:17 » 

"Заполнение данных о товаре, путем добавления из объекта Товар". Давай здесь остановимся поподробнее...Как это будет выглядеть на форме?
Ну... это мы уже проходили Улыбаюсь
на форме у тебя существует грид Товары
к этому гриду привязываешь интерфейс (добавить, удалить, просмотреть и т.д. запись)
Тогда опишем процедуру заполнения грида Товар.
Сделай это сам Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #17 : 27-03-2007 09:33 » 

В шапочной части формы Номер, Дата, Код клиента, потом ниже я добавляю Грид, его привязывать к таблице Товар? Тогда выставляется весь ассортимент...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 27-03-2007 10:09 » 

Грид Товар связывается не с табл Товар, а с табл. РНТ, выборка из таблицы делается по номеру РН
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 27-03-2007 10:33 » 

Здесь бы еще описать процедуру заполнения грида РНТ
Показать Товар
Выбрать Товар (вот здесь тоже могут быть варианты, например выбор одного или нескольких товаров)
Заполнить грид

А потом будет действовать процедура записи РН

офтоп....
Т.е. по мере развития проекта запросы Заказчика могут расширяться
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #20 : 27-03-2007 11:03 » 

Грид Товар связал с таблицей РНТ, появилось 4 столбца: Номер РНТ, Код товара(можно в качестве кода сделать артикул), количество и отпускная цена. А наименования товара высвечиваться не будут, только код товара (артикул)? Таблицу РНТ связал с главной таблицей РН. Над гридом поставил 2 кнопки: Добавить(т.к. может потребоваться вставить не один вид товара) и Удалить. Хотелось бы, чтоб при нажатии кнопки Добавить появлялась форма с таблицей товара. 
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 27-03-2007 11:48 » 

Хотелось бы, чтоб при нажатии кнопки Добавить появлялась форма с таблицей товара. 
Ну? Так сделай это Улыбаюсь
1. чем Кнопка, например, Расходная накладная отличается от кнопки Добавить в гриде РНТ? (кроме размера и цвета Улыбаюсь )
2. Чем форма ввода Товара, будет отличаться от формы Выбора товара?
3. Что возвращает форма ввода Товара, что возвращает форма Выбора товара?

ЗЫ, Len, пойди отдохни, ты зациклился - проект подождет. В кино сходи, медленно прокрути на досуге (не за компом) всю технологию, и оно само прийдет Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #22 : 27-03-2007 12:49 » 

Я и сам не рад, но диплом то не подождет... Скоро сдавать, а я сижу и тупею на глазах... Хорошо кнопкой Добавить модально вызываю форму Выбора товара, это я сделал. На форме Выбора товара поставить кнопку Выбрать? Это тоже сделал... Я просто не могу дотукаться что должно произойти при её нажатии. А! Должен проставиться код товара(артикул) в гриде Товар на форме расх накладной? А столбцы номер РНТ, количество и отпускная цена заполняем вручную? Так?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 27-03-2007 13:18 » 

... Должен проставиться код товара(артикул) в гриде Товар на форме расх накладной?...
Замечательно!

...  А столбцы номер РНТ, количество и отпускная цена заполняем вручную? Так?
нет! никакого номера! РНТ, откуда он, в модели объекта? ты (или я Улыбаюсь )его не описывал.

Количество! А как же,  только руками, но нужно обязательно проверять на наличие.
Отпускная цена - это так условная весчь - наверное должна быть
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #24 : 27-03-2007 15:47 » 

Вот и возникает мой главный вопрос. "кнопкой Добавить модально вызываю форму Выбора товара, это я сделал. На форме Выбора товара поставить кнопку Выбрать". А какой код прописать для кнопки Выбрать? Не понял 
Записан
Len
Гость
« Ответ #25 : 27-03-2007 15:56 » 

...  А столбцы номер РНТ, количество и отпускная цена заполняем вручную? Так?
нет! никакого номера! РНТ, откуда он, в модели объекта? ты (или я Улыбаюсь )его не описывал.
Нет, не номер а код РНТ. Его не надо в гриде демонстрировать? Это поле ведь ключ, как оно будет заполнятся?
« Последнее редактирование: 27-03-2007 16:03 от Len » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 27-03-2007 16:30 » 

Кнопкой Выбрать возвращать данные о товаре (см. ответ #11)
ведь ты при закрытии дочернего окна должен вернуть  ЧТО-ТО в родительское окно.
Вот это ЧТО-ТО и есть данные о товаре(товарах)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 27-03-2007 16:34 » 

Код РНТ в объекте  по привычке образовался Улыбаюсь каюсь
это псевдо поле, в гриде его можно не выводить
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #28 : 28-03-2007 08:17 » 

Для кнопки Выбрать написал такой код, из формы Товар поле артикул присваиваю полю артикул в гриде формы расх накл.
Form14.Table1.FieldByName('Articul').AsInteger:=Form16.DBGrid1.Fields('Articul').AsInteger; /Form14-форма товар, Form16-форма РН/
Form14.Close; /закрываем форму Товар/
Это чёй-то не работает...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 28-03-2007 14:46 » 

Len, Что возвращает функция Close?
Ты должен вернуть текущую запись из формы выбора товара
смотри сюда
код на бумаге
Вызвать функцию ВыборТовара /* кнопка Добавить на гриде Товар в РН */
функцию ВыборТовара {
ОткрытьФорму(ВыборТовара,Результат)
Добавить(ГридТовар,Результат)
}
ОткрытьФорму(ВыборТовара,Результат) {
....
Результат = ТекущаяЗапись(ГридВыборТовар)
}

Теперь понятно?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines