powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вывод даты с помощью оператора Between
25 сообщений из 37, страница 1 из 2
Вывод даты с помощью оператора Between
    #37738536
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день. Помогите пожалуйста разобраться в проблемке. Пишу дипломную: БД по заказам клиентов. Так вот не могу вывести "заказы" за ферваль месяц. Пробовала в sql:
Select... from... Where Заказы_работы.дата_заказа Between '20120201' AND '20120228'.

Можно еще код, где можно вывести заказы на определенный месяц, к примеру вводишь 3, а там заказы за март месяц..плииз

я новичок в vfp..
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738600
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laylik,

Функция BETWEEN определяет, находится ли заданное некоторое выражение между значениями
двух заданных выражений того же типа данных.

BETWEEN(eTestValue, eLowValue, eHighValue)
Параметры
eTestValue
Определяет тестируемое выражение.
eLowValue
Определяет выражение, как Нижнюю границу диапазона.
eHighValue
Определяет выражение, как Верхнюю границу диапазона.
Expand imageВозвращаемое значение

Логического типа или null. BETWEEN( ) возвращает значение = True (.T.), если заданный первым аргумент функции равен или больше нижней границы (второй параметр) заданного диапазона и не больше верхнего предела диапазона, заданного третьим аргументом. В другом случае, функция BETWEEN( ) возвращает значение = False (.F.). BETWEEN( ) возвращает значение = null, если параметры eLowValue или eHighValue имеют значение = null.
Expand imageПример

В следующем примере, открывается таблица orders, в которой сканируются все записи, в которых значение поля order_amt находится в диапазоне между 950 и 1000, включительно; отображаются соответствующие значения полей cust_id и order_amt.
CopyCode imageКопировать Код

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders && Открывается таблица order

CLEAR
SCAN FOR BETWEEN(order_amt,950,1000)
? cust_id, order_amt
ENDSCAN
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738608
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540, ничего не поняла, но спасибо
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738612
Фотография Алексей (Витебск)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преобразует символьное выражение в выражение даты.

Синтаксис

CTOD(cExpression)

Параметры

cExpression

Задает символьное выражение, для которого функция CTOD( ) возвращает значение типа Date. Выражение cExpression должно определять допустимую дату в диапазоне от 1/1/100 до 12/31/9999.
По умолчанию cExpression имеет формат mm/dd/yy. Его можно изменить командами SET DATE и SET CENTURY. Если при вводе даты век не указывается (например 1/1/95); предполагается двадцатый век.

Результат

Дата

Комментарии

Функция CTOD( ) принимает символьное выражение и возвращает значение типа Date.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738620
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laylik,

Найдите три отличия:

Between '20120201' AND '20120228'
BETWEEN(order_amt,950,1000)
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738629
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей (Витебск),

SELECT Zakazy.код_заказа, Zakazy.табельный_номер, Zakazy.объект,;
Zakazy.дата_заказа;
FROM ;
data1!заказы Zakazy;
WHERE Zakazy.дата_заказа BETWEEN CTOD("01.02.2012") AND CTOD("28.02.2012")


задавала диапазон с помощью фильтра, исчезли всякие ошибки, но выводится пустая таблица с заданными полями. Вроде вводила данные за февраль месяц
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738633
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, мне именно дата нужна, таким образом я оклад уже выводила.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738637
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laylik,

А за месяц - есть функция MONTH()
Функция возвращает номер месяца для заданного выражения типа Date или DateTime.
MONTH(dExpression | tExpression)
Параметры
dExpression - Определяет выражение типа Date для которого функция MONTH( ) возвращает номер месяца.
tExpression - Определяет выражение типа DateTime для которого функция MONTH( ) возвращает номер месяца.
Возвращаемое значение: Числовое
MONTH( ) возвращает число в диапазоне от 1 до 12. Январь - месяц с номером 1, декабрь - месяц с номером 12.

Заказы за месяц: MONTH(Заказы_работы.дата_заказа )=3
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738712
Фотография Алексей (Витебск)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laylik,

По умолчанию cExpression имеет формат mm/dd/yy. Его можно изменить командами SET DATE и SET CENTURY. Если при вводе даты век не указывается (например 1/1/95); предполагается двадцатый век.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738746
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
Select... from... Where Between(Заказы_работы.дата_заказа, {^2012.02.01},{^2012.02.28})
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738756
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
Select... from... Where MONTH(Заказы_работы.дата_заказа)==3
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37738764
LaylikВсем добрый день. Помогите пожалуйста разобраться в проблемке. Пишу дипломную: БД по заказам клиентов. Так вот не могу вывести "заказы" за ферваль месяц. Пробовала в sql:
Select... from... Where Заказы_работы.дата_заказа Between '20120201' AND '20120228'.

Можно еще код, где можно вывести заказы на определенный месяц, к примеру вводишь 3, а там заказы за март месяц..плииз

я новичок в vfp..
*Заказы за Февраль
SELECT * FROM заказы_работы WHERE MONTH(Дата_заказа)=2 INTO CURSOR заказы_февраль
BROWSE

*Заказы за Февраль и Март
SELECT * FROM заказы_работы WHERE MONTH(Дата_заказа)=2 OR MONTH(Дата_заказа)=3 INTO CURSOR заказы_февраль
BROWSE
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739040
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LaylikВсем добрый день. Помогите пожалуйста разобраться в проблемке. Пишу дипломную: БД по заказам клиентов. Так вот не могу вывести "заказы" за ферваль месяц. Пробовала в sql:
Select... from... Where Заказы_работы.дата_заказа Between '20120201' AND '20120228'.

Можно еще код, где можно вывести заказы на определенный месяц, к примеру вводишь 3, а там заказы за март месяц
Ну, надеюсь, Вы все-таки понимаете, что месяц имеет смысл только в "комплекте" с годом. Иначе Вы получите выборку за март месяц, но по всем годам, какие только есть в таблице.

Дату в FoxPro можно сформировать многими способами, но, если исходить из Вашего предположения, что задается номер месяца, то надо сформировать дату на первое число месяца и дату на последнее число месяца. Тогда получим примерно такой код

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
* Исходные данные
Local lnYear, lnMonth
lnYear = Year(Date())   && Текущий год или укажите нужный Вам год
lnMonth = 3             && Нужный Вам месяц

* По исходным данным формируем дату начала и окончания месяца
Local ldDateFrom, ldDateTo
ldDateFrom = Date(m.lnYear, m.lnMonth, 1)  && Первое число указанного месяца и года
ldDateTo = GoMonth(m.ldDateFrom, 1) - 1    && Последнее число указанного месяца и года

* Собственно выборка
Select... from... Where Заказы_работы.дата_заказа Between m.ldDateFrom AND m.ldDateTo


В более общем случае пользователю просто предлагается ввести эти самые начальную и конечную дату в некой предварительной форме. Тогда в запросе просто напрямую указываются введенные значения без каких-либо преобразований.

Для справки

Если в объекте TextBox на форме не указано свойство ControlSource, то, по умолчанию, тип данных, вводимый и отображаемый в данном объекте определяется значением свойства TextBox.Value. Если там ничего не указано, то TextBox будет вводить символьные (строковые) типы данных. Чтобы в TextBox вводились данные типа Date необходимо сделать присвоение

TextBox.Value = {}

Т.е. просто две фигурные скобки подряд. Это присвоение можно сделать и в дизайнере формы или класса.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739070
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Local lnYear, lnMonth
lnYear = Year(Date(2012))
lnMonth = 2
Local ldDateFrom, ldDateTo
ldDateFrom = Date(2012, 02, 1)
ldDateTo = GoMonth(28, 1) - 1
SELECT *;
FROM data1!заказы
Where Заказы.дата_заказа Between m.ldDateFrom AND m.ldDateTo

вот так вы имеете ввиду?
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739087
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти. Только в функцию формирования начальной даты надо не число 2 ставить, а указывать переменную, содержащую номер месяца. Это чтобы иметь возможность изменять выбранный месяц.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739090
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще, первый параметр функции GoMonth() - это все-таки дата. В данном случае, начальная дата. А вовсе не число 28.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739129
Laylik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эх не получается. наверное я как новичок что-то не так делаю. Всем спасибо что старались, дай Бог вам здоровья.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739542
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laylik,

ВладимирМ Вам уже все написал, зачем переделываете?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
* Исходные данные
Local lnYear, lnMonth
lnYear = Year(Date())   && Текущий год (2012)
или
*lnYear = 2011      && нужный Вам год, например 2011
lnMonth = 3             && Нужный Вам месяц

* По исходным данным формируем дату начала и окончания месяца
Local ldDateFrom, ldDateTo
ldDateFrom = Date(m.lnYear, m.lnMonth, 1)  && Первое число указанного месяца и года
ldDateTo = GoMonth(m.ldDateFrom, 1) - 1    && Последнее число указанного месяца и года

* Собственно выборка
SELECT * FROM data1!заказы
Where Заказы.дата_заказа Between m.ldDateFrom AND m.ldDateTo
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739552
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Laylik,

Последние строки так:
Код: xml
1.
2.
3.
4.
5.
...

* Собственно выборка
SELECT * FROM data1!заказы
Where Between(Заказы.дата_заказа, m.ldDateFrom, m.ldDateTo)
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739639
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Jonny540Laylik,

Последние строки так:
Код: xml
1.
2.
3.
4.
5.
...

* Собственно выборка
SELECT * FROM data1!заказы
Where Between(Заказы.дата_заказа, m.ldDateFrom, m.ldDateTo)


т.к. есть подозрение, что программа запускается все-таки из фокса
и еще, как советовал
проходящий.SELECT ... INTO CURSOR заказы_февраль
BROWSE
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739794
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внутри команды Select-SQL в среде FoxPro совершенно без разницы как писать

Код: sql
1.
SELECT * FROM data1!заказы where Заказы.дата_заказа Between m.ldDateFrom AND m.ldDateTo


или

Код: sql
1.
SELECT * FROM data1!заказы Where Between(Заказы.дата_заказа, m.ldDateFrom, m.ldDateTo)


Это вопрос исключительно личных предпочтений. Однако если одновременно приходится работать в нескольких средах программирования, то, как правило, выбирается стиль общий для всех используемых сред. А это как раз первый вариант.
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37739942
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМВнутри команды Select-SQL в среде FoxPro совершенно без разницы как писать

Спасибо, не знал, но в VFP6 первый вариант не работает :(
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37740762
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540ВладимирМВнутри команды Select-SQL в среде FoxPro совершенно без разницы как писать

Спасибо, не знал, но в VFP6 первый вариант не работает :(

HELP Select-SQL FoxPro for DOS 2.0 Формат: <поле> [NOT] BETWEEN <начало> AND <конец>
Пример: customer.taxrate BETWEEN 5.50 AND 6.00

Проверка на то, что <поле> имеет значение в заданном диапазоне.

Т.е. такой синтаксис работал во ВСЕХ версиях FoxPro без исключения. Если у Вас не работает, то ищите ошибку в синтаксисе. Что-то Вы не так написали...
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37813410
Shalinia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540,

а можно ли поставить дату как-то в интерфейс проги? и как это сделать? подскажите пожалуйста
...
Рейтинг: 0 / 0
Вывод даты с помощью оператора Between
    #37814110
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shaliniaпоставить дату как-то в интерфейс прогиЖелательно увидеть перевод сей конструкции на нормальный технический русский язык.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вывод даты с помощью оператора Between
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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