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

Откуда:
Сообщений: 36
Хочу сделать SQL-запрос на MSSQL (select * from ...) с помощью
SQLEXEC(nConnectionHandle, cSQLCommand, [CursorName]).
Перед SQLEXEC делаю MyCursor=createobject("cursor").
Теперь что подставить в SQLEXEC - MyCursor, MyCursor.Name, MyCursor.Alias???
Как обратиться к курсору - sele (MyCursor), sele (MyCursor.Alias)???
Вообще в чем разница между MyCursor.Name и MyCursor.Alias???
Можно конечно в SQLEXEC подставить строку "MyCursor"в качестве [CursorName] и затем сделать sele MyCursor и т.д. ,но возникает проблема с Гридом - после обновления данных. Грид ломается. Написал процедуру, восстанавливающую Грид после обновления данных - все хорошо работает , - НО НЕУЖЕЛИ ВСЕ ТАК СЛОЖНО С КУРСОРОМ И ГРИДОМ?????????? Думаю Грид ломается из-за смены курсора. Вот и хочу сделать постоянный курсор для Грида, а как?
28 мар 04, 13:54    [600903]     Ответить | Цитировать Сообщить модератору
 Re: Курсор и Грид!!! Просьба прояснить ситуацию!!!  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
SQLEXEC(nConnectionHandle, cSQLCommand, [CursorName])

Здесь CursorName - это как-раз alias того курсора, в который попадет результат выборки на стороне FoxPro. Т.е. обращение будет вида:

SQLEXEC(nConnectionHandle, cSQLCommand, "MyCursor")
?MyCursor.MyField

Если имя курсора не указать явно, то FoxPro сам "придумает" ему имя. Скорее всего, это будет что-то вроде "Result" или "Query"

Чтобы Grid не ломался, необходимо перед модификацией источника данных отключить Grid от этого источника:

ThisForm.Grid1.RecordSource=""
SQLEXEC(nConnectionHandle, cSQLCommand, "MyCursor")
ThisForm.Grid1.RecordSource="MyCursor"
ThisForm.Grid1.Column1.ControlSource="MyCursor.Field1"
ThisForm.Grid1.Column2.ControlSource="MyCursor.Field2"
...
29 мар 04, 10:02    [601299]     Ответить | Цитировать Сообщить модератору
 Re: Курсор и Грид!!! Просьба прояснить ситуацию!!!  [new]
chel99
Member

Откуда:
Сообщений: 36
Я понял, что до SQLEXEC и после SQLEXEC - Grid ссылается на совершенно разные курсоры - хотя с одним и тем же именем. Курсор до SQLEXEC разрушается, и после SQLEXEC создается новый курсор (но с тем-же именем). В этом причина необходимости делать
ThisForm.Grid1.RecordSource="" и затем
ThisForm.Grid1.RecordSource="MyCursor"

Получается вообще свойства курсора Alias,Name никак не применяются. Берется строка varMyCursor="MyCursor" или даже MyCursor="ARF2TTFsdsd6783"
и работаешь с именем этой строки. Где там сам объект-курсор, какое у него Name, Alias - это никого не волнует и никому не надо. Главное делай вовремя
ThisForm.Grid1.RecordSource="" и затем
ThisForm.Grid1.RecordSource=MyCursor
и все будет Окей.
29 мар 04, 11:07    [601453]     Ответить | Цитировать Сообщить модератору
 Re: Курсор и Грид!!! Просьба прояснить ситуацию!!!  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Почитай здесь

http://www.foxclub.ru/kb/index.php?sid=24056&aktion=artikel&rubrik=001&id=6&lang=ru#Cursor

Что в FoxPro понимается под термином "Курсор"
29 мар 04, 12:08    [601586]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить