Страница 3 из 19

Re: Прямой SQL

Добавлено: 02 мар 2011, 12:41
win
Vik писал(а):Если у вас параметр №1 константа, сделайте так:

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

sqlAddStr(str_handle, '''user'' = UserDeskRep.ownname ');
И так тоже пробовал, всегда результат "пусто".

Re: Прямой SQL

Добавлено: 02 мар 2011, 13:18
Den
Вроде должно фурычить..а в ms70|ora лог ничего не кидает ? Ну в крайнем случае профайлером посмотреть можно что на сервер приходит в запросе.

Re: Прямой SQL

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

Re: Прямой SQL

Добавлено: 10 мар 2011, 11:25
edward_K
Database.UserTableLocalCache=On у вас, ну либо вы забываете отфильтровать по пользователю, а в сапорте вы видите только свои записи.

Re: Прямой SQL

Добавлено: 10 мар 2011, 11:29
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(())
{}

Re: Прямой SQL

Добавлено: 10 мар 2011, 11:33
Yuri
Спасибо, но вопрос немного не о том был. А о несовпадении данных в таблице Pick.

Re: Прямой SQL

Добавлено: 10 мар 2011, 11:39
galover
Насколько помню по курсам, Pick особая таблица. Т.е. она содержит данные для текущего пользователя и обрабатывается индивидуально. Вот тут http://tyumbit.ru/gal_forum/viewtopic.php?f=2&t=228 еще немного про Pick.

Re: Прямой SQL

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

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:21
galover
Просто Pick.nRec не прокатывает?

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:24
Yuri
galover писал(а):Просто Pick.nRec не прокатывает?
А эти поля идентичны?

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:27
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   // для поддержания порядка выбора
);

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:35
Yuri
Через MS Management Studio четко видны в таблице еще 2 поля
Изображение
И вот именно в первом поле хранится UserID.

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:46
galover
А, ну так такие служебные поля в любой таблице есть, они обычно с индексами связаны. Их в описании словаря нет, по ним DSQL работать не будет

Re: Прямой SQL

Добавлено: 10 мар 2011, 19:53
Yuri
galover писал(а):А, ну так такие служебные поля в любой таблице есть, они обычно с индексами связаны. Их в описании словаря нет, по ним DSQL работать не будет
Грустно. Но все равно спасибо )

Re: Прямой SQL

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