Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 13:38   #1
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию Как присвоить DBCheckBox конкретное значение

На форме есть к примеру 3 DBCheckBox. они привязаны к таблице Программы. В ней есть три три записи = три разные программы. Как присвоить к DBCheckBox1 значение Программы 1, DBCheckBox2 значение программы 2, DBCheckBox3 значение программы 3.

или может другой путь решения есть? хотя CheckBox более наглядный для пользователя.
Изображения
Тип файла: jpg программы.JPG (28.0 Кб, 68 просмотров)
Scorpuha вне форума Ответить с цитированием
Старый 14.01.2014, 13:53   #2
demiware
Пользователь
 
Аватар для demiware
 
Регистрация: 13.01.2014
Сообщений: 21
По умолчанию

Как я понял имеется 2 таблицы, которая с перс данными и с программами, но они никак не связаны? Если бы в таблице с перс данными были три поля - прог1, прог2, прог3 - все булевские, то проблем не было бы. А так вы не можете использовать DBCheckBoxы да и просто чекбоксы не имеют смысла пока нет взаимосвязи таблиц...
Приглашаю в мой блог http://demiware.ru о программировании в Delphi, PHP(Symfony)...
demiware вне форума Ответить с цитированием
Старый 14.01.2014, 14:02   #3
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

вообще в БД есть 4 таблицы
1. Сотрудники
2. Профессии
3. Программы
4. Аттестация

связь: Сотрудники ID связаны с Аттестация id_sotrud, Программы ID связаны Аттестация id_program, Сотрудники ID связаны с профессии c Id_sotrud
Scorpuha вне форума Ответить с цитированием
Старый 14.01.2014, 14:25   #4
demiware
Пользователь
 
Аватар для demiware
 
Регистрация: 13.01.2014
Сообщений: 21
По умолчанию

Ну вот тогда другое дело, делай SELECT JOIN для трех таблиц сотрудники-атестации-программы и будет щасье
Приглашаю в мой блог http://demiware.ru о программировании в Delphi, PHP(Symfony)...
demiware вне форума Ответить с цитированием
Старый 14.01.2014, 14:29   #5
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

не доганяю, можете примерчиком?
Scorpuha вне форума Ответить с цитированием
Старый 14.01.2014, 14:41   #6
demiware
Пользователь
 
Аватар для demiware
 
Регистрация: 13.01.2014
Сообщений: 21
По умолчанию

Примерчик нет времени писать, на словах лишь скажу что надо использовать компонент типа TDBQuery или TADODataset что больше нравиться и вставить в него запрос (без знания SQL никуда, там ничего сложного, информации полно - найди как c помощью SELECT связывать таблицы).
Приглашаю в мой блог http://demiware.ru о программировании в Delphi, PHP(Symfony)...
demiware вне форума Ответить с цитированием
Старый 14.01.2014, 14:45   #7
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

так вроде у меня таблицы уже связаны (Access)
Scorpuha вне форума Ответить с цитированием
Старый 14.01.2014, 14:53   #8
demiware
Пользователь
 
Аватар для demiware
 
Регистрация: 13.01.2014
Сообщений: 21
По умолчанию

Это они у тебя в среде Access связаны, созданы индексы, а для твоей программы нет. Связи можно между компонентами типа ТDBTable задать через индексы или в SQL-запросе, но лучше SQL...
Приглашаю в мой блог http://demiware.ru о программировании в Delphi, PHP(Symfony)...
demiware вне форума Ответить с цитированием
Старый 14.01.2014, 16:28   #9
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

INNER JOIN ?
Scorpuha вне форума Ответить с цитированием
Старый 14.01.2014, 16:56   #10
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Стрелка

INNER JOIN!
ИМХО: лучше если запрос сохранить в Access. Тогда код ответственный за взаимодействие с БД (по крайней мере за получение данных) значительно упростится.
DBCheckBox предназначен для работы с булевскими полями. Во всех остальных случаях от него никакого толку, либо больше проблем, чем пользы. Проще использовать обычный CheckBox. Значения в CheckBox'ах можно выставлять в зависимости от значения id_program с помощью операторов if или case (если не приджойнили название программы). Доступ к полю id_program можно сделать не визуально через DataSet.
При сохранении case использовать 100% не получится, т.к. он работает только с перечисляемыми типами. Поэтому можно будет формировать числовое значение id_program только с помощью if.
ИМХО: т.к. число программ может со временем увеличиться, использовать CheckBox не самое лучшее решение. Лучше DBLookupListBox или DBLookupComboBox.
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как присвоить значение DBLookupComboBox'у? Vit@L Общие вопросы Delphi 15 25.07.2012 19:21
как присвоить ячейке значение пикселя? player891 Общие вопросы Delphi 1 15.03.2012 18:28
как присвоить букве постоянное значение? Garik007 Microsoft Office Excel 1 04.03.2012 19:55
как присвоить значение??? VintProg Общие вопросы C/C++ 1 05.08.2011 15:21
Как присвоить значение функции? boris-blade Microsoft Office Word 3 17.01.2010 17:09