Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавить поле в курсор, и заполнить 
V
    Опции темы
Artiom
Дата 16.6.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: 3
Всего: 17



такая ситуация: я считываю некоторые данные через ODBC в курсор, на основании этих данных надо сформировать еще одно поле в курсоре. 
Если я создаю курсор "на лету"
Код

sqlexec(handle, sql_str, 'mycursor')
ALTER TABLE MYCURSOR ADD COLUMN gr C(5)

FoxPro ругается на команду ALTER TABLE (я так понимаю недоступна для курсора).
А если я заранее создаю курсор командой CREATE CURSOR с "лишним" полем и загружаю туда результат запроса. то это поле просто исчезает из структуры.
Сейчас я пробую стянуть из исходных таблиц ненужное поле и приспособить под свои нужды, но если бы такой такой возможности не было - как лучше решать такую проблему? 


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
Artiom
Дата 16.6.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: 3
Всего: 17



а можно ли вообще писать в курсор заполняемый SQLEXEC()? что-то не отрабатывает такой од
Код

sql_kod = SQLEXEC(handle,sql_stat,"mycursor") 
*DISPLAY STRUCTURE

SCAN
    DO CASE
    CASE INLIST(field1, 11,12,15, 21,14)
        gr = 0    
    CASE INLIST(field2,2, 3)
        gr = 1
    OTHERWISE 
        gr = 2
    ENDCASE 
    * gr - поле в курсоре
ENDSCAN 

 


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
Cashey
Дата 16.6.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Artiom, мой тебе совет не лезть в эти дебри  smile Работа с удаленными данными это довольно сложная тема. Если уж очень требуется, то юзай класс cursoradapter (доступен с 8-й версии Фокса), только сразу не вешайся. я сам в нем не разобрался до конца smile
По САБЖу, ALTER TABLE с курсорами нормально работает, но ф-ция sqlexec() создает курсор доступный только для чтения. Есть обходные варианты: скопировать курсор в таблицу командой COPY TO и спокойно с ней работать. Или вытащить данные запросом типа:
Код

select * from mycursor into cursor mycursor1 readwrite

Но лучше всего изменить запрос и в нем добавить пустое поле:
Код

sql_str = 'SELECT *, "     " as gr FROM test_table')


Добавлено @ 11:36 
Artiom, запись в таблицу или в курсор осуществляется по средствам команды replace 
Код

sql_kod = SQLEXEC(handle,sql_stat,"mycursor") 
*DISPLAY STRUCTURE
SCAN
    DO CASE
    CASE INLIST(field1, 11,12,15, 21,14)
        replace gr with 0    
    CASE INLIST(field2,2, 3)
       replace gr with 1
    OTHERWISE 
         replace gr with 2
    ENDCASE 
    * gr - поле в курсоре
ENDSCAN 

Но повторяю, этот курсор, созданный SQLEXEC, доступен только для чтения 

Это сообщение отредактировал(а) Cashey - 16.6.2006, 11:38


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.