Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.09.2014, 16:23
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию ADOQuery и параметры

Я начитался умных книг и запутался.
Parametrs в ADOQuery предназначены, как я понял для создания динамически меняющихся запросов.
Можно поменять Value у параметра в RunTime сделать ReQuery и содержимое DataSet изменится.

Выкинул ADOQuery, в SQL пишу:
Код:
SELECT * FROM `tickets` WHERE `iPawnshop` = :iPawnshop ORDER BY `iStatus`, `iStartDate` ASC;
Присоединил к Connection, жму Active = true;
Вылезает ошибка, что мол "неправильно определён объект Parameter. Представлены неполные или несогласованные сведения."

Во всех книгах пишут, что не надо ручками запихивать туда параметры, мол запрос пишите и всё само туда попадёт, потом только меняйте
Код:
Parameters[0].Value = 'Новое значение'
ADOQuery.Requery;
и в путь


Конечная цель у меня такая: приложение будет стоять в разных отделениях(офисах) фирмы, каждое из которых имеет своё название.
Я хочу выводить только те записи, которые относятся к конкретному офису, а сам параметр "Название офиса", хранить где-нибудь в реестре.

Последний раз редактировалось Uniq!, 02.09.2014 в 16:27.
Ответить с цитированием
  #2  
Старый 02.09.2014, 20:50
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Uniq!
Присоединил к Connection, жму Active = true;
Вылезает ошибка, что мол "неправильно определён объект Parameter. Представлены неполные или несогласованные сведения."
Не знаю, как это реализовано в ADO, но по логике вещей перед открытием запроса с параметрами из IDE должно вылезать диалоговое окно, запрашивающее текущие значения параметров. Если искаропки в ADO этого нет, стоит поискать расширения добавляющие данный функционал. Можно и самому написать.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #3  
Старый 02.09.2014, 20:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Там в ADO есть маленькая проблемка. Создай объект параметра в Object Inspector'е, расставь там типы.

Может это и не то, но для начала попробуй это.
Ответить с цитированием
  #4  
Старый 02.09.2014, 23:32
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от lmikle
Там в ADO есть маленькая проблемка. Создай объект параметра в Object Inspector'е, расставь там типы.

Может это и не то, но для начала попробуй это.
Я сегодня целый день с этим возился, с одним этим запросом иногда параметры сами получают типы, иногда вышеуказанная ошибка, иногда еще какая-то лабуда, а иногда просто валится Delphi руками я его(параметр) в слепую сам могу создать...

Вообще пишут, что инструмент должен делать так: искать символ :, парсить предстоящее имя колонки, лезть в базу-смотреть тип, размер, и на основе этих данных создавать одноименный параметр.

Я вот не знаю: это фишка драйвера-же наверняка? И зависит от его возможностей?
Ответить с цитированием
  #5  
Старый 03.09.2014, 02:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это фишка самого ADO (не Дельфевого, у Дельфи просто враппер вокруг COM-компонентов).
Ответить с цитированием
  #6  
Старый 03.09.2014, 10:06
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от lmikle
Это фишка самого ADO (не Дельфевого, у Дельфи просто враппер вокруг COM-компонентов).
Че ж оно тогда не работает-то? У кого нибудь есть возможность протестировать? Может я что-то не так делаю.
Ответить с цитированием
  #7  
Старый 04.09.2014, 13:10
kaakaa
 
Сообщения: n/a
По умолчанию

А как на счет явной типизации?
Варианты:
Код:
Parameters[0].AsString
и т.п.
Лучше вообще по имени к параметру обращатся, например:
Код:
Query.ParamByName('ParamName')
. Такое в ADO работает?

У меня подозрение, что возможна проблема с кавычками при передаче строковых параметров, возможно их нужно добавить явно.

Последний раз редактировалось kaakaa, 04.09.2014 в 13:26.
Ответить с цитированием
  #8  
Старый 04.09.2014, 19:45
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от kaakaa
У меня подозрение, что возможна проблема с кавычками при передаче строковых параметров, возможно их нужно добавить явно.
Не должно быть такого в ADO. Меня вот еще смущают "кривые апострофы" а-ля MySQL, которые в нормальных запросах нахрен не нужны.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #9  
Старый 04.09.2014, 20:05
kaakaa
 
Сообщения: n/a
По умолчанию

Цитата:
Сообщение от Freeman
Меня вот еще смущают "кривые апострофы" а-ля MySQL, которые в нормальных запросах нахрен не нужны.
Верно подмечено.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter