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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Mike 13   (2002-09-18 18:06) [0]

вот фрагмент из хелпа по методу Refresh класса TQuery.
In particular, TQuery components do not support the Refresh method if the query is not “live”. To refresh a static TQuery, close and reopen the dataset.

Подскажите, что означает live и static запрос?


 
MsGuns   (2002-09-18 18:20) [1]

Имеется в виду след.
Если запросу не привоено св-во RequestLive, (а оно не может быть присвоено, если в запросе указан порядок сортировки, например), то при внесении в исх.таблицу (т.е. ту, на которую ставился запрос) изменений другими поллзователями, Вы эти изменения не увидите до тех пор, ока не переоткроете запрос
Query1.Close
Query1.Open

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

Если запрос "живой" (RequestLive := true), то для обновления курсора (состава и содержания записей в физ.таблице БД), Вам не требуется переоткрытие запроса (что часто чревато существенными задержками во времени), а достаточно просто применить метод Refresh.
Более того, "живой" запрос (точнее не сам запрос, а возвращаемый им результирующий набор данных и соотв-й ему курсор) Вы (вернее юзер, работающий с Вашим приложением)можете редактировать, добавлять, удалять и т.д. Все изменения будут автоматически (или полуавтоматически, в зависимости от установок свойств, связанных с буферизацией и кэшированием изменений), для "немедленного" внесения сделанных Вами изменений в физ.таблицу исп-ся в частности метод ApplyUpdates, после чего на дркгих компах работающие юзера смогут увидеть Ваши коррекции, если у них соответственно вызывался Refresh для живого или Close/Open для статичного Query


 
Mike 13   (2002-09-18 18:34) [2]

спасибо большое за ответ, многое прояснилось

но все-таки, использую запрос, в нем

select
ClientID,
Company,
FIO = LName + " " + Substring (FName, 1,1) + " " + substring (SName, 1,1)
from
Clients C, FNames FN, SNames SN where
C.FNameID*=FN.FNameID and
C.SNameID*=SN.SNameID

Dbgrid выводит данные, полученные из этого запроса. Методом query1.refresh обновляется только поле Company, FIO остается старый. Если использую
query1.close;
query1.open;
, то работает все как надо
почему?
кстати использую TADOQuery, свойства RequestLive нету


 
MsGuns   (2002-09-18 19:17) [3]

Потому что поле Company есть "родное", т.е. как бы живое, в то время как FIO есть поле сборное, суррогатное, его непосредственно нет в исх.таблице. Вот и приходится переоткрывать.
Чтобы этого избежать надо:

1. В запросе выводить все 3 составляющие как они есть, т.е.
Select ..,LName,FName,SName

2. Создать новое калькулируемое поле FIO и в событии OnCalcFields запроса написать
FIO = LName + " " + FName[1] + " " + SName[1]

Тогда в гриде будет всегда светиться "свежая" ФИО (после Refresh)



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

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

Наверх





Память: 0.45 MB
Время: 0.006 c
1-31875
ViRUS_1
2002-09-28 21:31
2002.10.10
Выравнивание по правому краю в TEdit


3-31648
AM
2002-09-20 11:07
2002.10.10
Просьба помочь с запросом...


1-31882
Newguy
2002-09-30 03:44
2002.10.10
Richedit


1-31840
PaRL
2002-09-28 16:58
2002.10.10
---|Ветка была без названия|---


8-31916
froddo_
2002-06-10 12:38
2002.10.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский