Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в ADOTable [D7]


Страницы:   1 2

Соня ©   (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 и получаю данные сразу из нескольких таблиц в один грид.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо