С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321

Параметры в запросах АДО

10.08.2016, 09:45. Показов 6133. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На счет параметров в АДО. Чтобы использовать параметры надо из прописать в запросе insert() values(a,ss,d,fg,g,g). Правильно? но выскакивает ошибка что параметр не найден. Хотя эти имена параметров не юзал раньше. а прописывая в свойствах запроса, он так же выдает ошибку о неверном параметре. Как выкрутится?
Delphi
1
2
3
4
5
6
7
8
9
DataModule1.QOther.Close;
  DataModule1.QOther.SQL.Clear;
  DataModule1.QOther.SQL.Add('insert into dogovors (number,date_start,date_end,opisanie,names) values(q11,q21,q31,q41,q51)');
  DataModule1.QOther.Parameters.ParamByName('q11').Value:=edit1.text;
  DataModule1.QOther.Parameters.ParamByName('q21').Value:=DateTimePicker1.Date;
  DataModule1.QOther.Parameters.ParamByName('q31').Value:=DateTimePicker2.Date;
  DataModule1.QOther.Parameters.ParamByName('q41').Value:=edit3.text;
  DataModule1.QOther.Parameters.ParamByName('q51').Value:=edit2.text;
  DataModule1.QOther.ExecSQL;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2016, 09:45
Ответы с готовыми решениями:

Как правильно работать с АДО ?
Есть локальная база Access. При добавлении новых записей через один Recordset приходится долго ждать пока они появятся в другом Recordset,...

Объединяющий запрос в адо.нет
daWorkers.InsertCommand = new SqlCommand("Insert Trade(point,firstName,lastName,cash,_date,salary)"+ ...

Доступ к данным с через АДО
Создать экранную форму с тремя переключателями, заказы, поставщики, товары(которые соответствуют таблицам базы данных Борей) Написать...

37
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
10.08.2016, 10:07
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
но выскакивает ошибка что параметр не найден.
Потому, что в тексте запроса параметр должен быть помечен ведущим двоеточием. Нужно подправить таким образом:
Delphi
1
DataModule1.QOther.SQL.Add('insert into dogovors (number,date_start,date_end,opisanie,names) values(:q11,:q21,:q31,:q41,:q51)');
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,657
Записей в блоге: 21
10.08.2016, 10:11
ну и по идее, если мы каждый раз заново переписываем SQL, то нет смысла вообще использовать параметры
они нужны чтобы сэкономить серверу время на повторный разбор SQL
а так - проще формировать готовую строку, чем делать доп. передачу параметров
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
10.08.2016, 10:25
Цитата Сообщение от krapotkin Посмотреть сообщение
проще формировать готовую строку, чем делать доп. передачу параметров
Только не в случае с параметрами типа дата/время.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2016, 10:31
Цитата Сообщение от northener Посмотреть сообщение
Только не в случае с параметрами типа дата/время.
это да, тут начинается тихий ужас и мрак... а слово "конкатенация" для многих вообще ругательство... а вы еще забыли на счет экранирования спецсимволов, тоже весело бывает почитать исходники...


так что пусть юзают параметризированный запрос - всем так будет легче...
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 12:41  [ТС]
Я делал с : , ничего не менялось

Добавлено через 1 час 43 минуты
Delphi
1
DataModule1.QOther.SQL.Add('insert into dogovors(number,date_start,date_end,opisanie,names) values(:q11,:q21,:q31,:q41,:q51)');
и в таком варианте пишет ошибку в инсерт запросе
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
10.08.2016, 14:17
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
Я делал с : , ничего не менялось
Т. е., по прежнему параметры не обнаруживались?
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
и в таком варианте пишет ошибку в инсерт запросе
Имеется в виду уже другая ошибка?

Нужны более ясные сведения - что происходит, как было и как стало, какая ошибка возникает и на каком этапе?
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 14:37  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
DataModule1.QOther.Close;
  DataModule1.QOther.SQL.Clear;
  DataModule1.QOther.SQL.Add('insert into dogovors (number,date_start,date_end,opisanie,names) values(q11,q21,q31,q41,q51)');
  DataModule1.QOther.Parameters.ParamByName('q11').Value:=edit1.text;
  DataModule1.QOther.Parameters.ParamByName('q21').Value:=DateTimePicker1.Date;
  DataModule1.QOther.Parameters.ParamByName('q31').Value:=DateTimePicker2.Date;
  DataModule1.QOther.Parameters.ParamByName('q41').Value:=edit3.text;
  DataModule1.QOther.Parameters.ParamByName('q51').Value:=edit2.text;
  DataModule1.QOther.ExecSQL;
Было так. Писало что не найдено параметров. Хотя в других местах параметры работали и без :. Сейчас у меня такой запрос :
Delphi
1
2
3
4
5
6
7
8
9
  DataModule1.QOther.Close;
  DataModule1.QOther.SQL.Clear;
  DataModule1.QOther.SQL.Add('insert into dogovors(number,date_start,date_end,opisanie,names) values(:q11,:q21,:q31,:q41,:q51)');
  DataModule1.QOther.Parameters.ParamByName('q11').Value:=edit1.text;
  DataModule1.QOther.Parameters.ParamByName('q21').Value:=DateTimePicker1.Date;
  DataModule1.QOther.Parameters.ParamByName('q31').Value:=DateTimePicker2.Date;
  DataModule1.QOther.Parameters.ParamByName('q41').Value:=edit3.text;
  DataModule1.QOther.Parameters.ParamByName('q51').Value:=edit2.text;
  DataModule1.QOther.ExecSQL;
и пишет ошибка синтаксиса insert
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
10.08.2016, 14:56
Я бы попробовал задавать каждому параметру DataType перед присвоением значения.

P.S.
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
в других местах параметры работали и без :
Не верю!
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
10.08.2016, 15:01
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
и пишет ошибка синтаксиса insert
Видимо, какой-то из параметров оказывается представленным в неподходящем виде. Скорее всего проблемы возникают с параметрами даты/времени. Предлагаю задать типы для таких параметров:
Delphi
1
2
3
4
5
6
7
8
9
r.Parameters.ParamByName('q11').Value:=edit1.text;
 
  DataModule1.QOther.Parameters.ParamByName('q21').DataType := ftDate;
  DataModule1.QOther.Parameters.ParamByName('q21').Value:=DateTimePicker1.Date;
  DataModule1.QOther.Parameters.ParamByName('q31').DataType := ftDate;
  DataModule1.QOther.Parameters.ParamByName('q31').Value:=DateTimePicker2.Date;
 
  DataModule1.QOther.Parameters.ParamByName('q41').Value:=edit3.text;
  DataModule1.QOther.Parameters.ParamByName('q51').Value:=edit2.text;
А база данных какая?

Добавлено через 1 минуту
Параметры q11, q41, q51 - строковые?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2016, 15:02
Владислав-2012, ну вообще внешне запрос написан правильно, очевидных ошибок синтаксиса не наблюдаю... а можно точный текст ошибки посмотреть?
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 15:10  [ТС]
В чем проблема проверить? Программа в архиве, логин пароль админ админ. Форма добавление клиента. Доказывать ничего не буду, ибо бессмысленно, если правильнее все таки с двоеточием, то буду делать с ними.
Исправлять уже новые Errors. Текст ошибки на снимке.
Миниатюры
Параметры в запросах АДО  
Вложения
Тип файла: rar v. 1.0.0.0.rar (1.33 Мб, 9 просмотров)
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2016, 15:30
это у вас база Аксесс, я так понимаю, сообщения об ошибках всегда просто убивали информативностью... неужели и вправду ошибка где-то в замене параметров значениями... даже интересно стало... но, так и не узнаю, видимо, у меня офис 2003, не смогу вашу базу открыть, если вам несложно пересохраните где-то отдельно БД в формат access 2003, тогда попробую помочь
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 15:51  [ТС]
Вот база
Вложения
Тип файла: rar MMBD.rar (22.7 Кб, 5 просмотров)
0
10.08.2016, 15:52

Не по теме:

Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
тогда попробую помочь
Еще и EhLib понадобится. А может и еще что-то (

0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2016, 15:58
northener, ну вообще было бы интересно выяснить, но я не могу ТС заставлять подменять параметры сначала по типу на некое тестовое значение... а недостающие компоненты я просто выкошу, это сейчас не играет никакой роли... лишь бы запустилось хоть как-то...
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 19:58  [ТС]
Есть какие либо мысли?
0
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,143
Записей в блоге: 3
10.08.2016, 20:20
напиши запрос в аксессе и проверь его
потом вставь в дельфи и замени даты и текст на переменные
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
10.08.2016, 21:10  [ТС]
Жалуется на поле number. выделяет и ошибку пишет в аксессе
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
10.08.2016, 22:49
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
Жалуется на поле number. выделяет и ошибку пишет в аксессе
Скобки для наименований полей и таблицы - будет работать:
Delphi
1
2
3
  DataModule1.QOther.SQL.Text :=
       'insert into [dogovors] ([number],[date_start],[date_end],[opisanie],[names]) '+
               'values(:q11,:q21,:q31,:q41,:q51)';
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2016, 22:49
Помогаю со студенческими работами здесь

Тормоза при переходе с бде на адо
Проблемма такая....... Есть некий построитель отчетов написанный на делфях, который работает с бд парадоксом, потребывалось перейти на...

Проблема с драйвером АДО: driver not correctly installed
привет всем! У меня возникла проблема с драйвером адо говорит что-то типа этого: driver not correctly installed и как установить...

Нужен ли Оракл-клиент для АДО базы?
Привет ребята и девчонки! Пишу я ему (VBA), считай мне что-то там из базы через АДО, а он мне и говорит Оракл-клиента мол у тебя нету! ...

Делаю клиент-сервер, конект к БД через адо.
Не работает кирилица когда беру данные с сервера.. команды: ASCIIEncoding str = new ASCIIEncoding(); ...

Как подключить к моему проекту в VB.NET библиотеку АДО?
Только сегодня приступил к изучению VB.NET, раньше плотно работал с VBA и такие штуки мне непонятны. Просто не работает конструкция,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru