powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / LV
14 сообщений из 14, страница 1 из 1
LV
    #35022798
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте всем !

Просветите по Local View
Ситуация такая: Есть таблица клиентов у каждого дата регистрации (поле data_reg), нужно из нее выбрать за определенный период соответственно с data1 по data2, решил сделать LV, в filtr LV указываю klient.data_reg >=data1 and klient.data_reg<=data2, начинает ругаться мол tipe mismahth, попробовал вывести client.data_reg = data1 все проходит на ура и выбирает записи только соответствующие data1
...
Рейтинг: 0 / 0
LV
    #35022854
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит data2 не типа дата.
Тип переменной можно посмотреть функцией TYPE() и VARTYPE()
Поставь где нибудь
MessageBox(TYPE('data2'))
Если это дата, то будет 'D' или 'T' (DATE и DATETIME соответственно)
...
Рейтинг: 0 / 0
LV
    #35022892
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил у data1 и data2 тип D
...
Рейтинг: 0 / 0
LV
    #35022934
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikita_2Проверил у data1 и data2 тип D
Другой причины быть не может. Возможно на момент открытия LV в data2 что-то другое.
попробуй такой код:
Код: plaintext
1.
2.
3.
4.
5.
close data all
open data MyDB && тут имя твоей базы
data1 = date() -  10 
data2 = date()
use MyLV && тут имя твоего LV
brow
Если ошибка будет, то показывай весь код запроса в LV
...
Рейтинг: 0 / 0
LV
    #35023077
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да все равно ошибка operator/operand tipe mismatch
Вобщем сделал так на форме 2 grida grid1-таблица клиентов , grid2 - Lv (пустая), 2 поля для ввода дат соответственно data1 и data2. кнопка с кодом sele Lv, requery('Lv'), ThisForm.Grid2.Refresh()
В init формы data1=tt.s1 и data2=tt.s2 , s1 и s2 поля типа dat таблицы tt они пустые
в окружении табл. t_klient, lv, tt
...
Рейтинг: 0 / 0
LV
    #35023195
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikita_2Да все равно ошибка operator/operand tipe mismatch
...При запуске моего кода ошибка повторилась. Я правильно понял?
Где код запроса LV? Я его просил.
Зайди в дизайнер LV, правая кнопка, 'View SQL', и скопируй сюда текст запроса.
...
Рейтинг: 0 / 0
LV
    #35023307
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT *;
FROM b_g!t_date;
WHERE T_date.data_reg >= "data1";
AND T_date.data_reg <= "data2";
ORDER BY T_date.data_reg
...
Рейтинг: 0 / 0
LV
    #35023351
Ну и какого .... здесь делают кавычки вокруг data1 и data2?
...
Рейтинг: 0 / 0
LV
    #35023448
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это надо у дизайнера справшивать, убираю он опять их ставит!
...
Рейтинг: 0 / 0
LV
    #35023454
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так напиши

Код: plaintext
1.
2.
3.
4.
5.
SELECT *;
FROM b_g!t_date;
WHERE T_date.data_reg >= ?data1;
   AND T_date.data_reg <= ?data2;
ORDER BY T_date.data_reg

Т.е. при указании условий фильтрации перед именем переменных поставь вопросительный знак.

Вопросительный знак говорит построителю о том, что далее следует параметр. Т.е. переменная, значение которой будет определено непосредственно перед открытием Local View
...
Рейтинг: 0 / 0
LV
    #35024911
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как всегда решпект Владимиру, ошибка пропала
Но выводится не то что ожидалось, я так понимаю если dat1 - 10.11.07 , а dat2 - 30.11.07 то должны отразиться все записи этого диапазона, фактически не отражается ничего, если вводится 1 значение dat1 - 10.11.07 , dat2 - пустое, отражаются записи и до 10.11 и после 01.12, никак не пойму логику
И еще если введенного dat1 допустим 01.01.07 в таблице нет тоже не отражается ничего ?!
...
Рейтинг: 0 / 0
LV
    #35024936
Nikita_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. В принципе данные нужны как подготовка для вывода в report отчет , думаю что существуют еще способ решить этот вопрос?
...
Рейтинг: 0 / 0
LV
    #35025293
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Нужно посмотреть, как установлен формат даты. Я всегда устанавливаю:
SET DATE GERMAN
SET CENTURY ON
Иначе data1 и data2 могут иметь совсем не те значения, которые Вы им хотите присвоить.
2. попробуйте:
... WHERE BETWEEN(T_date.data_reg,data1,data2) ...

С уважением Sea_Cat.
...
Рейтинг: 0 / 0
LV
    #35025482
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не зависеть от текущих настроек SET DATE при задании констант типа Date используют такой формат

Код: plaintext
date1 = {^ 2007 - 11 - 10 }

Здесь в качестве разделителей может выступать наклонная черта, дефис и точка

или же функцию Date()

Код: plaintext
date2 = date( 2007 , 11 , 30 )

Пустая дата рассматривается как самая маленькая дата, поэтому нет ничего удивительного в том, что если стоит условие меньше пустой даты, то в результате выборки ничего нет. Поскольку пустая дата и так самая маленькая. Просто не может быть даты меньше минимальной.

Следует иметь в виду, что Local View - это запрос. Т.е. он использует значение параметров только и исключительно в момент выполнения этого запроса. А это происходит либо при первом открытии по команде USE, либо при использовании функции Requery()

Это значит, что надо либо перед открытием Local View указать параметры

Код: plaintext
1.
2.
3.
date1 = {^ 2007 - 11 - 10 }
date2 = {^ 2007 - 11 - 30 }
USE MyVyew

Либо перед перезапросом

Код: plaintext
1.
2.
3.
4.
USE MyVyew NODATA
date1 = {^ 2007 - 11 - 10 }
date2 = {^ 2007 - 11 - 30 }
Requery("MyVyew")

Для указания пустой даты используется такой синтаксис

Код: plaintext
date1 = {}

Т.е. две фигурные скобки подряд.

Изменение значения парамтров запроса без повторного выполнения запроса никак не повлияет на содержимое Local View.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / LV
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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