iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
Нашел в сети код определения является ли алиас курсором
Других вариантов нет? P.S. Для повышения вероятности добавил ISEXCLUSIVE. Исправлено 1 раз(а). Последнее : alex;, 14.07.24 13:32 ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
Забавно, после ALTER TABLE становится доступным свойство "Properties" в окне "Data session"
![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Если специально не задаваться целью обмануть эту проверку, то наверно. Но при таких условиях, думаю, хватило бы простой проверки расширения или, на худой конец, добавить ещё и проверку имени. "Процент достоверности" от этого вряд ли бы понизился. Цитата:После этой команды появляется реальный файл для этого курсора. Проверь: ? FILE(DBF())до и после этой команды. Получается, что если структуру курсора не менять, то проверка на файл отличит курсор от таблицы. Не знаю только, во всех ли случаях. Исправлено 2 раз(а). Последнее : akvvohinc, 14.07.24 18:47 ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
SourceName для курсора из SQLEXEC() пустое.
Так что DBF()
Для моей задачи достаточно анализа CURSORGETPROP("SourceType", m.tcAlias) != 3 Исправлено 2 раз(а). Последнее : alex;, 14.07.24 19:44 ![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Может быть. Но все "самые обычные" способы создания курсора (create cursor, select * from ... into cursor) не отличат его от таблицы по SourceType. Я получаю 3 во всех случаях. ![]() |
Re: iscursor | |
---|---|
PaulWist Сообщений: 14740 Дата регистрации: 01.04.2004 |
У курсора всегда расширение tmp, даже если самого файла на диске нет.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Но и таблица может иметь такое же расширение. ![]() |
Re: iscursor | |
---|---|
PaulWist Сообщений: 14740 Дата регистрации: 01.04.2004 |
Может. НО других "железных" свойств нет. Как отличить временный курсор от алиаса таблички? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: iscursor | |
---|---|
sphinx Сообщений: 31888 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
А в заголовке не прочитать нужный байтик? Может и бредовая мысль...
Но даже если и можно - по коду точно не компактнее. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 15.07.24 08:31 ![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Даже если б такой байтик и был, то как выполнить FOPEN() над открытым файлом? ![]() |
Re: iscursor | |
---|---|
sphinx Сообщений: 31888 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Ок
------------------ "Veni, vidi, vici!"(с) ![]() |
Re: iscursor | |
---|---|
sphinx Сообщений: 31888 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Я бы так-то ДО открытия проверял (если есть смысл). А кто хочет при открытом - не знаю, вопрос не ко мне. ![]() ------------------ "Veni, vidi, vici!"(с) ![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Проверять файл курсора до его создания? ![]() ![]() |
Re: iscursor | |
---|---|
Каратаев Сообщений: 4048 Откуда: Алматы Дата регистрации: 04.12.2001 |
Вообще, когда-то очень давно, взял себе за правило: имена всех создаваемых курсоров начинаются с cur_...
Например, таблица adres.dbf, курсор на её основе cur_adres или cur_adr Поэтому нет необходимости как-то ещё проверять это курсор или таблица. Хотя наверное могут быть ещё какие-то ситуации... ------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. ![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:А мне интереснее узнать, в каких ситуациях вообще возникала необходимость в такой проверке - я пока (за 35 лет) с ней не сталкивался. ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
Мне надо было узнать какие алиасы в проекте используют
буферизацию для обновления данных на сервере через TableUpdate(). А потом возник чисто теоретический вопрос. Сам фокс знает где взять инфу о том что алиас это курсор. Наглядно, для таблиц в статусбаре показывается путь, а для курсоров алиас. Вот и подумал, что разработчики фокса могли поделиться этим секретом. Исправлено 2 раз(а). Последнее : alex;, 16.07.24 12:58 ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
Есть в проекте таблица на сервере с мемо по несколько Mb. Она загружается при старте программы. Долго.
Сделал параллельную загрузку, а оказалось что она использует буферизацию. Пришлось добавить SQLEXEC("select ... where 0=1") ,вставить данные полученные из параллельной загрузки и включить буферизацию. Исправлено 2 раз(а). Последнее : alex;, 16.07.24 12:58 ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
Еще глюк словил на этой теме.
Вставил DEFINE CLASS TableLoader ... END DEFINE в середину модуля. В отладчике остановил, запустил поиск определения процедуры, оказалось, что процедура Print1 стала для выполняемой программы методом TableLoader.Print1, хотя была вне контекста. В итоге перенес определение класса в конец модуля. ![]() |
Re: iscursor | |
---|---|
alex; Автор Сообщений: 3378 Откуда: Москва Дата регистрации: 23.11.2004 |
А так не работает.
![]() |
Re: iscursor | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Длина имен полей свободных таблиц - не более 10 символов. То есть в примере выше курсор не может "превратиться в таблицу", и поэтому ALTER TABLE для такого курсора не срабатывает. Может, такое объяснение и не совсем корректно, но то, что "проблема" (разница в поведении) именно в длине имени поля, сомнений не вызывает. ![]() |
© 2000-2025 Fox Club  |