Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с курсорами / 10 сообщений из 10, страница 1 из 1
09.10.2003, 01:09
    #32288267
Newb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
Ставить Фокса ради трех строчек кода не хочется.
Может быть кто-то подскажет. Вот код.
Код: plaintext
1.
2.
3.
SELECT cursor1
APPEND FROM (DBF('cursor2'))
USE IN cursor2

Курсор cursor1 только что создан несколькими строками ранее и пуст, cursor2 создан и заполнен.
Правильно ли я понял что мы просто переписываем данные из cursor2 в cursor1?
Если да, то зачем такая сложная конструкция, почему бы не воспользоваться простым селектом?

Спасибо.
...
Рейтинг: 0 / 0
09.10.2003, 02:13
    #32288275
vklepko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
Курсор, полученный в результате VFP select-а, -READ ONLY.
"cursor1", созданный через CREATE CURSOR ..., создаст иллюзию модификации данных.

Для той же цели может подойти(если типы полей в курсорах должны совпадать)
Код: plaintext
1.
2.
use (dbf( "cursor2" )) in  0  again alias  "cursor1" 
use in  "cursor2" 
select  "cursor1" 
...
Рейтинг: 0 / 0
09.10.2003, 10:14
    #32288453
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
2Newb
Подобный код используется для того чтобы добавить данные в курсор1 на случай если кугсор2 не совпадает по структуре. В вашем случае один из вариантов предложил vklepko.
Для VFP7 и старше можно так
select * from cursor2 into cursor2 readwrite
...
Рейтинг: 0 / 0
10.10.2003, 13:02
    #32289858
Nikolai Kremko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
не совсем так. В первом случае создается DBF файл на диске с именем cursor2
А в вашем случае
>>select * from cursor2 into cursor2 readwrite
в каталоге для временных файлов , будет создан временный файл с именем которойе можно узнать по DBF('Cursor2') и при его закрытии он будет удален
...
Рейтинг: 0 / 0
10.10.2003, 14:14
    #32290002
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
Николай. С этого места поподробнее. О каком DBF ты говоришь?

CREATE CURSOR test (test i)
?DBF('test')

Более того
?FILE(DBF('test'))

Вернет .F.

Т.е. что по команде CREATE CURSOR, что по команде SELECT ... INTO CURSOR ... будет создана одна и та же структура, именуемая в FoxPro "курсор". И ничем не отличающиеся друг от друга. Разве что по-умолчанию, курсор созданный командой Select-SQL имеет статус Read-Only, но это можно и изменить как уже показали.
...
Рейтинг: 0 / 0
13.10.2003, 11:01
    #32291012
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
2 ВладимирМ:
На Fox <=2.6
CREATE CURSOR aa (a C(1))
? DBF('AA')
вернет
C:\23443243.tmp
(условно), но никак не .F. На более поздних версиях Fox (у Вас явно оно) - не знаю.

2 NewB:
Слушайте Crip, он - авторитет :-)
...
Рейтинг: 0 / 0
13.10.2003, 12:02
    #32291066
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
2Mik Prokoshin
? DBF('AA')
Вообще-то у Владимира М было ?FILE(DBF('test')).
Слушайте Crip, он - авторитет :-)
В фоксе авторитет Владимира М повыше будет. Мне лично неизвестен более опытный фокс-программист чем Владимир М и спорить с ним в таких вопросах довольно сложно...
...
Рейтинг: 0 / 0
13.10.2003, 15:27
    #32291386
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
Хе-хе, ребята, там где надо говорить про базовые фичи FoxPro я готов отстаивать свои десять лет опыта :-)

У Владимира М :
1) Присутствует тип I, которого в старых версиях нет. Заменяем на любой другой:
CREATE CURSOR test (test N(10))
2) ? DBF('test') возвращает full-qualified temporary filename (DBF file format, расширение TMP). Отмечу, что на старых версиях Фокс функция DBF('') в отдельных случаях (bug/feature ?) был регистрозависимым, т.е. мог гарантированно работать только при Uppercase (рекомендовал бы DBF('TEST'))
3) ? FILE(DBF('TEST')) = .F. - это даже смешно. А как насчет предварительно SET COMPATIBILITY ON ? Без него путь не учитывается.
Так что Владимир просто поторопился, скорее всего, с кем не бывает.

2 Newb:
А прием этот совершенно стандартный, используется для того, о чем сказал Crip. Причем в довершение скажу, что иначе сделать APPEND FROM курсора в таблицу - невозможно. А SELECT ... readwrite раньше не было, что очень осложняло жизнь :-)
...
Рейтинг: 0 / 0
13.10.2003, 16:39
    #32291566
Nikolai Kremko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
...
Рейтинг: 0 / 0
13.10.2003, 17:04
    #32291631
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с курсорами
Возможно, что и я поторопился. Я конечно же подразумевал FPD, поскольку с FPW вплотную не работал, а под ДОС это работает - 100%. Но судя по вопросу Newb - это именно FPD :-)
Владимир, мои извинения. Каждый в чем-то прав :-)

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


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