Прямой SQL

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

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

win
Новичок
Сообщения: 26
Зарегистрирован: 24 ноя 2010, 13:10

Re: Прямой SQL

Сообщение win »

Vik писал(а):Если у вас параметр №1 константа, сделайте так:

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

sqlAddStr(str_handle, '''user'' = UserDeskRep.ownname ');
И так тоже пробовал, всегда результат "пусто".
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Прямой SQL

Сообщение Den »

Вроде должно фурычить..а в ms70|ora лог ничего не кидает ? Ну в крайнем случае профайлером посмотреть можно что на сервер приходит в запросе.
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

Столкнулся с такой ситуацией. Таблица Pick заполняется после вызова RunInterface(L_KatOrg::GetSomeKontr,false); неким количеством записей. При просмотре ее в Саппорте кол-во записей абсолютно верное. Но при просмотре ее MS Server Management Studio кол-во абсолютно другое (в сотни или даже тысячи раз больше). Естественно, прямой SQL-запрос выдает мне полную чепуху. Приходится делать вторую выборку в CREATE VIEW. Но проблема в том, что запрос не постоянный, а может меняться в зависимости от некоторых условий. А 2 вьюхи, как я понимаю сделать в одном интерфейсе нереально. Пришлось разбивать на 2 интерфейса, что не есть красиво.
Так вот вопрос. Может кто сталкивался с таким недоразумением в Pick?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Прямой SQL

Сообщение edward_K »

Database.UserTableLocalCache=On у вас, ну либо вы забываете отфильтровать по пользователю, а в сапорте вы видите только свои записи.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Прямой SQL

Сообщение BlazeBio »

Yuri писал(а):Столкнулся с такой ситуацией. Таблица Pick заполняется после вызова RunInterface(L_KatOrg::GetSomeKontr,false); неким количеством записей. При просмотре ее в Саппорте кол-во записей абсолютно верное. Но при просмотре ее MS Server Management Studio кол-во абсолютно другое (в сотни или даже тысячи раз больше). Естественно, прямой SQL-запрос выдает мне полную чепуху. Приходится делать вторую выборку в CREATE VIEW. Но проблема в том, что запрос не постоянный, а может меняться в зависимости от некоторых условий. А 2 вьюхи, как я понимаю сделать в одном интерфейсе нереально. Пришлось разбивать на 2 интерфейса, что не есть красиво.
Так вот вопрос. Может кто сталкивался с таким недоразумением в Pick?
Почему нереально? :-)
Главная вьюха:

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

create view
as select
  *
from
  Pick
;
Второстепенная именнованая вьюха:

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

create view two
as select
  *
from
  Pick
;
Можно и 3-ю :)

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

create view three
as select
  *
from
  Pick
;
Обращения к таблицам из вьюх такое

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

if tsOk=getfirst Pick where(())
{}
if tsOk=two.getfirst Pick where(())
{}
if tsOk=three.getfirst Pick where(())
{}
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

Спасибо, но вопрос немного не о том был. А о несовпадении данных в таблице Pick.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Прямой SQL

Сообщение galover »

Насколько помню по курсам, Pick особая таблица. Т.е. она содержит данные для текущего пользователя и обрабатывается индивидуально. Вот тут http://tyumbit.ru/gal_forum/viewtopic.php?f=2&t=228 еще немного про Pick.
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

galover писал(а):Насколько помню по курсам, Pick особая таблица. Т.е. она содержит данные для текущего пользователя и обрабатывается индивидуально. Вот тут http://tyumbit.ru/gal_forum/viewtopic.php?f=2&t=228 еще немного про Pick.
А есть ли у меня возможность обратиться к полю Sys#UNRec в этой таблице в прямом запросе. Ибо как только я впихиваю или Pick.Sys#UNRec или Pick.UNRec
результат запроса - ошибка 311.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Прямой SQL

Сообщение galover »

Просто Pick.nRec не прокатывает?
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

galover писал(а):Просто Pick.nRec не прокатывает?
А эти поля идентичны?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Прямой SQL

Сообщение galover »

вообще не вкурил тогда что за Sys#UNRec. Вот описание Pick

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

Create Table User.Pick "Выбранные элементы ВИПа"
  Using "PICK.tmp"
  #ifdef ComponentVersion
  Component C_Common
  #end
  With Table_CODE = 1405
  With Replace
(
  NRec     : tNRec    "Номер записи"
, LastDate : Date     "LASTDATE"                             // // используется в L_MakeDO
, FilialNo : Longint  "FILIALNO"
, cRec     : tNRec    "номер элемента в выбираемой таблице"
, wList    : Word     "код списка (таблицы)"
, PickKol  : tSumma   "выбранное количество"
, PickNum  : Word     "порядок выбора"
)
With Index
(
  Pick01  =  wList + cRec
, Pick02  =  wList + PickNum   // для поддержания порядка выбора
);
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

Через MS Management Studio четко видны в таблице еще 2 поля
Изображение
И вот именно в первом поле хранится UserID.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Прямой SQL

Сообщение galover »

А, ну так такие служебные поля в любой таблице есть, они обычно с индексами связаны. Их в описании словаря нет, по ним DSQL работать не будет
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Re: Прямой SQL

Сообщение Yuri »

galover писал(а):А, ну так такие служебные поля в любой таблице есть, они обычно с индексами связаны. Их в описании словаря нет, по ним DSQL работать не будет
Грустно. Но все равно спасибо )
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Прямой SQL

Сообщение Den »

C пиком да..не все так просто
Самое надежное будет тут ловить его значения выбранные непосредствено в vip и собирать в цикле dsql запрос к скуль-cерверу,отдавая в цикле значение пика в качестве параметра, ну и выполнять потом.
Зато гарантированно словишь записи пика для текущего пользователя.
Ответить