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

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

Спасибо.
...
Рейтинг: 0 / 0
Работа с курсорами
    #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
Работа с курсорами
    #32288453
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Newb
Подобный код используется для того чтобы добавить данные в курсор1 на случай если кугсор2 не совпадает по структуре. В вашем случае один из вариантов предложил vklepko.
Для VFP7 и старше можно так
select * from cursor2 into cursor2 readwrite
...
Рейтинг: 0 / 0
Работа с курсорами
    #32289858
Nikolai Kremko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем так. В первом случае создается DBF файл на диске с именем cursor2
А в вашем случае
>>select * from cursor2 into cursor2 readwrite
в каталоге для временных файлов , будет создан временный файл с именем которойе можно узнать по DBF('Cursor2') и при его закрытии он будет удален
...
Рейтинг: 0 / 0
Работа с курсорами
    #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
Работа с курсорами
    #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
Работа с курсорами
    #32291066
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Mik Prokoshin
? DBF('AA')
Вообще-то у Владимира М было ?FILE(DBF('test')).
Слушайте Crip, он - авторитет :-)
В фоксе авторитет Владимира М повыше будет. Мне лично неизвестен более опытный фокс-программист чем Владимир М и спорить с ним в таких вопросах довольно сложно...
...
Рейтинг: 0 / 0
Работа с курсорами
    #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
Работа с курсорами
    #32291566
Nikolai Kremko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Работа с курсорами
    #32291631
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, что и я поторопился. Я конечно же подразумевал FPD, поскольку с FPW вплотную не работал, а под ДОС это работает - 100%. Но судя по вопросу Newb - это именно FPD :-)
Владимир, мои извинения. Каждый в чем-то прав :-)

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


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