Работа с БД Access
Есть опыт работы с БД Paradox, но это, как я понимаю, совсем не то.
Вопросов уже набежала куча, но начну по порядку и с начала:
1) БД можно открыть с помощью BDE или с помощью ADO. В чём разница ? Я о скорости открытия и работы с БД (если она примитивная, 3-4 таблицы). И где-то читал, что после Office2000 BDE не открывает БД Access.
2) Мне бы сделать таК, чтобы работать с БД через мою программу можно было на любом компьютере. А то когда писал БД Paradox, то для работы требовалась установленная Delphi.
2. BDE устарел и остался только для совместимости со старыми программами.
3. Для работы Paradox через BDE нужно только установленный BDE, но никак не Delphi.
4. Для работы с БД Access и таблицами Excel через ADO не требуется установленного на компьютере MSOfice (правда, в отношении Access я не совсем уверен). Требуется только соответствующий провайдер в ODBC (Microsoft Jet 4, если мне что-то не изменяет).
SQL и в африке SQL :D
Да и запросы можно теперь прямо в БД писать и отлаживать - экономит кучу времени - а потом вызывать как "хранимые процедуры" просто по имени. В ADO даже компонент такой есть - ADOStoredProc - только запросы без параметров через ADOTable, как таблицы, открывать приходится.
А вот если без параметров ну никак? ADOStoredPrco уже не получится использовать?
В общем, с запросами работаем следующим образом: ежели без параметров, то открываем через ADOTable и работаем как с таблицей. Ежели с параметрами, то открываем через ADOStoredPoc: указываем имя запроса и значения параметров (через свойство Parameters).
Промежуточный вариант, объединяющий оба компонента - использование ADODataSet. Указваем требуемое значение свойства CommandType (перечисляемое), хотя вполне прокатит и cmdText.
Назрел ещё вопрос:
- Как организовать сортировку по какому-либо полю (по увеличению/по уменьшению). Т.е. нажал вверху над над полем на кнопку - и вся таблица отсортировалась по этому полю. Читал, что возможна сортировка НД, но толком, как всегда, не написано.
Сортировку непосредственно в Delphi или в Access?
Сортировка проводиться через SOL запрос в компоненте
ADOQuery1 примерно так:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Имя таблицы');
ADOQuery1.SQL.Add('order by имя поля для сортировки');
ADOQuery1.Active:=true;
Будут вопросы - буду ложить сюда )
Цитата: SerMax
В Delphi. Уже нашёл ответ. Мож кому понадобится :
Сортировка проводиться через SOL запрос в компоненте
ADOQuery1 примерно так:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Имя таблицы');
ADOQuery1.SQL.Add('order by имя поля для сортировки');
ADOQuery1.Active:=true;
Будут вопросы - буду ложить сюда )
Сортировка проводиться через SOL запрос в компоненте
ADOQuery1 примерно так:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Имя таблицы');
ADOQuery1.SQL.Add('order by имя поля для сортировки');
ADOQuery1.Active:=true;
Будут вопросы - буду ложить сюда )
Ну это прям в ФАК'и выложить надо :D :D :D
Есть DBGrid1, который соединён с базой Access. БД содержит 2 таблицы, которые БЕЗ ключевых полей и никак между НЕ связаны.
Есть DBNavigator к DBGrid1
Так вот в DBGRID1 загружаю БД.
Затем :
1) напрямую изменяю значения любой строки 2 таблицы (она полностью пустая). Выдаётс ошибка ".... недостаточные или неполные сведения о ключевом поле. Обновление влияет на слишком большое чило строк".
2) редактирую через тот же DBNavigator (по идее разницы то нет). Созраняю изменения - та же ошибка.
Причём, если добавить строку, сохранить, затем изменить значения полей - работает.
И если изначально база не пуста, то тоже изменяется нормально. А вот изменить пустые поля - не катит :(
Поля все текстовые. Ширина полей приличная.
что не так делаю ?
Будут вопросы - буду ложить сюда )[/quote]
Уважаемый, читайте правила форума Делфи. одна тема - один вопрос. перед созданием темы - используйте Поиск.