Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 View при участии другой View  [new]
Роман Новичек
Member

Откуда:
Сообщений: 219
Привет всем!
VFP 8.0
Создается база данных:
CREATE DATABASE data1
в ней Local View на свободные таблицы с параметром:
CREATE SQL VIEW nkl AS select * from table1 where num=?nNum
Настраиваю с помощью DBSetProp
Создаю еще одну LV:
CREATE SQL VIEW nkl2 AS SELECT table2.* From table2 Right join data1!nkl ;
on table2.kod=nkl.kod where table2.pol=?nPol
Так вот при выполнении последнего Create он просит ввод параметра для LV nkl
Вопрос1: как сделать так, чтобы он не просил параметр?

После того как я не нашел ответ на 1-й вопрос, я решил выполнить все раздельно
Сперва создается база, потом LV nkl, потом nNum=300, потом USE nkl IN 0,
потом спустя некоторое время (после различных операций) Create LV nkl2, а вот потом когда я хочу сделать настройки с помощью DBSetProp (DBSetProp(nkl2,"View","SendUpdates",.T.)) у меня вылазит ошибка, что переменная nkl2 не найдена.
Вопрос2: где я накосячил? Почему не найдена если все условия вроде бы выполнил (nkl открыта, значит Join должен сработать, а параметр nPol пока не нужен, т.к. я только создаю)
Заранее спасибо.
18 окт 05, 16:43    [1980458]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
DBSETPROP("nkl","VIEW"...)
18 окт 05, 16:53    [1980551]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
Роман Новичек
Member

Откуда:
Сообщений: 219
Честно говоря не совсем понял. Если про то, настраивал ли я nkl, то да.
Извеняюсь, сегодня пока ответить на вопрос или посмотреть ответы не смогу, потому что уезжаю на объект. Продолжу завтра.
18 окт 05, 16:59    [1980592]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Роман Новичек
Так вот при выполнении последнего Create он просит ввод параметра для LV nkl
Вопрос1: как сделать так, чтобы он не просил параметр?

Правильно просит.

Дело в том, что Local View - это не есть таблица. По сути - это запрос. Команда Select-SQL. Т.е. прежде, чем обратиться к результату выполнения этого запроса его собственно надо выполнить.

То, что он просит указать параметр на этапе создания - не страшно. Ему собственно нужен не сам параметр, а структура. Можешь в командном окне просто сделать присвоение:

nNum = 300

Поскольку переменная, созданная в командном окне имеет область видимости PUBLIC, то эта переменная будет "видна" на этапе проектирования Local View.

Роман Новичек
После того как я не нашел ответ на 1-й вопрос, я решил выполнить все раздельно
Сперва создается база, потом LV nkl, потом nNum=300, потом USE nkl IN 0,
потом спустя некоторое время (после различных операций) Create LV nkl2,

Правильно мыслишь. По другому не получится. Хотя не вижу особого смысла делать Local View динамически. Но это уж тебе виднее...

Роман Новичек
а вот потом когда я хочу сделать настройки с помощью DBSetProp (DBSetProp(nkl2,"View","SendUpdates",.T.)) у меня вылазит ошибка, что переменная nkl2 не найдена.
Вопрос2: где я накосячил? Почему не найдена если все условия вроде бы выполнил


Ну, так AleksMed тебе намекнул, что имя Local View надо взять в кавычки.

DBSetProp("nkl2","View","SendUpdates",.T.)

В том синтаксисе, что ты пишешь, FoxPro предполагает, что имя View, для которого надо произвести изменения настройки находится внутри переменной памяти m.nkl2. Пытается найти такую переменную, не находит и сообщает тебе об этом.
18 окт 05, 18:46    [1981301]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
Роман Новичек
Member

Откуда:
Сообщений: 219
Спасибо огромное. Вот так всегда, из за какой-то мелочи крупные проблемы :))
19 окт 05, 09:16    [1982178]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
Роман Новичек
Member

Откуда:
Сообщений: 219
Еще один вопросик. Если View находится в установке Buffering=5 и пуста после добавления в нее записей и до TableUpdate можно ли получить из нее данные Select-ом? Просто мне надо выбрать те позиции из таблицы остатков, которые находятся в View, чтобы не тащить всю таблицу. И не хочется делать это после TableUpdate. Если нет, то буду думать другой способ. (хотя я думаю другого, как тощить все позиции из таблицы остатков, способа нет)
19 окт 05, 10:54    [1982585]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Роман Новичек
Еще один вопросик. Если View находится в установке Buffering=5 и пуста после добавления в нее записей и до TableUpdate можно ли получить из нее данные Select-ом?

Если версия FoxPro младше 9, то нельзя.

Роман Новичек
Просто мне надо выбрать те позиции из таблицы остатков, которые находятся в View, чтобы не тащить всю таблицу.

Как правило, общее количество записей в Local View относительно невелико. В противном случае просто нет смысла делать такое View. Это значит, что прямое сканирование через SCAN...ENDSCAN не займет много времени.

Можно также использовать команду

COPY TO или COPY TO ARRAY

Эти команды будут копировать в том числе и содержимое буфера.
19 окт 05, 11:33    [1982779]     Ответить | Цитировать Сообщить модератору
 Re: View при участии другой View  [new]
Роман Новичек
Member

Откуда:
Сообщений: 219
спасибо, будем использовать Scan ... EndScan
19 окт 05, 11:36    [1982804]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить