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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.02.2010, 12:16   #1
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
Сообщение Локальные базы данных для Delphi

Здравствуйте.
Сразу объясню суть того, что мне нужно, но честно признаюсь - я не гений программирования, а простой парень, который учится.
Нужно создать программу, которая бы использовала файл базы данных, который находится в одной папке с самой программой (ну или в соседней директории, главное, чтобы он всегда был доступен, несмотря на перемещения самой программы, т.к. программа будет устанавливаться на компьютеры без SQL Explorer). В этой базе данных будет около 50 таблиц, заполнять которые нужно из самой программы, так же их нужно будет потом открывать, изменять и сохранять изменения. Проблема в том - как создать такую базу данных, а потом связать ее с Delphi. Я все перепробовал, и ClientDataSet и Query, но у меня не получается.
Дайте совет пожалуйста. Честно-говоря мне это нужно очень скоро, пожалуйста, помогите. Спасибо заранее.
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума
Старый 05.02.2010, 12:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Совет:
Создай базу в ACCESS, и с помошью компонента ADOQuery подключись к ней (она может при этом лежать рядом с программой, и работать на всех виндовсах NT)
I'm learning to live...
Stilet вне форума
Старый 05.02.2010, 12:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) гуглить пробовали? именно по фразе, что у Вас в тему вынесена...
2) навскидку, самый простой вариант - использовать через ADO (провайдер Microsoft JET OLE DB provider) доступ к файлам Access (.mdb )
либо Firebird embedded
либо SQLite
Serge_Bliznykov вне форума
Старый 09.02.2010, 12:36   #4
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Помещаем на форму компоненты: ADOConnection, ADOQuery с вкладки ADO, DataSource с вкладки DataAccess и компонент DBGrid с вкладки Data Controls. ADOQuery в свойстве Connection выбираем ADOConnection, у DataSource в свойстве DataSet выбираем ADOQuery и наконец у DBGrid в свойстве DataSource выбираем DataSource. Теперь налаживаем связ с БД. Делаем ее в Access и сохраняем в папку с прогой. Теперь компонент ADOConnection свойство ConnectionString.
1. В появившемся окне выбираем Use Connection String и Build
2. "Использовать строку подключения" и "сборка"
3. Создадим новое имя источника данных. Выбираем "New"
4. Driver do Microsoft Access -> Далее-> Browse
5. Указываем любое имя файла и "Сохранить"
6. Далее -> Готово
7. В новом окне "Выбрать" и ищем сохраненную БД. Ок -> сохранить. Потом снова ок
Если все сделано правильно при нажатии на кнопку "Проверить соеденение" выдаст сообщение "Проверка подключения выполнена". Снова Ок и Ок и мы у формы.
Свойство Connected отвечает за подключение к БД. Выскочит запрос с логином и паролем. Если их нет то просто окей. LoginPrompt отключает его. В ConnectionString у нас сформирована строка подключения. Разобраться в ней думаю труда не составит. Все предыдущее можно было не делать а сразу передать в ConnectionString сформированную правильно строку и в Connected передать true).
Ну и последнее. ADOQUery свойство SQL пишем запрос типа 'SELECT * FROM <тут имя нужной таблицы>' и в свойстве Active выбираем true. Дальше все реализуеш запросами через ADOQuery. Надеюсь помог.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума
Старый 09.02.2010, 20:34   #5
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Спасибо огромное всем кто ответил)) Все работает, просто классно. Stilet, serge и son, не представляете как вам благодарен.

еще такой вопрос появился. если будет примерно 10 баз, как можно сделать что-то вроде поиска по ним? пожалуйста, если можете помогите!!!
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!

Последний раз редактировалось artemavd; 18.09.2010 в 13:42.
Марк Охман вне форума
Старый 18.09.2010, 11:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если будет примерно 10 баз
А если 100?
Для чего так много баз?
Не лучше ли много таблиц в одной базе, но СУБД выбрать посерьезнее например MSSQL?
I'm learning to live...
Stilet вне форума
Старый 18.09.2010, 20:03   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Марк Охман, а действительно, зачем поиск по РАЗНЫМ БД ?! И где будет задаваться, где эти самые БД брать? Может, действительно, имеет смысл собрать все эти 10 БД в рамках одной БД?

Впрочем, хозяин — барин.
Решить эту задачу можно множеством разных способов.
Перечислю некоторые из них.
1) обычно в БД существует возможность создавать линки на БД/Таблицы из других БД. В этом случае выполняя запрос к прилинкованной таблице, фактически будет выборка из таблицы другой БД.

2) можно накидать на форму столько AdoConnection и AdoQuery - сколько различных БД. Все их связать и открывать одновременно в процедуре поиска.

3) но, скорее всего, Вам наиболее удобным будет третий вариант.
искать в цикле:
Код:
for i:=1 to 10 do begin
  AdoConnection1.ConnectionString := 'Подключение к I-й БД';
  AdoConnection1.Active := true;
  ADOQuery1.Open;
  ---> результаты поиска перенести (например, во временную таблицу
  ADOQuery1.Close;
  AdoConnection1.Active := false;
end;
разумеется, вышеприведённый код достаточно абстрактный, просто для иллюстрации...

p.s. ЕЩЁ раз подумайте, очень похоже, что Вы либо не ту задачу перед собой поставили, либо метод решения выбрали не совсем подходящий. в 99.99 случаев не должно быть в программе одновременная работа с разными БД.
Serge_Bliznykov вне форума
Старый 19.09.2010, 10:11   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Если посмотреть на даты публикаций первых постов ТС, то проблема изжила себя еще полгода назад...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума
Старый 19.09.2010, 12:53   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то проблема изжила себя еще полгода назад
Странно... А темка то всплыла в последних недавно...
I'm learning to live...
Stilet вне форума
Старый 19.09.2010, 13:00   #10
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А темка то всплыла в последних недавно...
Не далее как вчера, благодаря всеми уважаемому Stilet'у... Ну, это просто так, к слову...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базы данных в Delphi 4 мушкетера БД в Delphi 3 24.01.2010 13:54
Базы данных и Delphi DimOn4Ik Общие вопросы Delphi 1 06.01.2010 14:57
Нормализация атрибутов для базы данных Demetra Microsoft Office Access 1 04.12.2009 20:11
Таблицы для базы данных!!! S_Yevgeniy Помощь студентам 4 28.10.2009 11:32
компонент для базы данных sysyman БД в Delphi 10 06.07.2007 12:55