| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Забыл как !!! |
| Автор: McDevil 12.2.2006, 17:46 |
| В общем забыл самое простое(а ведь раньше делал как - то), и не знаю как это обьяснить - то. В общем надо, чтобы при указывании пола сотрудника сразу показывалось поле национальность соответственно "русский" или "русская" - эти значения берутся из справочника и из выпадающего списка. Для полного уточнения добавляю изображение не полянитесь скачайте плиз 91 кб... |
| Автор: Halt 12.2.2006, 18:41 |
| Ниче не понимаю, обьясни толком, твоя имага только дело запутывает. |
| Автор: sexton 12.2.2006, 19:04 |
| Нуу умных вариантов много... Могу навскидку подкинуть самый глупый и простой - писать в базу по два наименования для каждого пола и вести дополнительное поле, в котором будет соответствующий этому написанию пол... |
| Автор: Foley 12.2.2006, 23:53 |
| а тебе надо чтоб в гриде выбрал пол, а грид скрыл ненужную национальность? тогда попробуй на таймер накидать процедурку... чтоб поле становилось невидимым если неудовлетворяет значению... если честно не догоняю что ты хочешь... |
| Автор: sexton 13.2.2006, 10:44 | ||
Создаем в справочнике национальностей подобную структуру: ID Пол Национальность 1 м русский 2 м нерусский 3 ж русская 4 ж нерусская После чего фильтруем этот справочник по введенному значению пола... |
| Автор: McDevil 14.2.2006, 09:23 |
| Да нет проще можно... |
| Автор: sexton 14.2.2006, 11:25 |
| Не спорю. Например хранить для каждой записи национальности два написания - в женском и мужском роде. Типа: ID Национальность(м) Национальность(ж) |
| Автор: McDevil 14.2.2006, 11:36 | ||||
Причем тут таймер... Может что-то не догоняю... Добавлено @ 11:37
А можно как нибудь присвоить ячейке грида DBLoockUpComboBox... Не, не затупил не обращай внимания... Блин как-то это просто все делалось... |
| Автор: SergeBS 14.2.2006, 13:18 |
| McDevil LookupField, CalculatedField - 2 разумных варианта. Хинт: лукап не обязательно 1 поле |
| Автор: StayAtHome 14.2.2006, 16:35 | ||
| Может это имелось ввиду? DRKB: Нередко в колонке DBGrid нужно вывести не реальное значение, хранящееся в поле соответствующей таблицы, а другие данные, соответствующие имеющимся (например, символьную строку вместо ее числового кода). В этом случае также используется метод TextOut свойства Canvas компонента TDBGrid: Соответствующий код для Delphi имеет вид:
|
| Автор: DDX 14.2.2006, 16:59 | ||
| блин, Sexton высказал самый нормальный вариант: хранишь поля : ид, название национальности, пол 1,русский,м 2, русская, ж делаешь запрос источником данных для лукапдбкомбобокса а када при вводе выбираешь пол, фильтруешь источник данных бокса в зависимости от пола
EhLib тебе в руки |
| Автор: McDevil 14.2.2006, 23:31 |
| Спасибо конечно всем, но все, что вы говорите у меня впринципе уже реализованно... Просто получается я нормально объяснить не могу... Попытка number три: - у меня есть таблица-справочник под названием SprNation с полями kodNat, nationMen, nationWomen... - на имаге видно, что в Grid'e присутствует два поля с одинаковым названием "Национальность", в которых соответственно варианты написания национальности для женского и мужитского пола. Поля - эти лукаповские и из списка - соответственно... ЗАДАЧА: чтобы при выборе пола оставалось корректное(нужное по логике) поле "национальность", для выбранного значения в поле "пол", и при этом выбранные ранее поля "пол" и "национальность" для других сотрудников не изменялись... т.е. что не было такого типа выбираешь пол мужской и все поля "национальность" для записей женского рода также становились мужского пола... Заранее спасибо, тем кого я еще не вывел из себя окончательно и тем кто нашел в себе силы ответить... |
| Автор: Foley 15.2.2006, 00:10 |
| Все понятно... занчит как я и говорил... что б вгриде отображалось одно поле , и другие записи не менялись... В ГРИДЕ не пробовал делать Columns и потом присваивать Visible True и False... хотя с трудом представляю себе код... хотя есть компонента ГРИДА с ROW и COL: вот процедурка(в смысле код): unit VUBComps; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, Menus; type TDBGridVUB = class(TDBGrid) private { Private declarations } protected { Protected declarations } public property Canvas; function CellRect(ACol, ARow: Longint): TRect; property Col; property Row; procedure Register; implementation procedure Register; begin RegisterComponents('VUBudget', [TDBGridVUB]); end; function TDBGridVUB.CellRect(ACol, ARow: Longint): TRect; begin Result := inherited CellRect(ACol, ARow); end; end. может придумаешь что с этим можно сделать... Добавлено @ 00:16 ты там еще говорил про добавление LookupComboBox в грид... не знаю как это но просто ComboBox можно вставить так: 1. Дважды щелкнуть на DBGrid 2. Добавить колонку 3. Указать поле которое будет показываться (свойство FieldName) 4. Заполнить список (свойство PickList) |
| Автор: McDevil 15.2.2006, 01:22 |
| Foley, спасибо, но не то... |
| Автор: DDX 15.2.2006, 15:33 |
| McDevil, специально для тебя набросал небольшой пример, прислать не пришлю, чтобы не заморачиваться с базами, но суть вкратце такова: берешь dbEhGrid из комплекта EhLib в запрос-источник данных основной сетки добавляешь новое поле, указываешь, что оно-лукап, и в качестве источника данных делаешь запрос к таблице-справочнику национальностей в dataSource основного источника данных вешаешь событие AfterScroll, то бишь переход по записи, и в этом событии вешаешь фильтр по полю "пол" основного запроса и применяешь его вуаля! при переходе на очередную строку в списке национальностей будут вываливаться лишь отфильтрованные по признаку пола данного чувака, при этом остальные записи отображают то значение, которое в них было сохранено, вне зависимости от пола! заморочки с добавлением/удалением записи и изменение фильтра при этом вполне решаемы, фильтрами можно управлять гибко, в общем, флаг тебе в руки. |
| Автор: McDevil 23.2.2006, 14:54 |
| DDX, не пойдет ЦП жрет слишком много, при перемещении по записям, может конечно что-то не так делаю в общшм не фарт... |