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

Откуда:
Сообщений: 178
Всем добрый день!
Столкнулся со следующей проблемой:
Сразу скажу что работаю с dbf таблицами через Delphi при помощи провайдера Microsoft OLE DB Provider for Visual FoxPro. Опубликовал тему не на форуме Delphi, так как проблема именно касается Fox'а.
Я выполняю импорт данных из dbf файла в mdb.
Обрабатывается большой объём даных по циклу, где для проверки даных
производятся запросы к различным dbf - таблицам. При выполнении запросов используются хранимые процедуры, описанные в файле dbc., ниже представлен код одной из процедур (их код аналогичен, меняется только название таблицы к которой адресован запрос):

PROCEDURE GetDeloN
PARAM M.ND
LOCAL lcAliasName
SET EXCLUSIVE OFF
lcAliasName = 'a' + SYS(2015)
USE DELO IN 0 AGAIN SHARED ALIAS (lcAliasName)
SELE (lcAliasName)
SET INDEX TO IDELO.CDX
SET ORDER TO TAG NOM
SELECT * FROM (lcAliasName) WHERE (NOM=M.ND) INTO CURSOR TmpDbf NOFILTER
SELE (lcAliasName)
USE
RETURN

И в какойто момент времени у меня возникает ошибка: Alias (имя Алиаса) is not found.
С чем это может быть связано, может быть в ХП чтото неверно написано?
2 мар 05, 12:47    [1355672]     Ответить | Цитировать Сообщить модератору
 Re: Алиас не найден ...  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
пробуй пользовать lcAliasName='qTempAlias'. Фс:Е равно закрываешь таблицу, а альсяс чере (2015) какое-нить имя неправильное может сотворить
2 мар 05, 14:41    [1356390]     Ответить | Цитировать Сообщить модератору
 Re: Алиас не найден ...  [new]
Dionnis
Member

Откуда:
Сообщений: 178
Hel!Riser
пробуй пользовать lcAliasName='qTempAlias'. Фс:Е равно закрываешь таблицу, а альсяс чере (2015) какое-нить имя неправильное может сотворить


Да похоже Вы правы, функция SYS(2015) похоже генерит какието значения, которые не всегда подходят для имени алиаса... Спасибо!
2 мар 05, 18:08    [1357616]     Ответить | Цитировать Сообщить модератору
 Re: Алиас не найден ...  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Функция SYS(2015) не всегда генерит уникальные значения. А значение типа

lcAliasName = 'a' + SYS(2015)

Всегда будет синтаксически корректно. Но вот насчет уникальности - сомнительно.

Хотя, если ты написал код полностью, то собщение об ошибке вызывает недоумение. Алиас не найден, означает в данном случае, что таблица не открылась. Но тогда почему не выскочило сообщение об ошибке на команде USE? Т.е. в момент открытия?

PS:

Если приведенный код такой и есть. Без сокращений. То, как минимум, он сильно избыточный. Все то, что написано можно реализовать так:

PROCEDURE GetDeloN
PARAMETERS tnND
LOCAL llUsed
llUsed = USED("Delo")
SELECT * FROM Delo WHERE delo.Nom = m.tnND INTO CURSOR tmpDbf NOFILTER
IF m.llUsed = .F. 
	USE IN SELECT("Delo")
ENDIF
RETURN
2 мар 05, 22:52    [1358111]     Ответить | Цитировать Сообщить модератору
 Re: Алиас не найден ...  [new]
Dionnis
Member

Откуда:
Сообщений: 178
ВладимирМ

Спасибо большое за советы!!!
3 мар 05, 16:19    [1360702]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить