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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 00:50   #1
shaurma.ru
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию Передача ключевого значения в DBGrid

Всем привет. При разработки приложения для базы столкнулся с такой проблемой - у меня есть два DBLookupComboBox в которых я выбираю месяц и год. Есть таблица в Access: Месяц(КодМесяца(ключ), НазваниеМесяца, Год). Необходимо передать в ADODataSet КодМесяца.DBgrid поключен к ADODataSet. Как быть?

Последний раз редактировалось shaurma.ru; 10.12.2011 в 01:14.
shaurma.ru вне форума Ответить с цитированием
Старый 10.12.2011, 14:21   #2
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от shaurma.ru Посмотреть сообщение
Всем привет. При разработки приложения для базы столкнулся с такой проблемой - у меня есть два DBLookupComboBox в которых я выбираю месяц и год. Есть таблица в Access: Месяц(КодМесяца(ключ), НазваниеМесяца, Год). Необходимо передать в ADODataSet КодМесяца.DBgrid поключен к ADODataSet. Как быть?
Ничего не понятно.

"DBgrid поключен к ADODataSet" - в смысле ADOQuery?

В DBGrid отображаются данные из DataSet, а при чем тут DBLookupComboBox?

Может Вам просто нужно в Гриде показать LookUp-поле, для которого в таблице БД будет числовой номер месяца,а в Гриде его наименование?
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 10.12.2011, 16:08   #3
shaurma.ru
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию

есть два DBLookupComboBox,подключены к таблице "месяц" в которых я выбираю НазваниеМесяца и Год соответственно, keyvalue из этих боксов должно по идее передаваться в SQL запрос, из которого нужно получить КодМесяца (внешний ключ к другой таблице).Надеюсь так понятно? Схему прилагаю[IMG]
Таблица DBGrid строится из запроса в ADODataSet[IMG][/IMG]

Последний раз редактировалось shaurma.ru; 10.12.2011 в 16:11.
shaurma.ru вне форума Ответить с цитированием
Старый 10.12.2011, 18:44   #4
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Надеюсь так понятно?
С трудом.
1. DBLookupComboBox обычно используется для ввода значения в базу данных (ч-з Dataset), которое соответствует какому нибудь наименованию. (Для этого к нему подключается таблица словарь, ListSource).
Например ComboBox соединен с основной таблицей.Месяц, где месяц - число 1..12. Визуально в нем отображаются имена месяцев (Январь, Февраль..), которые находятся в дополнительной таблице всего из 12 записей - НомерМесяца, ИмяМесяца.
Зачем у Вас в таблице вместе с именами месяцев еще и год пока непонятно.
2.Похоже, что Вам нужно получить данные по отработанному времени за определенный месяц и год. Тогда DBLookupComboBox вообще не нужен.
Для выбора входных параметров SQL-запроса достаточно двух просто ComboBox-ов. Один-год, второй-месяц. Из них можно извлечь числовые значения, вставить их как параметры в запрос, а результат запроса вывести в DBGrid.

Я так вижу.. ;-)
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 10.12.2011, 19:17   #5
shaurma.ru
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию

Названий месяцев двенадцать, а "годов" может быть сколько угодно)) поэтому и кодовмесяца мб сколько угодно))

Цитата:
Сообщение от alexiz Посмотреть сообщение
вставить их как параметры в запрос
А как добыть эти самые параметры для запроса?? если грид заполняется адодатасетом и запрос у меня на вставку записей .Insert; , например
Vedom.DBGrid1.DataSource.DataSet.Fi elds[0].AsInteger:=strtoint(DBLookupComboB ox1.KeyValue);
shaurma.ru вне форума Ответить с цитированием
Старый 10.12.2011, 22:26   #6
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от shaurma.ru Посмотреть сообщение
Названий месяцев двенадцать, а "годов" может быть сколько угодно)) поэтому и кодов месяца мб сколько угодно))
Ну, вот, туман уже рассеивается.
Код месяца у Вас это что-то типа номера рабочего периода-месяца, в которых накапливаются данные. Значит в таблице ГодыМесяцы могут быть значения КодМесяца от, допустим, 1007 (2010 июль) до 1111 (2011 ноябрь).
DBLookupCombo здесь не нужны, достаточно поставить рядом два просто ComboBox-a, первый - Годы, второй - Месяцы. Для заполнения первого нужно выбрать только годы, имеющиеся в табл. ГодМес-в, а для второго опять же наши традиционные 12 месяцев.

После этого по кнопке или по событию OnChange переоткрывать ADOQuery:

Код:
ADOQuery.SQL.Text:='select * from MyTable where NMONTH=:NMONTH';      
ADOQuery.Parameters.ParamByName('NMONTH').Value:=GetMonthCode;
ADOQuery.Open;
Цитата:
Сообщение от shaurma.ru Посмотреть сообщение
А как добыть эти самые параметры для запроса??
И самое интересное - функция GetMonthCode.

Если КодМесяца Вы сделаете в показанном выше виде, то

Код:
function GetMonthCode: integer;
begin
  Result:=StrToint(Copy(YearComboBox.Text,3,2))*100+
             MonthComboBox.ItemIndex+1; //возможные значения от 0 до 11
end;
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача значения в select nec117 PHP 3 30.11.2010 14:31
Передача значения ячейки Domain Microsoft Office Excel 1 04.10.2010 12:22
Передача значения переменной в Query. SQL R11 Помощь студентам 8 18.04.2010 23:57
Передача значения в форму другой книги. Kveldulv Microsoft Office Excel 3 02.04.2010 07:17
передача значения функции proga. Помощь студентам 5 29.10.2009 22:23