![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в ADOTable [D7]
Соня © (2011-05-18 10:27:00)Здравствуйте. Хочу сделать поиск в ADOTable с помощью Locate. Пишу нижеследующее:
AllADOElements.CassettesTable.Locate( 'Cassettes.Title',
VarArrayOf( [ FindCassetteTitleEdit.Text ] ), [ loCaseInsensitive ] )
Выдаёт ошибку, что loCaseInsensitive неизвестен... Может дело в версии Delphi? Тогда, чем заменить эту опцию?
И ещё: если оставить скобки пустыми, то поиск не происходит. Вернее Locate возвращает false... Хотя искомые данные в таблице есть...
Плохиш (2011-05-18 20:15:00) [1]
> Соня (18.05.11 16:40) [33]
А слабо, посмотреть список полей в dataset-те и какие имена они имеют, если уж лень алиасы для всех полей сделать, а не только для избранных?
Dennis I. Komarov (2011-05-18 16:56:00) [2]
> Соня (18.05.11 16:40) [33]
Повторюсь, я не знаю контекста... Если эта ин-фа необходима в виде реестра, то pourquoi pas?
Соня (2011-05-18 16:40:00) [3]Нужно представить информацию о заказах на покупку видеокассет. Я решила, что будет логично представить кто купил кассету (клиент), кто продал кассету (продавец), ну и название самой кассеты. А раз информация о клиентах, кассетах и сотрудниках магазина хранится в разных таблицах, то и делаю запрос к нескольким таблицам... А поля Cassettes.Id и Clients.Id у меня на форме не видны.
Dennis I. Komarov (2011-05-18 16:34:00) [4]
> Для удобства просмотра БД. А вы что подумали?
Я не знаю контекста решаемой задачи... Что я должен был думать?
В большенстве, за редким исключением, пользователю не нужна вся выборка, кроме той одной нужной ему записи, поэтому таскать за всеми остальными (а еще и рисовать) кучу лишней ин-фы... Это я к тому, что 13 полей возращается...
Соня (2011-05-18 16:24:00) [5]Для удобства просмотра БД. А вы что подумали?
Dennis I. Komarov (2011-05-18 16:18:00) [6]Вот эта выборка она зачем? Для чего она пользователю?
Соня (2011-05-18 16:16:00) [7]Dennis I. Komarov Что вы имеете ввиду? :-)
Anatoly Podgoretsky (2011-05-18 16:12:00) [8]> Соня (18.05.2011 16:02:26) [26]
Тьфу ты, я думал про набор данных, а не про компонент. Но не смертельно
0: Sort := 'a.Title';
1: Sort := 'b.Surname';
2: Sort := 'c.empSurname';
Dennis I. Komarov (2011-05-18 16:11:00) [9]И какой смысл всего этого?
Соня (2011-05-18 16:02:00) [10]Я так сортирую:
with AllADOElements.OrdersTable do
case SortOrderByRG.ItemIndex of
0: Sort := 'Title';
1: Sort := 'Surname';
2: Sort := 'empSurname';
end;
А запрос у меня теперь такой:
select
Cassettes.Title, Clients.Surname, Clients.Name, Clients.Patronimyc,
Orders.DateOfTaking, Orders.DateReturn, Orders.Paid, Orders.Returned,
Employee.Surname as empSurname, Employee.Name as empName,
Employee.Patronimyc as empPatronymic, Orders.Cassette, Orders.Client
from
Orders,
Cassettes,
Clients,
Employee
where
( Orders.Cassette = Cassettes.Id ) and
( Orders.Client = Clients.Id ) and
( Orders.Employee = Employee.Id )
Anatoly Podgoretsky (2011-05-18 15:56:00) [11]
> как их потом различать, скажем, для сортировки?
Сортировка применяется к набору, а не к отдельным таблицам.
clickmaker (2011-05-18 15:55:00) [12]> Мда... Чувствую себя дурой.
учи матчасть
sniknik (2011-05-18 15:44:00) [13]
SELECT
o.DateOfTaking,o.DateReturn,o.Paid,o.Returned,o.Cassette,o.Client,
cs.Title,
cl.Surname AS clSurname,cl.Name AS clName,cl.Patronimyc AS clPatronimyc,
e.Surname AS eSurname,e.Name AS eName,e.Patronimyc AS ePatronimyc
FROM Orders AS o, Cassettes AS cs, Clients AS cl, Employee AS e
WHERE o.Cassette=cs.Id AND o.Client=cl.Id AND o.Employee=e.Id
Anatoly Podgoretsky (2011-05-18 15:09:00) [14]
> Соня (18.05.11 15:00) [18]
Алиасы
Соня (2011-05-18 15:07:00) [15]Мда... Чувствую себя дурой.
Dennis I. Komarov (2011-05-18 15:05:00) [16]
> А как их потом различать, скажем, для сортировки?
AS
Соня (2011-05-18 15:01:00) [17]select
Cassettes.Title, Clients.Surname, Clients.Name, Clients.Patronimyc,
Orders.DateOfTaking, Orders.DateReturn, Orders.Paid, Orders.Returned,
Employee.Surname, Employee.Name, Employee.Patronimyc,
Orders.Cassette, Orders.Client
from
Orders,
Cassettes,
Clients,
Employee
where
( Orders.Cassette = Cassettes.Id ) and
( Orders.Client = Clients.Id ) and
( Orders.Employee = Employee.Id )
Соня (2011-05-18 15:00:00) [18]А вообще интересно, делаем выборку из нескольких таблиц, скажем, Employee и Clients. В таблицах поля Surname, Name, Patronymic называются одинаково... А как их потом различать, скажем, для сортировки?
Dennis I. Komarov (2011-05-18 15:00:00) [19]
> то просто пишу SQL запрос в CommandText
Вот его озвучте, пожалуйста...
Соня (2011-05-18 14:58:00) [20]Ммм... В смысле, как выводятся в DBGrid?
Если так, то просто пишу SQL запрос в CommandText и получаю данные сразу из нескольких таблиц в один грид.