C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
База в Access, запросы
Konstantine
  Отправлено: 28.09.2004, 08:23


Мастер участка

Группа: Модератор
Сообщений: 545



начал строить базу в Access — чтоб прога могла с разными СУБД работать (подключение через ODBC к ADO)
оказалось, что она не хочет обрабатывать запросы на Insert и Update, причём внутри оболочки запрос катит... (правда пишет, что типа стоки добавлены/обновлены), а с проги не хочет... Можно ли с этим что-нибудь сделать? мне нада чтоб работали простейшие (одноуровневые) запросы на SELECT, INSERT и UPDATE

и ещё, второй вопрос — можно ли в запросах писАть несколько подряд (не вложеных) запросов — типа INSERT и тут-же SELECT? — на любых СУБД (в частности MSSQL 2000, Access)
olegenty
Отправлено: 28.09.2004, 08:53


Ветеран

Группа: Модератор
Сообщений: 2412



ну то, что не отрабатывают запросы — полностью твоя вина. а где грабли — из твоего сообщения не следует.

касаемо же пакетных запросов — MSSQL их поддерживает, Acces — нет, Interbase/Firebird/Yaffil — в чистом виде — нет, при наличии спец. компонента — да, но без SELECT, Oracle — не знаю...
AVC
Отправлено: 28.09.2004, 08:59


Ветеран

Группа: Модератор
Сообщений: 1583



По 1: а транзакция подтверждена?
QUOTE

можно ли в запросах писАть несколько подряд (не вложеных) запросов — типа INSERT и тут-же SELECT

Я таких баз не знаю. Иногда можно писать несколько Insert или Update подряд (Sybase). На Oracle это категорически нельзя.
В общем случае:
1 — Это плохая практика, так как стандарт SQL этого не оговаривает
2 — Это легко выяснить проверкой на конкретном сервере (но это не гарантирует что это будет всегда, даже для этого сервера)

Если вы пытаетесь писать базонезивисимое приложение (мне так показалось из ваших вопросов), то кроме самого простого случае этого делать так же не рекомендуется.
Konstantine
Отправлено: 28.09.2004, 09:25


Мастер участка

Группа: Модератор
Сообщений: 545



ну насчёт второго вопроса — Я понял, ОК.
а насчёт первого — ну а куда транзакции деться, если в этом-же месте SELECT работает, а текст запроса на INSERT — пишу с проги — не работает, пишу снутри оболочки Access — работает хотя и пишет что типа внимание — добавляются записи... с проги тоже что-то подобное пишет (загасить я могу), но результата — нету!!!
AVC
Отправлено: 28.09.2004, 09:39


Ветеран

Группа: Модератор
Сообщений: 1583



А насчет первого. Ну зачем юзать Access при наличии бесплатного FB? Вечно с ним (с Access'oм) геморрой smile.gif
Короче. Что пищит из проги, текст запроса и структуру таблицы в студию.
AVC
Отправлено: 28.09.2004, 09:53


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE
чтоб прога могла с разными СУБД работать

Сходу проскочил преамбулу, а сейчас перечитывал — увидел.
Бросьте. Получите средненькое приложение, которое ни чего хорошо делать не умеет. Выбор СУБД так же важен как выбор ОС и определяется решаемыми задачами. А после выбора СУБД грех не использовать её возможности на "всю катушку". Например: то, для чего в одной БД нужно писать код на С в другой делается парой встроенных команд.
Konstantine
Отправлено: 28.09.2004, 09:53


Мастер участка

Группа: Модератор
Сообщений: 545



[QUOTE]Ну зачем юзать Access при наличии бесплатного FB[/QUOTE]
что за FB, и где его взять?

[QUOTE Что пищит из проги, текст запроса и структуру таблицы в студию.[/QUOTE]
дословно — токо завтра смогу написАть...
AVC
Отправлено: 28.09.2004, 10:03


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE
что за FB, и где его взять?

Это FireBird. Почти Interbase. Взять можно, например, здесь Информация о IB 6 и Firebird, особенности, FAQ, переход с 5.x на 6, где скачать, комментарии и проч.

По выбору БД посмотрите еще эту тему Как организовать поиск в БД используя Seek там я касался этого вопроса
olegenty
Отправлено: 28.09.2004, 10:06


Ветеран

Группа: Модератор
Сообщений: 2412



Дубль 2: то, что не вставляется — твоя вина. Только что проверил — у меня всё вставляется. wink.gif
olegenty
Отправлено: 28.09.2004, 10:10


Ветеран

Группа: Модератор
Сообщений: 2412



да, и не забуть качнуть IBExpert с ibexpert.com, если остановишься на Firebird.

ну а уж про FB можешь хоть узадаваться вопросов, работающих с ним в этом форуме полно smile.gif
Gedeon
Отправлено: 28.09.2004, 18:53


Ветеран

Группа: Модератор
Сообщений: 1742



Че-то мне подсказывает, что запросы Вы пытаетесь выполнить из ADOQuery->Open(); так нельзя нужно ADOQuery->ExecSQL(); или вообще заюзать ADOCommand.
Konstantine
Отправлено: 29.09.2004, 09:50


Мастер участка

Группа: Модератор
Сообщений: 545



не,
1) делал я ExecSQL
2) при Open на эти запросы подругому ругается и всё равно выполняет

а ругается — [Microsoft][Драйвер ODBC Microsoft Access] В операции должен использоваться обновляемый запрос.

ОК, ладна, разобрался...

при настройке при подключении к ODBC я не устанавливал разрешения (ну не долазил туда), а когда поставил — ReadWrite — всё ОК стало!!!

Всем спасибо!!!
xim
Отправлено: 29.09.2004, 09:52


Станционный диспетчер

Группа: Участник
Сообщений: 143



Желательно бы увидеть NativeError и морду ошибки (ADOConnection->Errors[все]), ну и ConnectionString можно тоже
Konstantine
Отправлено: 29.09.2004, 11:32


Мастер участка

Группа: Модератор
Сообщений: 545



текст еррора Exception-ом высвечивает:

[Microsoft][Драйвер ODBC Microsoft Access] В операции должен использоваться обновляемый запрос.

а строка... ну она уже правильно создана

Вернуться в Работа с базами данных в C++Builder