powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Условие на дату для DBF
16 сообщений из 16, страница 1 из 1
Условие на дату для DBF
    #37864323
DimmaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

С помощью функции SyntaxFromSQL создаю код для datastore, в который качаю данные из ДБФ. Не могу наложить в запросе условие на дату.
Вот такой код:

Код: sql
1.
2.
3.
4.
ls_sql = "SELECT " + ls_filedata + ".Value as Weight " + &
" FROM " + ls_filedata + ", " + ls_filetag + " WHERE " + ls_filedata + ".TagIndex = " + ls_filetag + ".TTagIndex AND " + ls_filetag + ".TagName = '" + ls_tagname + "'" + " AND " + ls_filedata + ".[Date] >= {01.01.2000}"

ls_sql = ltr.SyntaxFromSQL (ls_sql, '',  ls_err)



выдает ошибку. Если к строке не подклеивать условие на дату, то все работает.

Подскажите как все-таки наложить это условие? Может преобразовать дату к строке "ггггммдд" и дальше сравнивать строки, но какой функцией делать преобразование?

PB 11.1, драйвер Driver do Microsoft dBase
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864552
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimmaN,

Не знаю причем тут PB, но ошибка в синтаксисе. Проще всего добиться работоспособности SQL-выражения в каком-нибудь commandere и воспроизвести его уже в PB.
Есть подозрения, что
- поле dataaf.[Date] -так не называется
- драйвер скорее всего переварит строковое значение даты '01.01.2000', а не {} и тут нужен формат совпадающий с вашей локалью.
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864598
DimmaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IkirDimmaN,

Не знаю причем тут PB, но ошибка в синтаксисе. Проще всего добиться работоспособности SQL-выражения в каком-нибудь commandere и воспроизвести его уже в PB.
Есть подозрения, что
- поле dataaf.[Date] -так не называется

именно так оно и называется. если включить его в выборку, и не накладывать на него условий, то datastore создается, sql выражение работает.
- драйвер скорее всего переварит строковое значение даты '01.01.2000', а не {} и тут нужен формат совпадающий с вашей локалью.

нет, '01.01.2000' он не переваривает, так же, как не переваривает '20000101', '2000-01-01'. Фигурные скобки поставил, т.к. такие скобки прокатывают в дбф-вьюере. Я не настаиваю, что должны быть именно они, т.к. и сам вижу что это не срабатывает.

Какой формат нужно указать - это и был мой вопрос :)
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864651
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimmaN,

Хорошо, в PB в SQL спроси SELECT {Date} FROM dataaf и посмотри что возвращает.
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864783
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я помню пришлось долго искать, чтобы выражение как дата воспринималась
Конечно я подобрал выражение, но уплевался весь
После этого делал либо перегонку dbf в excel или access, либо использовал прямой парсинг в dw, а потом уже обработку
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864805
DimmaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IkirDimmaN,

Хорошо, в PB в SQL спроси SELECT {Date} FROM dataaf и посмотри что возвращает.

Этот запрос не будет обработан. Зарезервированные слова квотируют так: [Date]. Но это так, не в тему :). Если запрос написать правильно, то при исполнении в ISQLSession возвращаются даты в формате дд.мм.гггг.

spas2001Я помню пришлось долго искать, чтобы выражение как дата воспринималась
Конечно я подобрал выражение, но уплевался весь
После этого делал либо перегонку dbf в excel или access, либо использовал прямой парсинг в dw, а потом уже обработку

И как надо писать, не помните?
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37864894
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimmaN,

Если бы он не мог преобразовать строку в дату, то ошибка была бы другая, типа String to date conversion error.

Такой запрос выполняется:
SELECT * FROM dataaf WHERE dataaf.[Date] < today(); ?

а такой

SELECT * FROM dataaf WHERE dataaf.Date < today()


PS По рукам бы разработчикам называющих поля таблиц зарезервированными словами.
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37865580
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для работы с dbf пользуюсь описанием usingdbaseexpressions.pdf
Можно поискать в инете.

Там указано :

.....
Date Special numeric value representing a date.
Literal use: {03/10/1999}
....
Function use: DTOS(DATE())
.....
Date Functions:
ACCDATE(<string>)
AGE(<date>)
CTOD(<string>)
DATE()
DAY(<date>)
DOBINDAYS(<date>)
DOW(<date>)
DOY(<date>)
DTOC(<date>)
DTOS(<date>)
MONTH(<date>)
STOD(<string>)
WDATE(<date>, <format>)
YEAR(<date>)

Приложить файл не могу - он больше 150кб ( 680 кб )



Good Luck !
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37865763
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий правильно написал
Кажется использовал date(), но сейчас не помню
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37866360
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>= #01/03/2012#
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37866417
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, не прокатит
Надо посмотреть через DBF навигатор, точно формат у структуры DBF дата, а то может строка
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37866511
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riska>= #01/03/2012#
Почему бы не воспользоваться документацией ?
#01/03/2012#
{01/03/2012}

Good Luck !
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37868711
DimmaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChV, спасибо большое. Это именно то, что я хотел найти. Но, к сожалению, не помогло. Видимо, ОДБСи драйвер нужен другой. Не все функции из этого списка поддерживает (см. картинку).

Обошел другим путем, создал датавинду на SQL Select'e с ретрив аргументом, там условие накладывается нормально. Ну и поcкольку мне нужно в запрос разные таблицы подкладывать делаю modify ("DataWindow.Table.Select =........
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37868715
DimmaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
картинку-то зобыл
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37868913
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimmaN, из документации :

DTOS(<date>)
Returns a character string (YYYYMMDD format) derived from <date>.
Return type: String
Example
DTOS(Contact2->UDATE)
returns 19981024.

У меня работает ( драйвер PB INTERSOLV OEM 3.11 ) :
...
Рейтинг: 0 / 0
Условие на дату для DBF
    #37868967
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimmaN, согласен, что, возможно, не все функции поддерживаются. Но другого описания не попадалось. Здесь же почти все работает. Могу выслать usingdbaseexpressions.pdf ответным письмом.
Картинку прилагаю.

Good Luck !
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Условие на дату для DBF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]