Прямой SQL + iExtAttr .. как то плохо работает ...

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Прямой SQL + iExtAttr .. как то плохо работает ...

Сообщение Masygreen »

итак .. есть запрос прямой sql - ну ессно цыкл по нему ..
в цыкле собираем nRec Katsopr и записываем в времянку ...
тут же хотим получить внешний атрибут к акту - встроенной функцией

Код: Выделить всё

  

var KatSopr_nRec:comp;

sqlBindCol(stmt, 6, KatSopr_nRec);
While(sqlFetch(stmt) = TsOk) 
  { 
     _dTransfer:=piExAttr.dGetAttr(coKatSopr,KatSopr_nRec,'Дата акта');

     TempData01._nRecKatSopr:=KatSopr_nRec;
     TempData01._dTransfer:=_dTransfer;
     insert current TempData01;
     update current TempData01;
   }
в итоге получаю случайное заполнение внешнего атрибута ... т.е. для 95% строк функция dGetAttr возвращает пустую дату ..

ели поворотно пройтись по временной таблице все будет ОК. где я ошибся?? или нельзя работать с прямым Sql совместно с функциями галактики??

Код: Выделить всё

_loop TempData01
 {
_dTransfer:=piExAttr.dGetAttr(coKatSopr,TempData01._nRecKatSopr,'Дата акта');
TempData01._dTransfer:=_dTransfer;
update current TempData01;
 }
Время ведет!
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Натыкался тоже на подобную проблему, тока внутри While&sqlFetch просто пытался сделать getfirst на другую таблу. В результате получалась ерунда какая то.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

тоже результат :) значить это системный косяк => будем пост обработкой херачить :(
Время ведет!
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

А что мешает в самом прямом SQL сразу вытянуть внешний атрибут? Для того он и есть прямой SQL, чтобы все сразу одним ударом.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

надо получить много внешних атрибутов - проще было функцией - к тому же она по времени равна прямоскуэльной т.к. там все по индексами в отношении 1:1...
но возможно переделаю ....
Время ведет!
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

Мы для себя нарисовали функцию возвращающую значение атрибута по номеру таблицы, nrec и названию атрибута. Для прямого SQL самый смак.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

На платформе MSSQL , по-моему, во время работы с DSQL нельзя обращаться к базе данных обычными getFirst - ами, и getNext - ами, если в лог глянуть, там так в такой момент пишется что-то вроде : "Подключение занято до получения результатов для другого hstmt" Получается, запрос на DSQL как-то блокирует доступ к базе. Но при этом можно спокойно обращаться к временным таблицам.
Ответить