Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с БД Access

5.2K
27 января 2007 года
SerMax
96 / / 04.11.2006
Есть задача написать программу, работающую с БД Access.
Есть опыт работы с БД Paradox, но это, как я понимаю, совсем не то.
Вопросов уже набежала куча, но начну по порядку и с начала:

1) БД можно открыть с помощью BDE или с помощью ADO. В чём разница ? Я о скорости открытия и работы с БД (если она примитивная, 3-4 таблицы). И где-то читал, что после Office2000 BDE не открывает БД Access.
2) Мне бы сделать таК, чтобы работать с БД через мою программу можно было на любом компьютере. А то когда писал БД Paradox, то для работы требовалась установленная Delphi.
8
27 января 2007 года
mfender
3.5K / / 15.06.2005
1. Использу ADO в любом случае.
2. BDE устарел и остался только для совместимости со старыми программами.
3. Для работы Paradox через BDE нужно только установленный BDE, но никак не Delphi.
4. Для работы с БД Access и таблицами Excel через ADO не требуется установленного на компьютере MSOfice (правда, в отношении Access я не совсем уверен). Требуется только соответствующий провайдер в ODBC (Microsoft Jet 4, если мне что-то не изменяет).
309
28 января 2007 года
el scorpio
1.1K / / 19.09.2006
ADO от BDE мало чем отличается: разве что некоторые свойства по-другому называются (Parameters вместо Params), да типы результатов слегка иные. Но CodeInsight сам покажет, как правильно писать.
SQL и в африке SQL :D
Да и запросы можно теперь прямо в БД писать и отлаживать - экономит кучу времени - а потом вызывать как "хранимые процедуры" просто по имени. В ADO даже компонент такой есть - ADOStoredProc - только запросы без параметров через ADOTable, как таблицы, открывать приходится.
6
29 января 2007 года
George
4.1K / / 05.01.2007
А вот если без параметров ну никак? ADOStoredPrco уже не получится использовать?
309
30 января 2007 года
el scorpio
1.1K / / 19.09.2006
Почему-то :eek: на этапе разработки в свойствах ADOStoredProc перечисляются только имена запросов c параметрами - запросы без параметров перечисляются в ADOTable :(

В общем, с запросами работаем следующим образом: ежели без параметров, то открываем через ADOTable и работаем как с таблицей. Ежели с параметрами, то открываем через ADOStoredPoc: указываем имя запроса и значения параметров (через свойство Parameters).
Промежуточный вариант, объединяющий оба компонента - использование ADODataSet. Указваем требуемое значение свойства CommandType (перечисляемое), хотя вполне прокатит и cmdText.
5.2K
31 января 2007 года
SerMax
96 / / 04.11.2006
Всем привет!
Назрел ещё вопрос:

- Как организовать сортировку по какому-либо полю (по увеличению/по уменьшению). Т.е. нажал вверху над над полем на кнопку - и вся таблица отсортировалась по этому полю. Читал, что возможна сортировка НД, но толком, как всегда, не написано.
6
31 января 2007 года
George
4.1K / / 05.01.2007
Сортировку непосредственно в Delphi или в Access?
5.2K
31 января 2007 года
SerMax
96 / / 04.11.2006
В Delphi. Уже нашёл ответ. Мож кому понадобится :

Сортировка проводиться через SOL запрос в компоненте
ADOQuery1 примерно так:

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Имя таблицы');
ADOQuery1.SQL.Add('order by имя поля для сортировки');
ADOQuery1.Active:=true;

Будут вопросы - буду ложить сюда )
8
31 января 2007 года
mfender
3.5K / / 15.06.2005
Цитата: SerMax
В Delphi. Уже нашёл ответ. Мож кому понадобится :

Сортировка проводиться через SOL запрос в компоненте
ADOQuery1 примерно так:

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Имя таблицы');
ADOQuery1.SQL.Add('order by имя поля для сортировки');
ADOQuery1.Active:=true;

Будут вопросы - буду ложить сюда )


Ну это прям в ФАК'и выложить надо :D :D :D

5.2K
31 января 2007 года
SerMax
96 / / 04.11.2006
Что-то у меня очередная ламерская проблема. Вот захочешь - не добьёшься такого :)

Есть DBGrid1, который соединён с базой Access. БД содержит 2 таблицы, которые БЕЗ ключевых полей и никак между НЕ связаны.
Есть DBNavigator к DBGrid1

Так вот в DBGRID1 загружаю БД.
Затем :
1) напрямую изменяю значения любой строки 2 таблицы (она полностью пустая). Выдаётс ошибка ".... недостаточные или неполные сведения о ключевом поле. Обновление влияет на слишком большое чило строк".
2) редактирую через тот же DBNavigator (по идее разницы то нет). Созраняю изменения - та же ошибка.

Причём, если добавить строку, сохранить, затем изменить значения полей - работает.
И если изначально база не пуста, то тоже изменяется нормально. А вот изменить пустые поля - не катит :(

Поля все текстовые. Ширина полей приличная.
что не так делаю ?
242
01 февраля 2007 года
Оlga
2.2K / / 04.02.2006
[quote=SerMax]
Будут вопросы - буду ложить сюда )[/quote]
Уважаемый, читайте правила форума Делфи. одна тема - один вопрос. перед созданием темы - используйте Поиск.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог