Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

сортировка вычисляемых полей   Найти похожие ветки 

 
__dmitry   (2006-10-06 11:12) [0]

Суть проблемы. Есть таблица, например

ID
Name
Count
Price

мне нужно добавить в нее поле Amount =  Count * Price

И так в Access таблице есть первые 4е поля и  в ADOTable их соответственно добавил. Создал так же новый TField со свойством fkCalculated и в методе OnCalcFields делаю так

TableSampleAmount.Value = TableSampleCount.Value * TableSamplePrice.Value;

И так в гриде все нормально отображается. Но вот теперь мне нужно сделать сортировку по полю Amount. И тут проблема:

 TCustomADODataSet(dbGrid.DataSource.DataSet).Sort := "Amount";

приводит к ошибке поскольку реально такого поля в базе не существует.

Как решается такая проблема? Есть ли возможность сортировать непосредственно в гриде или есть путь как это делается через DataSet? Возможно в Access можно реализовать вычисляемое поле которое прозрачно использовалось бы в delphi?

Очень надесь на вашу помошь!


 
sniknik ©   (2006-10-06 11:22) [1]

использованием нормальных компонент, формированием в запросе того поля что нуждается в последующей сортировке. чтобы оно/его данные реально существовали в сортируемом рекордсете, а не были "миражом" который формируется только для/и того что отображается/показывается в гриде.


 
Savek   (2006-10-06 11:23) [2]

Как вариант - плюнуть на ADOTable и использовать ADOQuery!


 
Stanislav ©   (2006-10-06 11:25) [3]

Используй ADOQUERY,
SELECT ..., price*count as summa
form ...
order by summa
В принципе она будет и в Sort работать, только результаты вычислений после сохранения записи будешь видеть.


 
__dmitry   (2006-10-06 11:25) [4]

помогите мне составить такой запрос. Я в SQL не силен :(


 
Stanislav ©   (2006-10-06 11:26) [5]

Stanislav ©   (06.10.06 11:25) [3]  почти помог :-)
В акцесс есть конструктор.


 
__dmitry   (2006-10-06 11:27) [6]

спасибо Stanislav!


 
__dmitry   (2006-10-06 11:43) [7]

А если в таблице есть

ProductId который связан с таблицей products:

Id
Name

как мне построить запрос который бы вместо ProductId содержал бы его Name?


 
ЮЮ ©   (2006-10-06 11:44) [8]

А в гриде редактировать это поле не будешь?
Если будешь, то смотри в сторону Lookup-полей


 
__dmitry   (2006-10-06 11:47) [9]

ЮЮ ©   (06.10.06 11:44) [8]
не буду


 
ЮЮ ©   (2006-10-06 11:53) [10]

Select
 t.*, p.Name
FROM
 ТаблицаСПолемСсылкоойНаProducts t
 [LEFT] JOIN Products p ON t.ProductId = p.Id


 
__dmitry   (2006-10-06 12:02) [11]

запрос
SELECT Name, (Price*Count) as Amount FROM Таблица
или такой
SELECT Name, Price*Count as Amount FROM Таблица

не проходит. Пишет ошибка синтаксиса. А в Access конструктор запросов не помог. :(

Что в таком запросе не так?


 
MsGuns ©   (2006-10-06 12:02) [12]

>Stanislav ©   (06.10.06 11:25) [3]
>Используй ADOQUERY,
>SELECT ..., price*count as summa
>form ...
>order by summa

не нужен.
"Стандартная" сортировка в таких случаях-по ФИО, поэтому либо сортируй в запросе по ФИО (для первичного отображения при открытии формы), либо вообще  не надо заморачивать "сервер".

Сортировка в любом порядке (в т.ч. по произвольном у набору полей) в ADO легко реализуется с помощью метода Sort ADODataSet`a без явного переоткрытия датасета.


 
MsGuns ©   (2006-10-06 12:05) [13]

>SELECT Name, Price*Count as Amount FROM Таблица

Не используй при именовании объектов БД (таблиц, полей, индексов и т.д.) зарезервированных слов
А если уже "наваял", то
SELECT Name, Price*[Count] as Amount FROM Таблица


 
__dmitry   (2006-10-06 14:59) [14]

спасибо всем!!!

все работает :)



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

Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.051 c
2-1164276115
breeze
2006-11-23 13:01
2006.12.10
Имя приложения внесшего изменеия в файловую систему


15-1164203150
Oleg Babenko
2006-11-22 16:45
2006.12.10
Нахождения нужной суммы из массива сумм


15-1163685346
Чапаев
2006-11-16 16:55
2006.12.10
"Детям 60-70-80х посвящается"


1-1161938497
Krants
2006-10-27 12:41
2006.12.10
PopupMenu и Hint


1-1161948280
alucard
2006-10-27 15:24
2006.12.10
Подскажите как сделать прогу чтоб подменяла нажатие клавиш





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский