![]() |
|
![]() ![]() ![]() |
|
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Установил сегодня компоненты unidac и ehlib. Подключился к базе и вывел ее содержимое, все кажется довольно просто.
Появились вопросы: 1. увидел очень полезную вещь в DBGridEh - можно включить TRowDetailPanelEh, что дает "+" для каждой записи. Это то что мне нужно, я хочу отображать дополнительную информацию на нажатии на "+" из другой базы по общему ключу. Для примера я прикрепил архив, в нем в папке "Mysql Db query" есть два SQL файла для создания таблиц в MySQL. Таблица test1 содержит поля: id и name, а таблица test2 поля: id, imageurl .... и т.д. Как сделать, что бы по нажатию на "+" в открытом TRowDetailPanelEh отображалась информация(тоже в DBGridEh ) из таблицы test2? Квери которая выберет колонку должна быть(немного абстрактно ![]() 2. как обрабатывать исключения о любых ошибках связанных с запросами. 3. у меня есть поле imageurl, она указывает на картинку в интернете, как лучше загрузить эту картинку и отобразить в базе? или проще в Image, рядом с панелью? делать это когда пользователь кликает на любом Row. 4. как лучше и быстрее всего записывать информацию в базутаблицу используя эти компоненты? Например прикрепленные SQL файлы содержат квери для создания таблицы и наполнения. Просто в UniQuery загружаю ее и все? А как получать лог выполненного действия? Ошибки записи и\или выборки. 5. как получить в TreeView все базы и таблицы? Хотелось бы еще услышать наставления ![]() Это сообщение отредактировал(а) KAMIKAZE - 8.2.2011, 01:28 Присоединённый файл ( Кол-во скачиваний: 15 ) ![]() |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Задавай лучше вопросы по одному. А то их тут много и почти все заданы не корректно. Как то колупаться в этом потоке сознания не хочется.
|
|||
|
||||
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Я не знаю как перефразировать
![]() |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
KAMIKAZE, ну для начала ты очень вольно используешь слово "база". В первом вопросе, скорее всего, имеется ввиду таблица, в третьем - грид, в последнем вообще не понятно, что ты кроме таблиц еще собираешься отображать в дереве.
Под разделить я имел ввиду - по теме на каждый вопрос. Чего то мне кажется, что всем так будет удобнее. Тут такая ссылка вверху раздела есть - лишним не будет почитать. Это сообщение отредактировал(а) superVad - 7.2.2011, 23:15 |
|||
|
||||
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
||||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
1. select * from test2 where id=:ID
свойство MasterSource:= датасурс первого датасета. Все само будет связываться 2. try except end; 3. Загрузить в БД, url может быть недоступным. А как отобразить из базы, посмотри примеры, в папке дельфи/Demos есть аналогичное 4. Для скриптов создания таблиц и запихивания в БД лучше использовать соответствующий компонент UniScript, посмотри есть такой или нет, у меня в ODAC есть (производитель тот же, только компоненты не универсальные) 5. Ну это целая история. Читаешь БД, запихиваешь в TreeView и ChildNode им пустые создаешь, чтобы можно было ветвь открыть, затем при открытии (Expanding) читаешь соответствующие ресурсы и аналогично добавляешь, только уже к ветке выделенной, соответственно пустую ветвь сразу надо удалить. С уровнями придется определиться заранее. Добавлено через 2 минуты и 39 секунд Да, кстати, один вопрос - одна тема. Так ща запутаемся на что отвечали, на что нет. Это сообщение отредактировал(а) Vas - 8.2.2011, 16:14 -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
1. Немного не понял. Получилось сделать select * from test2 where id=:ID, только немного глючит, не сразу понимает. Я обрабатываю метод "DBGridEh1CellClick"
В нем ставлю переменную ID=Column.Field.AsString; Далее DBGridEh1RowDetailPanelShow формирует квери используя переменную ID. Но метод DBGridEh1CellClick не обрабатывается сразу на клике по +. Как его обработать то, клик на "+"? (что получилось прикрепил) А вот "MasterSource:= датасурс первого датасета" это как сделать не понятно. 2. Решен ![]() 3. Решен. 4. Решен. 5. Как считать БД? Получить список баз и таблиц в них? з.ы. у меня столько мелких вопросов, что на каждый тему создавать... ![]() Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() |
|||
|
||||
Vas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Чего не понятного то? ДБГрид у тебя связан с DataSource1, а тот в свою очередь с UniQuery1. С запросом типа
На RowPanel датагрида вешаем еще один грид и кидаем на форму DataSource2 и UniQuery2, связываем их с ДБГридом вторым, пишем запрос типа
И свойству UniQuery2.MasterSource:=DataSource1; Ну и открываем их оба, больше ничего обрабатывать не надо, при изменении положения курсора в 1 таблице, вторая будет автоматом показывать подчиненные ей записи Ну, а это смотря какая БД. Читай доки на нее и выполняй запросы. -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||
|
|||||
KAMIKAZE |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Да.
Так и сделано. А куда писать запрос? На каком событии? ТОже непонятно на каком событии, и потом назад ставить нужно? |
||||
|
|||||
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
А нету готового примера для построения дерева баз и таблиц?
|
|||
|
||||
Vas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Ни на каком событии, запрос пишешь в свойстве SQL компонента UniQuery1 и UniQuery2. Связываем в дизайн-тайм в инспекторе объектов. Единственное условие - это при показе формы или в дизайнере надо открыть оба набора данных и все должно само связаться. А ну еще в первом запросе должно быть поле с именем параметра второго запроса, смотри мой предыдущий пост, там в первом запросе явно выбрано поле ID, а во втором параметр с таким же именем. Примера нет, ищи в инете, в частности основы вот Для мускуля выбор всех БД
Выбор всех таблиц
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||
|
|||||
KAMIKAZE |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
т.е. квери будет такая(я еще не работе, не могу проверить, вечером помучаю ![]()
Квери ведь должна быть сформирована с проверкой на полей айди, текущей выделенной, мне не понятно какого она рода должна быть. Может я не правильно спросил насчет дерева таблиц. Мне нужно сделать копию функционала как в SQLYog т.е. при подключении в любому серверу(либо MySQL либо MSSQL), у меня отображаются все базы. Ну это делается запросом
а вот далее как пройтись по этому списку и сделать выборку таблиц? затем полей. И так для MySQL либо MSSQL в зависимости от текущего подключения. Очень странно, что нету готового компонента, например от UniDAC, придется что ли изобретать велосипед. Это сообщение отредактировал(а) KAMIKAZE - 16.2.2011, 16:02 |
||||
|
|||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Читай книги, в разделе по работе с БД есть примеры связывания таблиц, аналогично вяжутся и запросы.
Для каждой БД свой синтаксис запросов для получения БД, таблиц, я привел для MySQL. MSSQL я не знаю -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
KAMIKAZE |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Все равно не понятно какую квери написать. Можешь пожалуйста на примере что я приатачил в постах выше написать как надо.
И вот можно для MySQL использовать код
А как получать результаты его выполнения? Например даже я делаю запрос выборки всех полей, то как его считать, результат запроса? Можно с помощью DBGridEh1 сделать такую деревовидную структуру, ну как в sqlyog? Это сообщение отредактировал(а) KAMIKAZE - 17.2.2011, 01:09 |
|||
|
||||
Vas |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Не могу, у меня нет компонентов UniDac. Прежде чем показать таблицы БД, надо выбрать БД в MySQL, т.е. выполнить запрос
Ну когда запрос открыт перемещаешься по строкам выборки и добавляешь данные в TreeView. И добавляешь фиктивную пустую ветвь. Затем, когда пользователь тыркает + на раскрытие ветви выполняешь запрос на выбор БД, удаляешь пустую ветвь у выбранной, потом выполянешь запрос на выбор таблиц
И строишь подчиненную ветвь. -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |