0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 51

не работает SQL запрос (

07.08.2012, 15:50. Показов 2528. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые прогеры!
Наткнулся с одной проблемой, связанной с параметрическим запросом.
При фильтрации данных программа выдает такую ошибку:
"Несоответствие типов данных в выражении условия отбора". Думаю, что вся проблема связана с датами. Хотелось бы чтоб, фильтрация осуществлялась и при выборе 1 из 2 дат.
Помогите с решением данной проблемы, уже полдня голову ломаю над ней
Заранее спасибо за отклик!

p.s.: исходник проекта выложил
Вложения
Тип файла: rar БД.rar (340.0 Кб, 22 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2012, 15:50
Ответы с готовыми решениями:

SQL запрос, работающий в MS SQL Menegment'e не работает в делфи
Требуется выполнить запрос по нажатию кнопки, запрос сначала написал в Microsoft SQL Managment, где и написал свою БД, там запрос работает,...

SQL-запрос работает в Access, а в Delphi не работает :'(
Две связанные таблицы 1к1. Вводим данные в поле одной таблицы и во второй должны быть сделаны теже изменения в одноимённом поле, т.е....

Не работает SQL запрос
Прошу подсказать в чем ошибка. Имеется таблица Citr, нужно подсчитать сколько записей находится в поле статья соответствуюших значению...

8
 Аватар для arni
913 / 878 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
07.08.2012, 16:43
ИМХО, выложив исходник проекта вместо адресного куска сбойного кода, вы в разы сократили кол-во желающих вам помочь.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,589
09.08.2012, 00:21
Цитата Сообщение от Kara1989 Посмотреть сообщение
Здравствуйте, уважаемые прогеры!
Наткнулся с одной проблемой, связанной с параметрическим запросом.
При фильтрации данных программа выдает такую ошибку:
"Несоответствие типов данных в выражении условия отбора". Думаю, что вся проблема связана с датами. Хотелось бы чтоб, фильтрация осуществлялась и при выборе 1 из 2 дат.
Помогите с решением данной проблемы, уже полдня голову ломаю над ней
Заранее спасибо за отклик!

p.s.: исходник проекта выложил
Только таким условиями что ты не будешь голову ломать

Код Delphi
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active :=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT*');
ADOQuery1.SQL.Add('FROM Sotrudniki');
ADOQuery1.SQL.Add('WHERE Fam LIKE '''+Edit1.Text+'''');
ADOQuery1.SQL.Add('OR Imya LIKE '''+Edit2.Text+'''');
ADOQuery1.SQL.Add('OR Otch LIKE '''+Edit3.Text+'''');
ADOQuery1.Active := true;
Вложения
Тип файла: rar БД=2.rar (340.6 Кб, 21 просмотров)
0
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 51
10.08.2012, 07:16  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('SELECT * FROM Sotrudniki WHERE (((Fam Like :A) and (Imya Like :B) and (Otch Like :C) and (DRZh >= :D) and (DRZh <= :E))) Order by Fam');
If Length(Form1.Edit1.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('A').Value:='%'+Form1.Edit1.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('A').Value:='%';
If Length(Form1.Edit2.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('B').Value:='%'+Form1.Edit2.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('B').Value:='%';
If Length(Form1.Edit3.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('C').Value:='%'+Form1.Edit3.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('C').Value:='%';
if Form1.DateTimePicker1.Format <> ' ' then Form1.ADOQuery1.Parameters.ParamByName('D').Value:=Form1.DateTimePicker1.Date else Form1.ADOQuery1.Parameters.ParamByName('D').Value:='%';
if Form1.DateTimePicker2.Format <> ' ' then Form1.ADOQuery1.Parameters.ParamByName('E').Value:=Form1.DateTimePicker2.Date else Form1.ADOQuery1.Parameters.ParamByName('E').Value:='%';
Form1.ADOQuery1.Open;
Запрос в данном случае,если выбрать обе даты, работает нормально, при выборе одной из дат или при пустом DateTime выходит подобная ошибка.
"Несоответствие типов данных в выражении условия отбора"
Хотелось бы чтоб, фильтрация осуществлялась и при выборе 1 из 2 дат.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,589
10.08.2012, 08:42
Цитата Сообщение от Kara1989 Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('SELECT * FROM Sotrudniki WHERE (((Fam Like :A) and (Imya Like :B) and (Otch Like :C) and (DRZh >= :D) and (DRZh <= :E))) Order by Fam');
If Length(Form1.Edit1.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('A').Value:='%'+Form1.Edit1.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('A').Value:='%';
If Length(Form1.Edit2.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('B').Value:='%'+Form1.Edit2.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('B').Value:='%';
If Length(Form1.Edit3.Text) <> 0 then Form1.ADOQuery1.Parameters.ParamByName('C').Value:='%'+Form1.Edit3.Text+'%' else Form1.ADOQuery1.Parameters.ParamByName('C').Value:='%';
if Form1.DateTimePicker1.Format <> ' ' then Form1.ADOQuery1.Parameters.ParamByName('D').Value:=Form1.DateTimePicker1.Date else Form1.ADOQuery1.Parameters.ParamByName('D').Value:='%';
if Form1.DateTimePicker2.Format <> ' ' then Form1.ADOQuery1.Parameters.ParamByName('E').Value:=Form1.DateTimePicker2.Date else Form1.ADOQuery1.Parameters.ParamByName('E').Value:='%';
Form1.ADOQuery1.Open;
Запрос в данном случае,если выбрать обе даты, работает нормально, при выборе одной из дат или при пустом DateTime выходит подобная ошибка.
"Несоответствие типов данных в выражении условия отбора"
Хотелось бы чтоб, фильтрация осуществлялась и при выборе 1 из 2 дат.
Кидай на форму кнопка и для дату пиши отдельно запрос
0
0 / 0 / 0
Регистрация: 11.08.2012
Сообщений: 8
11.08.2012, 18:53
Попробуй вставить отладку в код. Напр. вывести текст запроса в ShowMessage. И увидишь ошибку в запросе. По моему вся проблема в строке запроса. Можно собрать строку запроса в зависимости от даты (непустая 1-я, пустая 2-я и наоборот и если обе даты имеются). Тупо, до должно работать
0
71 / 71 / 7
Регистрация: 19.07.2011
Сообщений: 357
15.08.2012, 21:18
да просто положи на форму mem и запихни в него результать формируемого sql запроса (сам запрос не выполняй), а потом скопируй его из mem и выдави в Query в базе данных и попробуй выполнить - сразу будет видно где косяк с синтаксисе.
Обычно апострофа/кавычки нет или запятая пропущена.....
0
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637
17.08.2012, 10:31
Просто в запросе требуется два параметра типа датавремя. Если указывать только один параметр, то, естественно, выскакивает ошибка, потому что запрос требует и второго параметра. Здесь надо сделать два запроса: один на выборку по ФИО, а второй будет фильтровать по дням рождения.
Или же проверять на пустоту даты и в зависимости от этого формировать разные запросы.
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
20.08.2012, 16:50
я бы поставил первую дату 00.00.0000, вторую - NOW.
Сомневаюсь, что ваши сотрудники видели рождение Иисуса

Добавлено через 5 минут
в пикере есть свойство showCheckBox.
Если чекбокс не активен, то ставить дату по умолчанию и все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2012, 16:50
Помогаю со студенческими работами здесь

Не работает sql запрос
Здравствуйте, помогите с запросом на добавление строк в таблицу. Суть в том что есть таблицы &quot;Клиент&quot;, &quot;Заказ&quot;,...

Не работает запрос SQL в делфи
На форме 3 разных RadioGroup. В зависимости от выбора Items'ов каждого RadioGroup'а присваиваются различные значения параметров a, b, c -...

Sql запрос работает неверно
Добрый день! написала SQL запрос SELECT продукция.код, продукция.наименование, SUM (поступление.колличество ) as приход, SUM...

Не работает запрос SQL where на дату
Доброго времени суток! Уже часа 2 сижу вообще не могу въехать чего &quot;ему&quot; от меня надо, кароче должен отфильтровывать по дате полученной с...

Не работает запрос суммы с параметром SQL
Доброго времени суток! Пишу запрос if (RadioGroup4.ItemIndex=1) then begin try ADOQuery3.SQL.Clear; ...


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

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

Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru