link2840 link2841 link2842 link2843 link2844 link2845 link2846 link2847 link2848 link2849 link2850 link2851 link2852 link2853 link2854 link2855 link2856 link2857 link2858 link2859 link2860 link2861 link2862 link2863 link2864 link2865 link2866 link2867 link2868 link2869 link2870 link2871 link2872 link2873 link2874 link2875 link2876 link2877 link2878 link2879 link2880 link2881 link2882 link2883 link2884 link2885 link2886 link2887 link2888 link2889 link2890 link2891 link2892 link2893 link2894 link2895 link2896 link2897 link2898 link2899 link2900 link2901 link2902 link2903 link2904 link2905 link2906 link2907 link2908 link2909 link2910 link2911 link2912 link2913 link2914 link2915 link2916 link2917 link2918 link2919 link2920 link2921 link2922 link2923 link2924 link2925 link2926 link2927 link2928 link2929 link2930 link2931 link2932 link2933 link2934 link2935 link2936 link2937 link2938 link2939 link2940 link2941 link2942 link2943 link2944 link2945 link2946 link2947 link2948 link2949 link2950 link2951 link2952 link2953 link2954 link2955 link2956 link2957 link2958 link2959 link2960 link2961 link2962 link2963 link2964 link2965 link2966 link2967 link2968 link2969 link2970 link2971 link2972 link2973 link2974 link2975 link2976 link2977 link2978 link2979 link2980 link2981
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