Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

ADOQuery   Найти похожие ветки 

 
студент2002   (2002-10-06 11:10) [0]

Подскажите как работать с ADOQuery.
Есть ADOTable, ADOQuery и DBGrid. У всего одинаковое свойство DataSource. Запрос выглядит вроде этого: select * from users users where name="%blah-blah%". Делаяю ADOQuery1.ExecSQL. Результатов нет.
Подскажите что еще прописать, чтобы запрос выполнился. Порекомендуйте статье в инете, что-ли по ADO, SQL в Delphi.


 
Hooch ©   (2002-10-06 11:22) [1]

ADOQuery1.Open


 
студент2002   (2002-10-06 12:00) [2]

Что-то не работает? В чем может быть проблема? Мож там что-то отрешрешить надо?


 
Hooch ©   (2002-10-06 12:02) [3]

ну если запрос указан точно то один users убрать нужно :-)


 
BoxTer ©   (2002-10-06 12:16) [4]

а ты не пробовал вместо = в запросе нарисовать like ???


 
студент2002   (2002-10-06 14:13) [5]

2 Hooch:
Это, вроде, имя базы и такое же имя таблицы. Я в простом Query в SQLBuilder визуально сделал запрос - он таким образом выглядел. Тем не менее, если убрать один "users" ситуация у меня не меняется.

2 BoxTer:
Те же грабли.

Там вообще какой механизм работы? Оператор Select выбирает, что нужно и результат кидается в DataSource.DataSet и как следсвие в DBGrid?


 
BlackTiger   (2002-10-06 14:58) [6]

Хе-хе!
Ну, во-первых, если используешь маску, то нужно использовать оператор LIKE (учите SQL батенька, хорошая это весчь!). Т.е. запрос будет выглядеть так: SELECT * FROM users WHERE name LIKE "%blah-blah%".
Во-вторых, гораздо удобнее кроме TADOTable & TADOQuery использовать еще и TADOConnection, к которому таблица и запрос будут привязаны (свойство Connection!). Иначе таблица и запрос будут использовать КАЖДЫЙ СВОЮ СЕССИЮ, что не есть хорошо, например, если работаешь с базами, которые имеют ограничения на открытые сессии.


 
студент2002   (2002-10-06 15:14) [7]

2 BlackTiger:
Да я использую ADOConnection. Он прописан в свойствах таблиц и запроса. Текст запроса привел к виду как ты написал. По нажатию кнопки выполняю:
ADOQuery1.Active:=True;
ADOQuery1.ExecSQL;
ADOQuery1.Open;

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


 
aus ©   (2002-10-06 16:15) [8]

>Есть ADOTable, ADOQuery и DBGrid. У всего одинаковое свойство DataSource

А это как это? Что-то ты напутал. У ADOQuery DataSource для одного, у DBGrid - для другого...


 
студент2002   (2002-10-06 16:40) [9]

Эээ.

Имеется:
DataSource_PreUsers: TDataSource;
ADOTable_PreUsers: TADOTable;
DBGrid_PreUsers: TDBGrid;
ADOQuery1: TADOQuery;
Дальше:
DataSource_PreUsers.DataSet=ADOTable_PreUsers
ADOQuery1.DataSource=DataSource_PreUsers
DBGrid_PreUsers.DataSource=DataSource_PreUsers

Что и где не так?



 
aus ©   (2002-10-06 16:52) [10]

Зачем ADOQuery1 нужен DataSourse?
Обычно для передачи параметров в подчиненный запрос присваивается значение, а у тебя запрос без параметров, зачем тогда?
DataSource_PreUsers.DataSet:=ADOTable_PreUsers;
ADOTable_PreUsers.SQL.Add("select * from users");
ADOTable_PreUsers.Open;
DBGrid_PreUsers.DataSource:=DataSource_PreUsers;
Так будет все работать, а ты что-то напутал.... или я чего не понял...


 
Mike_Goblin ©   (2002-10-06 18:23) [11]

Я не уверен, но вроде в Access вместо % в тексте запроса надо использовать *, попробуй, а вдруг :)))



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
3-92373
korn
2002-10-06 15:49
2002.10.28
Индекс MS SQL не работает


1-92451
Vitaliy79
2002-10-17 07:38
2002.10.28
Как использовать функции ICQ


1-92496
sosv
2002-10-18 11:32
2002.10.28
CompositeReport


14-92703
Leon_O
2002-10-08 09:53
2002.10.28
Delphi 7


14-92693
Anatoly Podgoretsky
2002-10-07 21:31
2002.10.28
Именинники 8 октября