powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Теряется свойство Autoinc
10 сообщений из 10, страница 1 из 1
Теряется свойство Autoinc
    #39967031
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю

Select * from table1 into cursor _v1

и наблюдаю, что у поля autoinc это свойство при вновь загруженном foxe переносится в курсор, а после работы программы перестает переносится. Может кто сталкивался с этим? Что может влиять на работу Select?
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967066
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,
Ничего не понятно, куда у тебя что переносится или не переносится? какой тип у твоего поля с autoinc ? и какое имя у поля?
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967067
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
glamis,
Ничего не понятно, куда у тебя что переносится или не переносится? какой тип у твоего поля с autoinc ? и какое имя у поля?

autoinc по определению только Int
Но вопрос совершенно не понятен.
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967108
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не переносится автоинкремент в курсор
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create Table t1 free (id int autoinc, text c(10))
insert into t1 (text) values ('aaa')
insert into t1 (text) values ('bbb')
insert into t1 (text) values ('ccc')

select * from t1 into cursor c1 readwrite
insert into c1 (text) values ('ddd')
brow
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967143
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Не переносится автоинкремент в курсор
Угу. Но топикстартер видимо не знает про некоторые способности фокса и потому принимает побочные эффекты за перенос свойств.
Команда SELECT SQL не всегда делает настоящую выборку в отдельный временный файл. Иногда просто накладывается фильтр на исходную таблицу и показывается как курсор. Потому такой курсор не всегда "писабельный", то есть обновляемый, но зато с "переносом" свойств. И для отмены такого поведения есть кляузы ReadWrite и NoFolter. При якобы переносе свойств результаты функции dbf() для исходной таблицы и курсора будут совпадать.
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967163
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov,

В обоих случаях использовалась одна и та же таблица, такой же точно Select. в таблице содержалось поле uid I autoinc.

1-й случай: просто открытый fox.
Use table1
Select * from table1 into cursor _v1

2-й случай: внутри работающего кода
Use table1
Select * from table1 into cursor _v1

В первом случае поле _v1.uid имеет тип I autoinc, во 2-м _v1.uid имеет тип I.
Вопрос в том, как понять - какие установки могут влиять на работу Selecta.
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967172
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis
Sergey Sizov,

В обоих случаях использовалась одна и та же таблица, такой же точно Select.
Кто бы мог подумать![/quot] в таблице содержалось поле uid I autoinc.

1-й случай: просто открытый fox.
Use table1
Select * from table1 into cursor _v1
[/quot]
А теперь
?dbf()
disp stat
2-й случай: внутри работающего кода
Use table1
Select * from table1 into cursor _v1

И тут
?dbf()
disp stat
И сравниваем.[/quot]
В первом случае поле _v1.uid имеет тип I autoinc, во 2-м _v1.uid имеет тип I.
Вопрос в том, как понять - какие установки могут влиять на работу Selecta.[/quot]Те, которые описаны в хелпе. И которые в неизвестных нам местах и количествах использовал в программе.
Тебе что надо-то? Чтоб "передавалось" или нет?
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967196
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей уже ответил, но, вероятно, не очень понятно

Код: sql
1.
Select * from table1 into cursor _v1



Вопрос в том, что из себя физически представляет вот этот самый итоговый курсор _v1?

У FoxPro есть такая "фича", что при определенных условиях этот курсор _v1 не является новой временной таблицей. А является той же самой таблицей table1, просто открытой в другой рабочей области

Ну, а раз таблица та же самая, то и свойства полей те же самые. В частности, и автоинкрементные поля

Тут следует заметить, что работа с такими "курсорам" в дальнейшем будет затруднена. Поэтому, как правило, стараются исключить подобное переоткрытие и заставить сделать выборку в новую временную таблицу. Для этого используют дополнительную опцию NOFILTER (или READWRITE)


Код: sql
1.
Select * from table1 into cursor _v1 NOFILTER



или так

Код: sql
1.
Select * from table1 into cursor _v1 READWRITE



В обоих случаях будет создана новая временная таблица _v1 в которую скопируют данные из исходной таблицы table1. Ну, а раз таблица новая, то и структура полей новая. И автоинкремента в этой новой таблице не будет, поскольку в запросе не указано, что его надо сделать

Проверить, чем же физически является курсор _v1 можно при помощи функции dbf(). Эта функция вернет имя таблицы, которая физически содержит отображаемые в этом курсоре данные

Код: sql
1.
2.
Select * from table1 into cursor _v1 NOFILTER
?dbf("_v1")



Для временных таблиц там будет имя из цифр и расширение "tmp". А вот если там будет "table1.dbf", то значит и произошло переоткрытие исходной таблицы в другой рабочей области
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967235
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, не знал что "select into cursor" может просто переоткрыть таблицу, я полагал что всегда будет создаваться некая новая область данных и она никак не будет связанная с источником, понимею когда пишут use и там бла-бла, тут можно играться с одной и той же рабочей областью, но чтобы select into cursor создавал некую связь, странно...
...
Рейтинг: 0 / 0
Теряется свойство Autoinc
    #39967299
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопрос скорости. Скорости отображения результата. Фича тянется со времен FoxBase, когда старались выиграть каждую миллисекунду. Переоткрыть таблицу существенно быстрее, чем создавать новую таблицу и копировать в нее записи.

По современной идеологии программирования - оно того не стоит. Сопутствующие проблемы и ограничения перевешивают выигрыш в скорости открытия. Но 30 лет назад логика была другая...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Теряется свойство Autoinc
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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