|
|
|
LV
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем ! Просветите по 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 12:05 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Значит data2 не типа дата. Тип переменной можно посмотреть функцией TYPE() и VARTYPE() Поставь где нибудь MessageBox(TYPE('data2')) Если это дата, то будет 'D' или 'T' (DATE и DATETIME соответственно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 12:21 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Nikita_2Проверил у data1 и data2 тип D Другой причины быть не может. Возможно на момент открытия LV в data2 что-то другое. попробуй такой код: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 12:42 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Да все равно ошибка 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:12 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Nikita_2Да все равно ошибка operator/operand tipe mismatch ...При запуске моего кода ошибка повторилась. Я правильно понял? Где код запроса LV? Я его просил. Зайди в дизайнер LV, правая кнопка, 'View SQL', и скопируй сюда текст запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:41 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
SELECT *; FROM b_g!t_date; WHERE T_date.data_reg >= "data1"; AND T_date.data_reg <= "data2"; ORDER BY T_date.data_reg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:06 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Ну и какого .... здесь делают кавычки вокруг data1 и data2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:17 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
это надо у дизайнера справшивать, убираю он опять их ставит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:37 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Вот так напиши Код: plaintext 1. 2. 3. 4. 5. Т.е. при указании условий фильтрации перед именем переменных поставь вопросительный знак. Вопросительный знак говорит построителю о том, что далее следует параметр. Т.е. переменная, значение которой будет определено непосредственно перед открытием Local View ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:37 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Как всегда решпект Владимиру, ошибка пропала Но выводится не то что ожидалось, я так понимаю если dat1 - 10.11.07 , а dat2 - 30.11.07 то должны отразиться все записи этого диапазона, фактически не отражается ничего, если вводится 1 значение dat1 - 10.11.07 , dat2 - пустое, отражаются записи и до 10.11 и после 01.12, никак не пойму логику И еще если введенного dat1 допустим 01.01.07 в таблице нет тоже не отражается ничего ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 23:18 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
P.S. В принципе данные нужны как подготовка для вывода в report отчет , думаю что существуют еще способ решить этот вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 23:34 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
1. Нужно посмотреть, как установлен формат даты. Я всегда устанавливаю: SET DATE GERMAN SET CENTURY ON Иначе data1 и data2 могут иметь совсем не те значения, которые Вы им хотите присвоить. 2. попробуйте: ... WHERE BETWEEN(T_date.data_reg,data1,data2) ... С уважением Sea_Cat. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 09:41 |
|
||
|
LV
|
|||
|---|---|---|---|
|
#18+
Чтобы не зависеть от текущих настроек SET DATE при задании констант типа Date используют такой формат Код: plaintext Здесь в качестве разделителей может выступать наклонная черта, дефис и точка или же функцию Date() Код: plaintext Пустая дата рассматривается как самая маленькая дата, поэтому нет ничего удивительного в том, что если стоит условие меньше пустой даты, то в результате выборки ничего нет. Поскольку пустая дата и так самая маленькая. Просто не может быть даты меньше минимальной. Следует иметь в виду, что Local View - это запрос. Т.е. он использует значение параметров только и исключительно в момент выполнения этого запроса. А это происходит либо при первом открытии по команде USE, либо при использовании функции Requery() Это значит, что надо либо перед открытием Local View указать параметры Код: plaintext 1. 2. 3. Либо перед перезапросом Код: plaintext 1. 2. 3. 4. Для указания пустой даты используется такой синтаксис Код: plaintext Т.е. две фигурные скобки подряд. Изменение значения парамтров запроса без повторного выполнения запроса никак не повлияет на содержимое Local View. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35025482&tid=1588375]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 364ms |

| 0 / 0 |
