Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2013, 00:16   #1
woodywood
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 2
По умолчанию TpFibDataset не возвращает поля типа integer

Доброго времени суток

Delphi XE 3
FireBird 2.5
FibPlus 7.4

Есть компонент OrderDatSet:TpFibDataSet, в теле SQL Generator записан запрос
Код:
SELECT ord.info_id AS "Info_id", //integer внешний ключ на таблицу Stat_info
sti.sinfo_name AS "Statinfo",//varchar
ord.periodicity AS "Period" //blob subtype -1
 FROM orders ord
 LEFT OUTER JOIN stat_info sti
 ON sti.si_id=ord.info_id
 WHERE ord.dep_id=:dep
Передаю значение параметра dep, запускаю транзакцию, открываю OrderDataSet

Код:
 OrderDataSet.ParamByName('dep').AsInteger:=1;
if OrderTransaction.Active=False then OrderTransaction.StartTransaction;
OrderDataSet.Open;
//OrderDataSet.Active:=True;
i:=0;
//mas:array of integer
  while not OrderDataSet.EOF do begin
          SetLength(mas,i+1);
          mas[i]:=OrderDataSet.FieldByName('Info_id').AsInteger; 
          tmp_str:=OrderDataSet.FieldByName('Statinfo').AsString;

          OrderDataSet.Next;
                                             end;
И вот в чём трабл OrderDataSet почему-то не передаёт значения поля Info_id (значение 0, а его там быть не может при dep=1), да и вообще любого integer,numeric,decimal
строковые поля таблицы передаёт отлично

Если вместо TpFibDataSet использовать (с таким же текстом запроса и параметром) TpFibQuery - все поля передються.......

а хочется, чтобы и датасет так же работал (по сути датасет - это набор квери, плюс записыват данные в кеш и имеет ещё много полезных свойств)
может быть в датасете нужно в Options или PrepareOptions или где-нибудь ещё установть какое-то свойство

если кто-то с этим сталкивался, помогите плиз
Спасибо

Последний раз редактировалось woodywood; 30.08.2013 в 00:19.
woodywood вне форума Ответить с цитированием
Старый 30.08.2013, 09:26   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

никогда ничего подобного не возникало.
смотри настройки своего DataSet.
и запрос можно чуток упростить до
Код:
SELECT ord.info_id info_id, sti.sinfo_name statinfo, ord.periodicity Period
FROM orders ord
  LEFT JOIN stat_info sti ON sti.si_id=ord.info_id
WHERE ord.dep_id = :dep
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 30.08.2013, 11:02   #3
woodywood
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 2
По умолчанию

Да, действительно
Я проверил это на другом проекте..всё работает нормально
Наверное я что-то намудрил с настройками датасета или с транзакциями
В любом случае спасибо за ответ
woodywood вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать из числа типа real число типа integer? gylayko Помощь студентам 6 15.09.2012 11:41
Ошибка чтения из файла в переменную типа integer Max1548 Общие вопросы Delphi 2 12.10.2011 12:34
к переменной типа integer присвоить переменную string Kigmatig Помощь студентам 7 29.01.2010 21:55
Перевод поля типа Character в тип Integer [Delphi] Pinkygirl Помощь студентам 2 22.10.2009 21:54
Возможна ли запись типа integer[5]? k1r1ch Общие вопросы Delphi 6 01.10.2009 14:30