|
|
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
В SQL-server я могу получить текущую дату select getdate() В Access не могу вызвать функцию Now() таким же способом мне приходится указывать название какой-нибудь таблицы (сейчас я использую sysobjects) select Now() as curtime from MSysobjects GROUP BY Now() или select Now() as curtime, count(*) from MSysobjects Я не хочу качать несколько строк и приходится использовать GROUP BY или использовать агрегатную функцию count для возврата одной строки. Может быть есть лучше решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 14:58 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
Я не хочу качать несколько строк и приходится использовать GROUP BY или использовать агрегатную функцию count для возврата одной строки. А что, Select Top 1 уже отменили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 15:00 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
Может возможно как-нибудь обойтись без указания таблицы (напрмер ссылаться на какой-нибудь NULL-объект)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 15:04 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
может все-таки попытаться читать форум перед тем как писать?\r или чукча не читатель, чукча писатель?\r /topic/85858\r первый же ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 15:10 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
Уважаемый, вы наверно имеете в виду это: Код: plaintext Я вас огорчу, в моей базе в таблице msysobjects нет записи с id=0. Речь идет о поиске универсального решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 20:53 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
А как насчет проверить остальные предложенные ответы? Лох Позорный, сегодня, 15:00А что, Select Top 1 уже отменили? Лох Позорный, сегодня, 15:10 - ссылка на Victosha, сегодня, 13:30заведи таблу _null ( обычно ее зовут dummy) и вставь в нее одну строку. из нее и select ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 21:22 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
Саныч, вообще-то я имел в виду вот эту часть ответа Виктоши: Victoshaесли acess > 97 то убери from и просто считай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 22:34 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
А я выделил более универсальную часть ответа. А то опять заявит, что наши ответы не работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 22:39 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
авторА я выделил более универсальную часть ответа. А то опять заявит, что наши ответы не работают. Ну вообще-то автор топика спросил как это сделать без таблицы: авторМожет возможно как-нибудь обойтись без указания таблицы Под этот ответ попадает лишь "убери from и просто считай." Но, к сожалению, очень ограничены возможности считать это значение. Например, DlookUp даст ошибку. Включение этого запроса в другие тоже. Но Recordset подобное спокойно проглатывает ?currentdb.openrecordset("SELECT now() AS b")!b 10.04.04 1:32:32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 23:34 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
авторНо, к сожалению, очень ограничены возможности считать это значение. Например, DlookUp даст ошибку. в целом это и правда и неправда ( точнее, вторая часть утверждения - неточность в изложении, приводящая к неправде, а первая - правда, по поводу которой хочется дать пояснение). начнем со второй части - dlookup. как бы это сказать по русски - она - dlookup - функция (при этом, это НЕ VBA-функция,и даже не собственно Access-а, а (судя по всему) чистая Jet-функция (допустимо, что брежу в детали, но утверждение важно в контексте)). Из ее 3х параметров 2 первых обязательные. пропустить домен - нельзя ДВАЖДЫ - 1) при явном пропуске будет ошибка ПЕРЕДАЧИ ПАРАМЕТРОВ - т.е. неправильный вызов функции. 2) при передаче пустой строки, описание возвращаемой ошибки классифицирует dlookup как "статистистическую функцию на подмножестве", явно намекая на имплицитный GROUP BY по содержимому "строки домена" (как и прочие функции категории D(Max,Min,Sum,Avg,Var,Lookup- не помню кто еще), другими словами внутри D... - не скалярные вычисления - посему подай домен. Правильно сформированный dlookup "нормально" работает в запросе (как и прочие D...) в ACCESS-е (выделенное цветом критически важно). например (Борей,2000), создав в конструкторе запрос Код: plaintext видим результат:"32 коробок по 500 г" то есть НЕПРАВДА - правильно сформированный dlookup - правильно и работает (в вычислительном запросе Access-а). теперь выделим правду. Код: plaintext здесь правда состоит в том, что для работы запросов типа SELECT now() SELECT dlookup(...) небходимо, чтобы задействованные функции были поддержаны "database engine-ом" ( либо хотя бы локальным поставщиком данных). Отсюда берется мое утверждение/предположение, что dlookup - функция Jet ( ну на край ее OLEDB-провайдера). То есть в формате файла 2000 "вычислительный" select myFavouriteAccessFunc(Param1,Param2) НЕ сработает, поскольку ни джет (ни провайдер) о ней (myFavouriteAccessFunc) ничего не зают. в формате XP поставщиком данных для Access может быть объявлен сам Access, и, как я ожидаю (не пробовал), "пурпурный" запрос "вычислится" нормально. ( если опять не все попутал - Гетса на сей счет "параграф" имеется) ТО ЕСТЬ возможности вычисления действительно ограничены вычислительными возможностями database engine, с максимальным расширением до драйвера-поставщика. ЗЫ В былые времена (вплоть до 97 версии) приличный писатель книжек про аксесс считал для себя обязательным поместить в приложение список фунций, исполняемых джетом. Как неточно помню, он почти 100-процентно пересекается со списком функций, доступных в (тогдашнем) vbs. Поскольку у нас сии книжки были изданы мало прилично (клеенные), у меня они уже давно разлетелись по листочкам и даже без "правильного" применения. К сожалению, не припомню такого списка в современных "Гетсах". Озаботившись списком (и не получив ответа в форуме) полез в саппорт. Полного списка не нашел (по контексту стало понятно, что его и так все знают и помнют от зубов и писать об этом нечего - один я, не то чтобы забыл, а и не знал), но нашел список "опасных" функций типа dir(), rmdir,mkdir() ... исполнение которых джетом можно включать и отключать, манипулируя реестром. за бессмысленностью в данную секунду результата, плюнул и даже ссылку не сохранил. ---------------------- вот и весь комментарий ---------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2004, 01:51 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
2 Victosha Перечитал несколько раз, признаюсь не все сразу дошло до моего разумения :( авторто есть НЕПРАВДА - правильно сформированный dlookup - правильно и работает (в вычислительном запросе Access-а). На третье перечитывание я понял, что хотел сказать автор. И понял, что виноват сам - плохо выразил свою мысль. Я не говорил о применении DLookUp в запросе (инструкции SQL). Я говорил об использовании DLookUp для получения результата запроса. Т.е., например, есть запрос qryTest, SQL инструкция которого "SELECT now() As b", дык, DlookUp("b","qryTest") даст Run-time error '3067' "Query Input must contain at least one table or query" По поводу кому принадлежат функции по подмножеству, мне важно, что (TypeLibInfo) они члены класса Access.Application. В добавление к своему предыдущему сообщению, замечу, что currentdb.openrecordset("SELECT now() AS b")!b не cрабатывает в Access 97. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2004, 09:32 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
эхь, вот все мысли в кучку у мене в ночи все-таки не собрались - чичас под пиво продолжаю: авторcurrentdb.openrecordset("SELECT now() AS b")!b не cрабатывает в Access 97. вот как бы и не должны срабатывать. В 97нет чистых "ВЫЧИСЛИТЕЛЬНЫХ" запросов, а есть ВЫЧИСЛЕНИЯ в запросах. ( это когда, например, from dummy - см выше ссылку на соседний топик). Это есть в любых весиях и до и после. При этом вычисления в запросе практически полностью (с очень специфическими оговорками) снимают тему "мощности" вычислителя database engine - все (почти), что может вычислить аксесс, будет вычислено в "запросе с вычислениями" при условии, ЧТО ОН ИЗ ПОД АКСЕССА ЖЕ И ЗАПУЩЕН. То есть снимаются ограничения на пользовательские функции. Тонкость момента заключается в том, что этого счастья лишены "не аксессные клиенты". То есть, ежели какой-нибудь Дельфийный клиент, подсоединившись к mdb, попробует "пускануть" такой запрос ( с использованием vba-шных user-функкций, живущих в этом же mdb) - очевидно ли, какой он получит результат? Вот в связи с этим как раз и интересен "список функций" - как инструмент отделения мухов от котлетов и фотографичесокго проявления "собственной мощности" вычислителя Jet database engine - а она (мощьность) НЕ ШИБКО МАЛЕНЬКАЯ, хоть и ограниченная, естественным образом. PS про DLookup я пытался сказать только следующее: попытка обращения к нему ка Dlookup("5+5") так и Dlookup("5+5","") НЕКОРРЕКТНА В ПРИНЦИПЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2004, 11:50 |
|
||
|
Функция Now() - вернуть одну строку или как добавить изящества запросу
|
|||
|---|---|---|---|
|
#18+
во блин - только что дошло, что функции Jet - это те, которые в конструкторе выражений запросов числятся как "встроенные". Это же, действительно, знает каждый. ( как всегда кроме меня) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2004, 12:21 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32475656&tid=1675432]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
151ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 456ms |

| 0 / 0 |
