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

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

я новичок в vfp..
...
Рейтинг: 0 / 0
04.04.2012, 15:32
    #37738600
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
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
04.04.2012, 15:35
    #37738608
Laylik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Jonny540, ничего не поняла, но спасибо
...
Рейтинг: 0 / 0
04.04.2012, 15:36
    #37738612
Алексей (Витебск)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Преобразует символьное выражение в выражение даты.

Синтаксис

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
04.04.2012, 15:38
    #37738620
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Laylik,

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

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

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


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

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

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

По умолчанию cExpression имеет формат mm/dd/yy. Его можно изменить командами SET DATE и SET CENTURY. Если при вводе даты век не указывается (например 1/1/95); предполагается двадцатый век.
...
Рейтинг: 0 / 0
04.04.2012, 16:33
    #37738746
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Код: sql
1.
Select... from... Where Between(Заказы_работы.дата_заказа, {^2012.02.01},{^2012.02.28})
...
Рейтинг: 0 / 0
04.04.2012, 16:35
    #37738756
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Код: sql
1.
Select... from... Where MONTH(Заказы_работы.дата_заказа)==3
...
Рейтинг: 0 / 0
04.04.2012, 16:38
    #37738764
Вывод даты с помощью оператора Between
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
04.04.2012, 18:29
    #37739040
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
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
04.04.2012, 18:52
    #37739070
Laylik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
ВладимирМ,

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
04.04.2012, 19:02
    #37739087
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Почти. Только в функцию формирования начальной даты надо не число 2 ставить, а указывать переменную, содержащую номер месяца. Это чтобы иметь возможность изменять выбранный месяц.
...
Рейтинг: 0 / 0
04.04.2012, 19:03
    #37739090
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Да, и еще, первый параметр функции GoMonth() - это все-таки дата. В данном случае, начальная дата. А вовсе не число 28.
...
Рейтинг: 0 / 0
04.04.2012, 19:21
    #37739129
Laylik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
эх не получается. наверное я как новичок что-то не так делаю. Всем спасибо что старались, дай Бог вам здоровья.
...
Рейтинг: 0 / 0
05.04.2012, 06:36
    #37739542
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
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
05.04.2012, 07:06
    #37739552
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Jonny540Laylik,

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

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

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

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


т.к. есть подозрение, что программа запускается все-таки из фокса
и еще, как советовал
проходящий.SELECT ... INTO CURSOR заказы_февраль
BROWSE
...
Рейтинг: 0 / 0
05.04.2012, 10:52
    #37739794
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Внутри команды 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
05.04.2012, 11:57
    #37739942
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
ВладимирМВнутри команды Select-SQL в среде FoxPro совершенно без разницы как писать

Спасибо, не знал, но в VFP6 первый вариант не работает :(
...
Рейтинг: 0 / 0
05.04.2012, 17:54
    #37740762
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
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
27.05.2012, 15:36
    #37813410
Shalinia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод даты с помощью оператора Between
Jonny540,

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


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