0 / 0 / 1
Регистрация: 03.03.2010
Сообщений: 14

SQL-запрос работает в Access, а в Delphi не работает :'(

04.03.2010, 08:05. Показов 4908. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Две связанные таблицы 1к1. Вводим данные в поле одной таблицы и во второй должны быть сделаны теже изменения в одноимённом поле, т.е. добавляем запись в одной таблицы и вставляем её в другую таблицу в одноимённое поле:
SQL
1
2
3
4
INSERT INTO БАЛЛЫ(КОД) 
SELECT [КОД-ФИО].код 
FROM [КОД-ФИО] LEFT JOIN БАЛЛЫ ON [КОД-ФИО].код=БАЛЛЫ.код 
WHERE ([КОД-ФИО].код<>[БАЛЛЫ].[код]);
допустим в КОД-ФИО.код добавили запись, она добавляется и в БАЛЛЫ.код, и не вызывает ошибки, т.к. добавляются только записи которых ещё нету в БАЛЛЫ.код.

Проблема в том, что в Access данный запрос работает безупречно, а вот в Delphi7 не выдаёт ошибки, но и не добавляет заиси в таблицу БАЛЛЫ.
Код Delphi:
Delphi
1
2
3
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('INSERT INTO БАЛЛЫ(КОД) SELECT [КОД-ФИО].код FROM [КОД-ФИО] LEFT JOIN БАЛЛЫ ON [КОД-ФИО].код=БАЛЛЫ.код WHERE ([КОД-ФИО].код<>[БАЛЛЫ].[код]);');
ADOQuery5.ExecSQL;
Подскажите пожалуйста в чём проблема? может LEFT JOIN в Delphi7 работает некоректно?

Добавлено через 11 часов 32 минуты
Изменил таблицы, теперь Заполняю таблицу ДЕЛО, заполняю в ней поле [шифр-абитуриент], и если такого значения поля ещё нету в АБИТУРИЕНТ.[шифр-абитуриент], то добавляю запись следующим SQL-запросом:
SQL
1
2
3
4
5
INSERT INTO АБИТУРИЕНТ ( [шифр-абитуриент] )
SELECT ДЕЛО.[шифр-абитуриент]
FROM ДЕЛО LEFT JOIN АБИТУРИЕНТ ON ДЕЛО.[шифр-абитуриент]=АБИТУРИЕНТ.[шифр-абитуриент]
WHERE ДЕЛО.[шифр-абитуриент]<>АБИТУРИЕНТ.[шифр-абитуриент]
GROUP BY ДЕЛО.[шифр-абитуриент];
В Access'е всё работает, и если в АБИТУРИЕНТ.[шифр-абитуриент] нету какого нибудь значения из ДЕЛО.[шифр-абитуриент], то оно добавляется.

А вот в Delphi7 данный SQL-запрос ничего не производит(
Делаю следующим образом:
Delphi
1
2
3
4
5
6
7
ADOQuery5.SQL.Clear;
   ADOQuery5.SQL.Add('
INSERT INTO АБИТУРИЕНТ([шифр-абитуриент]) 
SELECT ДЕЛО.[шифр-абитуриент] 
FROM ДЕЛО LEFT JOIN АБИТУРИЕНТ ON (ДЕЛО.[шифр-абитуриент] = АБИТУРИЕНТ.[шифр-абитуриент])
WHERE ДЕЛО.[шифр-абитуриент]<>АБИТУРИЕНТ.[шифр-абитуриент] Group By ДЕЛО.[шифр-абитуриент] ;');
   ADOQuery5.ExecSQL;
и безрезультатно ((
Помогите разобраться в чём проблема.
Подскажите пожалуйста, есть ли способ вызывать Delphi SQL-запрос из Access, минуя ADOQuery?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2010, 08:05
Ответы с готовыми решениями:

SQL-запрос в Delphi и в Access один и тот же, но в Delphi не работает
ри обращение к базе в Access я использую код: with ADOQueryMain do begin Active:=false; SQL.Clear; SQL.Add('SELECT Code,...

Не работает параметрический запрос(SQL)(Delphi)
Здравствуй, у меня возникла проблема. Пытаюсь сделать параметрический запрос но ни чего не выходит. Использую компонент Query (таблицу...

не работает поиск по бд Access на основе sql приложение написано в delphi
Есть БД компаний для которой надо организовать поиск по названию, предоставляемым услугам, адресу и телефону. Сама база находиться в...

9
paladin
 Аватар для Yurii_74
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
04.03.2010, 08:17
Цитата Сообщение от Stein21 Посмотреть сообщение
ADO
В справке по Аксу всегда выдаются два варианта (DAO и ADO). Может оформление имени полей/таблиц должно быть несколько другое?
0
0 / 0 / 1
Регистрация: 03.03.2010
Сообщений: 14
04.03.2010, 08:30  [ТС]
Delphi
1
2
3
4
5
6
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('
INSERT INTO АБИТУРИЕНТ ( [шифр-абитуриент] )
SELECT ДЕЛО.[шифр-абитуриент]
FROM ДЕЛО;')
ADOQuery5.ExecSQL;
Такая запись в Delphi выполняется, но если в АБИТУРИЕНТ. [шифр-абитуриент] уже есть запись, которую мы внесли в ДЕЛО.[шифр-абитуриент] - то выдаёт(понятное дело) ошибку, т.к. [шифр-абитуриент] является ключевым полем для АБИТУРИЕНТ. Так что такой запрос не катит (
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.03.2010, 09:00
Stein21, вы бы хоть выложили ошибки, которые вам сыпет дельфи... а еще называть поля и таблицы на кириллицы, да еще использовать в названиях минусы - это муветон...
0
paladin
 Аватар для Yurii_74
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
04.03.2010, 09:27
А если это сделать с помощью WHERE <что-то там> NOT IN SELECT ...?
0
0 / 0 / 1
Регистрация: 03.03.2010
Сообщений: 14
05.03.2010, 08:23  [ТС]
Lord_Voodoo, Ошибки никакой не даёт - просто не делает ничего.. В акссессе запрос добавляет данные, а в дрелфи тот же запрос ничего не делает.

Добавлено через 14 часов 5 минут
Возникла мысль: Запрос я делал в Access 2010, и в Delphi7(2002г.). Может в этом разница - может за 8 лет что-то поменялось в запросах (?).
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.03.2010, 08:59
Stein21, ну конечно, за 20 лет ничего не менялось, зато вот недавно решили все стандарты поменять... вообще поведение вашего кода удивляет, потому что сразу не видно, в чем же причина... но скажу вам одно - не циклитесь на этих поделках мелкософта, лучше делайте базу на нормальной СУБД...
0
0 / 0 / 1
Регистрация: 03.03.2010
Сообщений: 14
05.03.2010, 09:17  [ТС]
Когда думал на чём делать базу, наткнулся на соц-опрос, в котором большинство программистов ответили, что для локальной БД предпочитают Access, а для трёхзвенки Microsoft SQL Server. Вот и решил довериться MicroSoft'у. А теперь оказуется, что это поделки ((

Добавлено через 6 минут
Lord_Voodoo, если не секрет, что вы считаете нормальной СУБД?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.03.2010, 09:22
Stein21, незнаю, где вы нарыли тот запрос, но я бы больше там после такого не шаровался! для локалки отлично сойдут и интербейс, и мускул... тем более начнем с того, что если офиса на машине не будет, то на ХР очень может быть, что твоя прога работать не будет, а для моих СУБд хватит по одной библиотеке, ну а вы решайте сами

Цитата Сообщение от Stein21 Посмотреть сообщение
если не секрет, что вы считаете нормальной СУБД?
в последнее время просто влюбился в postgres, а вообще все, кроме аксесса (поделка для бухгалтеров), даже FoxPro
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
05.03.2010, 09:38
Во-первых, уберите точку запятой в конце запроса, возможно, ADO глючит из-за разделителя.
Во-вторых, попробуйте имя таблицы тоже везде взять в квадратные скобки. (А на будущее - постарайтесь не использовать русских имен таблиц и столбцов, не всё с ними так просто, как хотелось бы)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2010, 09:38
Помогаю со студенческими работами здесь

Access и Bilder. Запрос работает в access и не работает в билдере
Здравствуйте, уважаемые. Очень нужен совет очень мудрого человека. Делаю программу тестирования ординаторов для больницы. Ситуация...

Запрос к бд работает в аксес но не работает в delphi? Подскажите в чём ошибка
begin //ADOQuery1.SQL.Text:='drop table `request`'; //ADOQuery1.ExecSQL; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('Select...

Запрос работает в IBExpert и не работает в Delphi из компонента IBQuery
Точнее иногда если просматривать его значение в Watch то при открытии видна ошибка Delphi exception EDatabaseError at $89DF91D, а при...

Запрос работает через Access, но не работает ASP.
Привет Коллеги ! У меня возникла проблема с ADO В MS ACCESS базе данных есть табличка TABLE1 в ней 2 поля ID ( autonumber ) и...

Запрос работает в SQL Manager, но не работает в пхп
Скажу сразу функция mssql_get_last_message() ничего не выводит. $name=$_POST; $login=$_POST; $pass=$_POST; $ip_addr=$_POST; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru