
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.12.2005, 12:49:39
|
|||
|---|---|---|---|
|
|||
Between с датами |
|||
|
#18+
Конструирую запрос, условие отбора для него задаю так: Private Function WhereConstruct(term1 As Date, term2 As Date) As String Dim str As String str = "WHERE tblTab1.date Between '" & term1 & "' And '" & term2 & "';" WhereConstruct = str End Function т.е. отбираю данные в определенном временном отрезке. Выдает ошибку "несоответствие типов данных" (за остальные части запроса ручаюсь). Что у меня неправильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2005, 13:04:07
|
|||
|---|---|---|---|
Between с датами |
|||
|
#18+
для Access дату нужно выдавать в американском формате, заключенную в символы "#" Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. и вот так вот доработайте свою ф-цию Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2005, 03:45:32
|
|||
|---|---|---|---|
|
|||
Between с датами |
|||
|
#18+
Да в ассессе я все это делаю. Насчет дат - просто протупил, переутомился вчера. За сове HandKotу отдельная большая благодарность! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2005, 09:51:36
|
|||
|---|---|---|---|
|
|||
Between с датами |
|||
|
#18+
Одного только не пойму: почему когда term1 и term2 совпадают (т.е. выборка по одному дню делается) приложение в vb возвращает пустой рекордсет а ассесовский запрос (точно такой же!) делает нормальную выборку?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2005, 10:10:43
|
|||
|---|---|---|---|
Between с датами |
|||
|
#18+
такого быть, вроде, не должно поставьте брекпоинт после формирования строки запроса посмотрите и выполните его в Акцесе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2005, 10:43:16
|
|||
|---|---|---|---|
|
|||
Between с датами |
|||
|
#18+
ИгорьЧерниенкоОдного только не пойму: почему когда term1 и term2 совпадают (т.е. выборка по одному дню делается) приложение в vb возвращает пустой рекордсет а ассесовский запрос (точно такой же!) делает нормальную выборку?! сомнительно что-то, чтобы акцесс нормальную выборку выдавал. не может этого быть. То есть - на слово не верим, а считаем, что, вероятно, в запросе акцесса есть некоторое отличие, которое Вы не видите гдазами. Запрос не должен работать. по существу дела. Для провеки значений выражений в среде vba можно использовать окно "немедленных вычислений" - Immediate Если на системе с установленным разделитетелем даты "." в таком окне набрать выражение: Код: plaintext И нажать Enter, то в ответ Вы полчите Код: plaintext Это выражение не является правильно оформленной записью даты в американском формате. Поэтому запрос работать просто не должен. И ничего не должен возвращать, если фильтрация проводится по заполненным полям типа дата с ненулевыми значениями. Если он по каким-то причинам в акцесс работает, то, с одной стороны, это происходит исключительно потому, что акцесс своим нутряным мозговым усилием догадывается, что ему хотели дать дату и просто исправляет полученную грязь, на то, что он посчитает ближайшей правдоподобной датой. С друголй стороны - это крайне печально, что акцесс проявляет такую непрошенную умность. ПОскольку, увидев возврат данных от такого запроса человек, его составивший скореее всего даже не будет подозревать, что не всякий день в нодй он увидит именно то, что рассчитывал попросить от акцесса. Если так происходит, то нужно признать, что, фактически, акцесс обманывает пользователя, оставляя его в неведении как о допущенной пользователем ошибке, так и оставляет на будущее состояние глубокого изумления пользователя, получившего "не те" данные от запроса, который пользователь от чистого сердца будет считать запрос правильным. Правильно оформленная дата в американском формате в данном случае должна выглядеть так Код: plaintext проблема выражения Format(Date, "MM/DD/YYYY") в том, что символ / в строке формата является указанием на то, что в данном месте должен должен стоять системный разделитель даты. Если в системе разделитель даты "-", то именно этот символ и появится. То есть / в строке формата - это специальный символ, и, для того, чтобы получить в выходной строке именно /, то нужно отменить действие / как специального шаблонного форматного символа. Для этого служит другой специальный символ \ означающий что следующий за ним символ не должен проверяться на "специальность". всякая специальность следующего символа, каким бы он ни был, отменяется и он просто дорлжен попасть в выходной поток. Таким образом, для того, чтобы получить в выходном потоке символ / в строке формата необходимо использовать конструкцию \/ Правильно свормированная строка формата, возвращающая значение, которое в Jet запросе будет интерпретировано как значение даты, будет выглядеть так мфкВфеу - переменная типа дата Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2005, 11:00:22
|
|||
|---|---|---|---|
|
|||
Between с датами |
|||
|
#18+
при прямом слеплении значения cdbl в строку вида Код: plaintext Правильное оформление строки для такого случая Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&tablet=1&tid=2166635]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
181ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 434ms |

| 0 / 0 |
