Access & C++(Rad studio 2010), запросы |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Access & C++(Rad studio 2010), запросы |
Nike0 |
26.03.2011 17:05
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
Доброго времени суток, появился вопрос при написании курсовой: есть база данных , имеется форма , в первый комбобокс я записываю все значения столбца Отделение таблицы Отделения (идентификатор Id_отделения я хотел использовать для дальнейших целей):
void __fastcall TForm1::FormCreate(TObject *Sender) затем я хочу, чтобы при выборе определенного отделения у меня из таблицы Группы записывались значения столбца Группа в комбобокс2, я пытался все это счастье сделать так: void __fastcall TForm1::DBComboBox1Change(TObject *Sender) но почему-то он игнорирует сравнение идентификаторов и записывает все значения таблицы Группы. Подскажите мб как это делать, просто на C# чтобы все это сделать надо 4 раза мышкой щелкнуть, зато никак там с добавлением данных в таблицу разобраться не могу. |
volvo |
26.03.2011 19:56
Сообщение
#2
|
Гость |
Цитата просто на C# чтобы все это сделать надо 4 раза мышкой щелкнуть И зачем эта информация? Тебе ж надо на С++ сделать? Вот и делай, не смотри, сколько где раз надо щелкнуть...Все проще на самом деле: 1) на форме DataSource (2 шт.), ADOTable (2 шт.) и DBLookupComboBox (тоже 2 шт.) 2) настраиваем ADOTable1 на таблицу "Отделения", а ADOTable2 - на "Группы" 3) настраиваем DataSource1 -> Dataset = ADOTable1 и DataSource2 -> Dataset = ADOTable2 4) теперь LookupComboBox-ы. Первый будет отображать отделения. Для этого у него: ListSource = DataSource1; ListField = Отделение; KeyField = Id_Отделение. Второй - для отображения связанных групп. Сначала настраиваем его вообще на отображение групп: ListSource = DataSource2; ListField = Группы; KeyField = Id_Группы. 5) А вот теперь надо добавить тот самый функционал, что после выбора определенного значения в первом Lookup-е, во втором останутся только связанные значения. Для этого: void __fastcall TForm1::DBLookupComboBox1Click(TObject *Sender)Вот и все... А заполнение вручную - выброси из головы, не надо оно. Все делается автоматом... Ну, и что? Где сложнее настроить нужное поведение? |
Nike0 |
27.03.2011 0:35
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
Ну, и что? Где сложнее настроить нужное поведение? Ммм, все оказалось проще, чем я думал, спасибо, просто я не знаю всех тонкостей работы с бд, если вдруг появятся какие-то сложности, то я знаю, где могут дать совет и подсказать Сообщение отредактировано: Nike0 - 27.03.2011 0:40 |
Nike0 |
2.04.2011 18:16
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
В ходе написания проги возник вопрос: мне нужно вывести успеваемость студентов определенной группы в дбгрид. Я почитал книгу по скл запросам, нашел INSERT INTO SELECT, т.е. из одной в другую переносит значения, однако есть жесткие ограничения насчет количества столбцов. потом пробывал сделать в аксесе запрос, который просто подключил бы к адотейбл и выводил бы всех студентов и запросом ограничивал бы группу. Но и здесь проблема: в гриде выводит только одно поле'ФИО' и все, очтальную информацию не показывает, а в аксесе все норм.
|
volvo |
2.04.2011 20:36
Сообщение
#5
|
Гость |
Добавляю в Access-базу Query следующего вида:
, добавляю на форму еще одну AdoTable3 и DataSource3, связываю AdoTable3 с q2, и DBGrid - с этой самой Adotable3, так, что у меня сразу в гриде появляется вся статистика, независимо от группы: , а потом, по какому-то событию (например, по изменению DBLookupCombobox2, не зря ж на него навешивалось отображение групп, правда?), точно так же, как и выше, делаю фильтрацию: void __fastcall TForm1::DBLookupComboBox2Click(TObject *Sender), после чего запускаю программу, выбираю в первом Lookup-е отделение, во втором - группу, и ... Что я делаю не так? |
Nike0 |
3.04.2011 13:42
Сообщение
#6
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
|
Nike0 |
7.04.2011 20:32
Сообщение
#7
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
Добрый вечер, опять вопросы: нашал более-менее структурированно делать курсач, поэтому для редактирования таблиц завел 2 форму, повесил туда пока 2 лукапа (отделения и группы) и по 3 кнопки с эдитами на каждую (add,edit,del). Затем начал подключать к лукапам таблицы с первой формы в ListSource (Form1.DataSource1 и тд). НО, когда я хочу добавить\изменить\удалить запись, у меня выскакивает экспепшн Missing Connection or ConnectionString. Затем я все нужные таблицы, квери и адооконнекшн закинул на 2 форму, но все равно такая ошибка, в чем проблема тогда?
|
Nike0 |
9.04.2011 22:00
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
решил с этим проблему, остался последний вопрос: какой компонент для формирования отчета в Excel есть в С++? мне преподаватель нарисовал приблизительно форму отчета, только не знаю в чем его делать
|
Nike0 |
11.04.2011 9:51
Сообщение
#9
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
Почитал. Есть компонент QuickReport, но он у меня отсутствует, посоветуете может какое другое средство для формирования отчетов?
|
volvo |
11.04.2011 12:53
Сообщение
#10
|
Гость |
Что значит "отсутствует"? Версия Билдера какая? Может он есть, но не установлен по умолчанию, и его надо доустановить (как было с Дельфи 7). В 2009-м Билдере по умолчанию ставится Rave Reports (закладка Rave ,все имена классов начинаются с TRv...)
В конце концов можно напрямую работать с Excel-ем, через OLE, без посредников... |
Nike0 |
12.04.2011 9:22
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: 0 |
Что значит "отсутствует"? Версия Билдера какая? Может он есть, но не установлен по умолчанию, и его надо доустановить (как было с Дельфи 7). В 2009-м Билдере по умолчанию ставится Rave Reports (закладка Rave ,все имена классов начинаются с TRv...) В конце концов можно напрямую работать с Excel-ем, через OLE, без посредников... ну вот просто вкладки нет, code gear 2010, Rave Reports по умолчанию ставились, но в компонентах его нет и все... Я бы делал через Excel, но там сложноватая структура отчета у меня... И если нет компонента, его скачать и просто в пакет билдера доустановить? |
volvo |
12.04.2011 9:33
Сообщение
#12
|
Гость |
Цитата code gear 2010, Rave Reports по умолчанию ставились, но в компонентах его нет и все... Если ставились - то ходи в меню Component -> Install Packages, и проверяй, установлена ли вот эта галочка:Эскизы прикрепленных изображений |
Текстовая версия | 29.04.2024 3:54 |