powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQl запросы и Grid
13 сообщений из 13, страница 1 из 1
SQl запросы и Grid
    #32639287
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть файл заказов и справочник исполнителей(их может быть несколько на 1 заказ).
моя задача: в Gride высветить весь файл заказов, и по кнопках, их у меня 3
НАЗАД, СЕГОДНЯ, ВПЕРЕД
1. по СЕГОДНЯ -в Gride высветить заказы выполненные сегодня,
2. по ВПЕРЕД - завтра, послезавтра.....
3. по назад вчера, позавчера.....
Работает не совсет так, как хочу.
Создала параметрезированный запрос
SELECT Spisa.imen, Spisa.datr;
FROM ;
spisok!spisa;
WHERE Spisa.datr >= ( ?xdat );
AND Spisa.datr <= ( ?xdat1 )

В Init формы ставлю

public xdat,xdat1,dat
xdat=CTOD("")
xdat1=ctod("31.12.2004")
dat=DATE()
REQUERY("view1")

В click СЕГОДНЯ
xdat=DATE()
xdat1=DATE()
requery("view1")

В click ВПЕРЕД
dat=dat+1
xdat=DAT
xdat1=DAT
requery("view1")
Пустой экран, когда таких дат в файле нет(сколько бы я не нажимала ВПЕРЕД, не находит дату, которая стоит через 5 дней),
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32639366
vl2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А REQUERY() разве выполняется?
Вроде для его работы нужен VIEW, а у Вас простой SQL запрос.
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32640324
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А REQUERY() разве выполняется?
Вроде для его работы нужен VIEW, а у Вас простой SQL запрос.

View создан, и при первом заходе, все нормально, глючит при повторных заходах в Grid при нажатии клавиши.
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32640484
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо создавать PUBLIC-переменные. Если ты действительно "новичек", то можешь поиметь на этом большие проблемы.

В данном случае проверь, что же именно ты записала в переменные xdat и xdat1 в кнопке "ВПЕРЕД"

MESSAGEBOX("xdat="+DTOC(xdat)+chr(13)+"xdat1="+DTOC(xdat1))

И убедись, что в таблице spisok!spisa существуют записи с указанным значением в поле datr

И еще. Поле Spisa.datr какого типа: Date или DateTime? Это имеет принципиальное значение для логики сравнения.

Несколько советов не по существу:

1) "Штатным" способом создания переменных для работы в конкретной форме является создание дополнительных свойств формы (Properties). На этапе проектирования формы (в дезайнере) это пункт главного меню Form->New Property, для редактирования Form->Edit Property/Method

Для View нужны переменные. Но их следует объявляьб локальными и считывать значение из Property формы. Например:

INIT-формы
ThisForm.CurrentDate = DATE()
ThisForm.FromDate = {}
ThisForm.ToDate = DATE(2004,12,31)

LOCAL xdat,xdat1
xdat = ThisForm.FromDate
xdat1 = ThisForm.ToDate
REQUERY("MyView")

Основной проблемой при использовании глобальных переменных является невозможность отследить факт их изменения в других местах программы. Поэтому результат их использования (особенно у новичков) становится просто непредсказуемым. Следует еще помнить, что FoxPro допускает изменять не только значение, но и тип переменной! Т.е. переменная была создана как DATE, но в нее может быть записано значение Integer изменив ее тип.

2) По возможности, создавайте значимые имена переменных и параметров! Это Вы сейчас помните, что такое xdat и чем он отличается от xdat1. Гораздо "нагляднее", если переменные имеют имена вроде:

fromDate - начальная дата
toDate - конечная дата

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

Область видимости:

l - LOCAL
p - PRIVATE
g - PUBLIC (GLOBAL)
t - Parameter

Тип данных - это посмотри в описании к командам вроде CREATE TABLE, например, для типа DATE - это буква "d". Т.е., например, локальную переменную содержащую текущую дату можно назвать:

ldCurrentDate

Здесь первая буква "l" - облатсь видимости LOCAL
вторая буква "d" - тип данных DATE
CurrentDate - "значимое" имя - "Текущая дата"
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32641767
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для View нужны переменные. Но их следует объявляьб локальными и считывать значение из Property формы. Например:

INIT-формы
ThisForm.CurrentDate = DATE()
ThisForm.FromDate = {}
ThisForm.ToDate = DATE(2004,12,31)

Сделала. В ответ Operator/operand type mismatch.
Нигде не могла найти в своей литературе и по поиску на форуме о создании дополнительных свойств формЫ(может там нужно изменить тип).Очень грустно, что так все медленно. А воообще, СПАСИБО за очень хорошие советы.
Владимир М. Говорят, у Вас очень хорошие лекции. Можно их как-нибудь прочитать?
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32641978
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В какой строке "Operator/operand type mismatch" в Initе? Наверное, нужно сбросить Value в окне свойств формы (правая кнопка мыши и Reset to default)
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32642009
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НовичекМДля View нужны переменные. Но их следует объявляьб локальными и считывать значение из Property формы. Например:

INIT-формы
ThisForm.CurrentDate = DATE()
ThisForm.FromDate = {}
ThisForm.ToDate = DATE(2004,12,31)

Сделала. В ответ Operator/operand type mismatch.

Какая версия FoxPro? Если не ошибаюсь, то задавать параметры в функции DATE() можно стало только начиная с VFP6. Тогда задавайте дату явно:

SET DATE TO GERMAN
ThisForm.ToDate = {31-12-2004}

НовичекМНигде не могла найти в своей литературе и по поиску на форуме о создании дополнительных свойств формЫ(может там нужно изменить тип).
Нет. Для FoxPro тип переменной (свойства) в данном случае не имеет значения. Он автоматически примет тип данных, которые в него записываются. Это особенность FoxPro. Так сказать, изменение типа переменных "на лету"

НовичекМОчень грустно, что так все медленно. А воообще, СПАСИБО за очень хорошие советы.
Владимир М. Говорят, у Вас очень хорошие лекции. Можно их как-нибудь прочитать?
Нет. Я лекции не читаю. Написал несколько статей для начинающих. Посмотреть можно здесь:

http://www.foxclub.ru/kb/index.php?sid=79597&aktion=anzeigen&rubrik=004
или здесь
http://www.foxhelp.ru/SovetyNachinajushhim?v=1agr

А лекции читает Владимир Журавлев. Подробности здесь
http://www.foxclub.ru/edu.php/
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32642192
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маленькое замечание по поводу
Код: plaintext
1.
SET DATE TO GERMAN
ThisForm.ToDate = { 31 - 12 - 2004 }
Иногда происходит очень непонятные проблемы - в прстонародии "глюк" - FoxPro не понимает даты, так -как он ее интерпретирует ее в родном Американском формате. Отсюда - используйте вышеупомянутую функцию DATE() или уже не рекомендуемую (но все еще прекрасно работающую функцию):
Код: plaintext
1.
SET DATE TO GERMAN
ThisForm.ToDate = ctod('31.12.2004')

Good luck!
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32643503
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнительных свойств формы (Properties) создала
CurrentDate = DATE()
FromDate =Ctod("")
ToDate = Ctod("31.12.2004")
В Init формы
LOCAL xdat,xdat1
xdat = ThisForm.FromDate
xdat1 = ThisForm.ToDate
REQUERY("MyView")

Здесь выдается ошибка (на REQUERY("MyView"))
Operator/operand type mismatch.
Но в самом View(при этих параметрах) все срабатывает.

Но слова" Наверное, нужно сбросить Value в окне свойств формы (правая кнопка мыши и Reset to default)" дошли не очень. Если можно, чуть подробней.
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32644974
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнительных свойств формы (Properties) создала
CurrentDate = DATE()
FromDate =Ctod("")
ToDate = Ctod("31.12.2004")
В Init формы
LOCAL xdat,xdat1
xdat = ThisForm.FromDate
xdat1 = ThisForm.ToDate
REQUERY("MyView")
Попробовала сбросить Value в окне свойств формы

Здесь выдается ошибка (на REQUERY("MyView"))
Operator/operand type mismatch.

Но в самом View(при этих параметрах) все срабатывает.
Пожалуйста, подскажите!!!!! (Может у кого есть пример или по этой теме что нибудь, что можно переслать по почте Yastreb@frunze.com.ua)???????
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32645160
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри пример в архиве. Просто запусти на исполнение форму Spisa.scx

Пример написан в VFP6SP5
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32645598
НовичекМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
Все получается.
Но у меня еще возникла олна проблема.
У меня есть таблицы .dbf, созданные в Clippere.
И я захотела воспользоваться ими(решила попробовать написать те же программы, только в FoxPro)
Создала базу, и при помощи ADD включила в базу готовые таблицы(это мне так хотелось, чтобы они были здесь).
Но к моему изумлению, оказалось, что хотя я с ними здесь работаю, на самом же деле они у меня в старой папке. т.е. вся корректировка записей идет именно сюда).
Это на самом деле так, или я что-то не так сделала. Или нужно копировать вручную файлы в мой новый проект?
...
Рейтинг: 0 / 0
SQl запросы и Grid
    #32645825
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно.

Когда ты используешь опцию ADD (или любым другим способом включаешь таблицу в базу данных) - это означает всего-лишь взаимное создание ссылок. В базе данных создается ссылка на существующую таблицу, а в таблице соответственно ссылка на базу данных. Но при этом никакого копирования таблицы в новую директорию не происходит.

Тебе надо

-) исключить таблицу из базы данных
-) сделать копию таблицы в той директории, где хранится файл DBC
-) включить в базу данных эту копию
-) очистить базу данных

Вообще, почитай по приведенным мной ссылкам что такое "База данных" в FoxPro. Это совсем не то, что тебе кажется. Это не "база данных" в том смысле, как это понимается в ACCESS или MS SQL.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQl запросы и Grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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