|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.01.2009, 15:56 | #1 |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
Обновление DBGrid + ADOQuery
Пытаюсь вывести данные из таблицы при помощи 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 не могу понять где ошибка может тут кто подскажет? |
12.01.2009, 16:50 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
В первую очередь избавьтесь от пробелов в именах полей и проблемы сразу резко пойдут на убыль.
|
13.01.2009, 10:07 | #3 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 66
|
Может попробуешь через переменную:
Код:
Код:
Была бы цель - и всё получится!
|
13.01.2009, 15:02 | #4 |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
|
13.01.2009, 15:08 | #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. |
|
13.01.2009, 19:49 | #6 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 66
|
Demonk, просто замени тот запрос что у тебя есть на тот что я писал с переменной, в свойствe SQL компонента AdoQuery1! В свойсте AdoQuery1 Parameters желательно задать тип этой переменной и значение по умолчанию...
Согласен с mihali4, не понимаю Demonk, как у тебя этот запрос работает! Названия таблиц с пробелами... Может я чего не знаю, надо попробывать как-нибудь ...
Была бы цель - и всё получится!
|
13.01.2009, 21:42 | #7 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
Запрос может и работать, если его запускать под Access, но под дельфой или любой другой средой желательно использовать параметрические запросы, особенно если они типовые и неоднократно повторяются при запросах к БД.
|
14.01.2009, 07:49 | #8 | |
Пользователь
Регистрация: 25.11.2008
Сообщений: 21
|
Цитата:
Нормально в sql работают запросы такие, и в delphi, и в access, просто нужно в квадратные скобки брать названия с пробелами, вот например этот запрос: select [document No_], description, quantity from [ok$sales line] where [document No_]= '07-04074' без проблем работает, как раз его и хочу заменить во время работы программы. |
|
14.01.2009, 09:24 | #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; |
|
14.01.2009, 10:45 | #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 |