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

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

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

Author24 — интернет-сервис помощи студентам
Две связанные таблицы 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
8784 / 2537 / 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
8784 / 2537 / 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
8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.03.2010, 09:22
Stein21, незнаю, где вы нарыли тот запрос, но я бы больше там после такого не шаровался! для локалки отлично сойдут и интербейс, и мускул... тем более начнем с того, что если офиса на машине не будет, то на ХР очень может быть, что твоя прога работать не будет, а для моих СУБд хватит по одной библиотеке, ну а вы решайте сами

Цитата Сообщение от Stein21 Посмотреть сообщение
если не секрет, что вы считаете нормальной СУБД?
в последнее время просто влюбился в postgres, а вообще все, кроме аксесса (поделка для бухгалтеров), даже FoxPro
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
Коммуникация в реальном времени с SignalR в C# на примере создания чата
UnmanagedCoder 17.04.2025
Современный веб стремительно эволюционирует от статичных страниц к динамичным приложениям, где пользователи ожидают мгновенной реакции на свои действия. Представим, что вы отправляете сообщение. . .
Реализация CQRS с MediatR на C# .NET
stackOverflow 17.04.2025
Современная разработка программного обеспечения постоянно ищет пути повышения эффективности организации кода. Архитектурные паттерны появляются, эволюционируют, и те, что проявляют свою. . .
Verilog и интеллектуальная собственность - "глазами" обученной LM модели.
Hrethgir 17.04.2025
В сети встречаются участники, заявляющие что код на Verilog ни о чём не говорит. Но вот патентная практика на самом деле показывает обратное ими утверждаемому. То-есть код на Verilog включают в. . .
Свап-файл дополнительно к разделу (если вдруг не хватает или не создан)
jigi33 17.04.2025
ПОДКЛЮЧЕНИЕ ДОПОЛНИТЕЛЬНОГО SWAP ПРОСТРАНСТВА, Т. О. , РАСШИРЕНИЕ ЕГО РАЗМЕРА В Linux можно использовать как раздел подкачки (swap), так и файл подкачки (swap-файл). Чтобы создать swap-файл вместо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru