![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день. В БД есть 2 таблицы (2 только для примера, их там значительно больше). Таблица zakaz содержит все информация о заказе , таблица kat_tovara является справочником (в табл zakaz записываются ключи с категорией товара из табл kat_tovara). Есть 2 формы, 1ф содержит грид со всей информацией из табл zakaz, 2ф является формой для записи информации в БД или ее просмотра. На 2ф есть DBLookupCombo, его LookupSource является запрос
Код:
SELECT ID, Name_SP, Gruppa FROM kat_tovara WHERE Arhiv = 0 |
#2
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() Спасибо за издевочную помощь. Как вариант решил сделать так, на форму вместо комбобокса кинуть текстбокс с кнопкой, по нажапию на кнопку под ТБ будет появляться форма с гридом, которая будет иметировать выпадающий список, таким образом в ТБ будет та информация которая есть в БД (и все равно как давно она была записана), а форма под ТБ будет отображать только актульную информацию. Вопрос в том как это сделать? Сделать так, чтобы форма появлямать под кнопкой знаю как, а вот чтобы по нажатию на кнопку форма появлялась под ТБ не знаю. Подскажите пожалуйста как это можно сделать.
|
#4
|
||||
|
||||
![]() Цитата:
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
![]() нет, мне не нужно чтобы в гриде был выпадающий список (взял на воружение, думаю что обязательно пригодиться), нужно именно визибл формы по ТБ по нажатию кнопки.
|
#6
|
|||
|
|||
![]() Может кому пригодиться
Код:
procedure Tf_Inform.bt_Select_OtdelClick(Sender: TObject); var pt: TPoint; bt: TBitBtn; begin bt := Sender as TBitBtn; pt := bt.Parent.ClientToScreen(Classes.Point(bt.Left, bt.Top + bt.Height)); f_Otdel.Top := pt.Y + 2; f_Otdel.Left := pt.X - 300; f_Otdel.ShowModal; end; |
#7
|
|||
|
|||
![]() Да легко все решается правкой запроса.
Когда ты открываешь форму, тебе надо знать номер (ID) заказа. Тогда тебе надо: 1. Выбрать все активные товары из каталога. 2. Выбрать архивные товары, которые используются в данном конкретном заказе (что бы можно было их показать). 3. Объединиить результаты этих запросов. 4. Сделать невозможным выбор архивного товара для новых записей. Тут код на Delphi и этот пункт надо рассматривать отдельно, по приведенной информации невозможно что-то посоветовать. Первые три пункта делаются так: Код:
SELECT id, name, is_archive from kat_tovara WHERE Arhiv = 0 UNION ALL SELECT id, name, is_archive from kat_tovara WHERE Arhiv = 1 and id in ( SELECT kod_tovara_id from OrderItem where Order_id = :itemID ) С первой частью запроса все понятно - выбираем все активные товары. Далее идет UNION ALL, который просто объединяет 2 выборки в одну (список полей должен быть одинаковый по кол-ву и типу). Третья часть, второй запрос, отбирает архивные товары, которые уже испольщуются в заказе (сорри, названия таблиц написал нормальные, т.к. с твоим транслитом это нечитабельно). Короче, идея вот такая. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
DOR (25.03.2013)
|
#8
|
|||
|
|||
![]() в моем случае можно так
Код:
SELECT id, name, is_archive from kat_tovara WHERE Arhiv = 0 UNION ALL SELECT id, name, is_archive from kat_tovara WHERE Arhiv = 1 and id = :itemID Последний раз редактировалось DOR, 25.03.2013 в 21:02. |