![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
![]()
Пытаюсь вывести данные из таблицы при помощи DBGrid и ADOQuery
когда в коде прописываю запрос: select [document No_], description, quantity from [ok$sales line] where [document No_]= '07-04074' в ADOQuery, данные нормально выводятся в DBGrid, а если во время работы проги пытаюсь изменить запрос выводится сообщение: Project Project1.exe raised exception class EOleException with message 'Invalid column name '07-04074". Process stopped. Use Step or Run to continue. привожу кусок кода конструирующего запрос : no_:=InputBox('Поиск документа','Введите номер документа и нажмите OK.', ''); Zapros:='Select [document no_] from [ok$sales line] where [document no_]= "' + no_ + '"'; перелопатил инет и Help не могу понять где ошибка может тут кто подскажет? |
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
В первую очередь избавьтесь от пробелов в именах полей и проблемы сразу резко пойдут на убыль.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 66
|
![]()
Может попробуешь через переменную:
Код:
Код:
Была бы цель - и всё получится!
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
![]() |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
![]() Цитата:
Project Project1.exe raised exception class EDatabaseError with message 'ADOQuery1: Parameter 'number' not found'. Process stopped. Use Step or Run to continue. |
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 66
|
![]()
Demonk, просто замени тот запрос что у тебя есть на тот что я писал с переменной, в свойствe SQL компонента AdoQuery1! В свойсте AdoQuery1 Parameters желательно задать тип этой переменной и значение по умолчанию...
Согласен с mihali4, не понимаю Demonk, как у тебя этот запрос работает! Названия таблиц с пробелами... Может я чего не знаю, надо попробывать как-нибудь ![]()
Была бы цель - и всё получится!
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
![]()
Запрос может и работать, если его запускать под Access, но под дельфой или любой другой средой желательно использовать параметрические запросы, особенно если они типовые и неоднократно повторяются при запросах к БД.
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
![]() Цитата:
Нормально в sql работают запросы такие, и в delphi, и в access, просто нужно в квадратные скобки брать названия с пробелами, вот например этот запрос: select [document No_], description, quantity from [ok$sales line] where [document No_]= '07-04074' без проблем работает, как раз его и хочу заменить во время работы программы. |
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
![]() Цитата:
Select [document no_] from [ok$sales line] where [document no_]= :number а после ввода данных выводит : БД нет записей, удовлетворяющих критерию запроса. получается запрос не до конца заменяется , глянь если не трудно код, ниже привожу код обработки нажатия кнопки: begin if adoquery2.Active= false then begin adoquery2.Active:= true end; Zapros:='Select [document no_] from [ok$sales line] where [document no_]= :number'; no_:=InputBox('Поиск документа','Введите номер документа и нажмите OK.', ''); AdoQuery1.Active := false; AdoQuery1.Parameters.ParamByName('n umber').Value:= no_; AdoQuery1.Active := true; if no_ <> '' then // пользователь ввел данные begin with form1.ADOQuery1 do begin Close; // закрыть файл-результат выполнения предыдущего запроса SQL.Clear; // удалить текст предыдущего запроса SQL.Add(Zapros); memo1.Lines.add (Zapros); Open; // активизируем выполнение запроса end; if form1.ADOQuery1.RecordCount <> 0 then begin form1.DataSource2.DataSet:=form1.AD OQuery1; // отобразить рез-т выполнения запроса end else begin ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.'); form1.DataSource2.DataSet:=form1.AD OTable1; end; end; end; |
|
![]() |
![]() |
![]() |
#10 |
Заблокирован
Регистрация: 05.12.2008
Сообщений: 6
|
![]()
Привет! Если нужна книга по созданию баз данных в Delphi, то бесплатно скачать её можно здесь : http://golden-books.narod.ru/books/bd1.html
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AdoQuery | Stanislav | БД в Delphi | 34 | 26.06.2009 22:09 |
ADOQuery | Только_Учусь | Помощь студентам | 2 | 16.07.2008 00:31 |
ADOQuery | Roof | БД в Delphi | 2 | 12.07.2008 18:08 |
Запрос в ADOQuery | Jon_1981 | БД в Delphi | 3 | 15.06.2007 10:41 |
adoquery | Toxa | БД в Delphi | 10 | 12.02.2007 20:07 |