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

Re: Прямой SQL

Добавлено: 13 фев 2014, 15:45
zna
Den писал(а):т.е. если Вы пишете , например, в саппорт

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

sql select atl_lastdate from katorg;
у Вас в поле выборки число, а не дата ?
В саппорте проверил- дата возвращается, не число. А в интерфейсе - число

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

...
  i := 0;
  while sqlFetch(stmt) = tsOk do
  {
    i := i + 1;
    var date1: string[10];
    date1:= AssemdleDate(date1D, date1M, date1Y);  //  date1D, date1M, date1Y и nodo- это прибинденные переменные 
    Message(string(i)+': nodo = '+nodo+'; date1 = '+date1); // Так нормально дата собирается
  }
  sqlFreeStr(strHandle);
...

Re: Прямой SQL

Добавлено: 13 фев 2014, 16:05
Den
а date1D, date1M, date1Y - числовые у Вас почему ?
что мешает дату передать сразу то..

ну если уж так важно это то сразу одной функцией dsql

Sql Function Int_To_date(
d : longint
):string;
var
s : string;
{
s:=cast( cast(day(datetime(d,0)) as string)
+'/'+cast(month(datetime(d,0)) as string)
+'/'+cast(year(datetime(d,0)) as string)
as string);
return s;
}

Re: Прямой SQL

Добавлено: 13 фев 2014, 16:34
zna
А, так cast можно применить? Отлично, увидел в документации! Благодарю!

Re: Прямой SQL

Добавлено: 25 фев 2014, 11:06
zna
Ещё вопрос по теме, коллеги. Интерфейс, использующий закрос прямого sql, от имени пользователя- администратора "Галактики", работает нормально. А от обычного пользователя- нет, выдаёт пустую выборку, хотя права на таблицы этому пользователю в "Протекте" даны. Подозреваю, что нужно какие-то права дать пользователю на уровне MS SQL (у нас 2008, галактика 8.10)?

Re: Прямой SQL

Добавлено: 25 фев 2014, 11:09
Den
Для начала можно посмотреть в ms70drv.log

Re: Прямой SQL

Добавлено: 25 фев 2014, 11:26
edward_K
+ в протекте поставить внизу галочки - типа расширенные права для DSQL. Если у вас используются какие то функции, то можно задать права на них по группам на соотв. закладке.

Re: Прямой SQL

Добавлено: 25 фев 2014, 11:30
zna
Den писал(а):Для начала можно посмотреть в ms70drv.log
Отличная идея. Имею:
25.02.2014 11:29:02 [DULATINA]:
42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Запрещено разрешение "EXECUTE" на объект "S$INTDATETOSTRING" базы данных "grmks", схемы "dbo".
25.02.2014 11:29:02 [DULATINA]:
HY010: [Microsoft][Диспетчер драйверов ODBC] Ошибка последовательности функций

Re: Прямой SQL

Добавлено: 25 фев 2014, 11:46
zna
edward_K писал(а):+ в протекте поставить внизу галочки - типа расширенные права для DSQL. Если у вас используются какие то функции, то можно задать права на них по группам на соотв. закладке.
Имею вот что:Изображение
Новая функция недоступна.
Сделал доступ, пересчитал права- выборка прошла нормально! Благодарю! :-)

Re: Прямой SQL

Добавлено: 25 фев 2014, 13:14
Алексей
а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?

Re: Прямой SQL

Добавлено: 25 фев 2014, 14:03
sth73
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.

Re: Прямой SQL

Добавлено: 25 фев 2014, 14:03
Den
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
http://tyumbit.ru/gal_forum/viewtopic.php?f=8&t=10938

Re: Прямой SQL

Добавлено: 26 фев 2014, 05:48
Алексей
sth73 писал(а):
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.
а если базы на разных MS SQL серверах, возможно?

Re: Прямой SQL

Добавлено: 26 фев 2014, 11:02
Den
Алексей писал(а):
sth73 писал(а):
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.
а если базы на разных MS SQL серверах, возможно?
Например , посредством :
http://yandex.ru/yandsearch?text=linked ... 0sql&lr=16

Re: Прямой SQL

Добавлено: 25 мар 2014, 11:06
Алексей
в саппорте:
работает

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

sql select saldmoun.sums, saldmoun.datesal from saldmoun where
    '408'    = saldmoun.scheto
and '3'      = saldmoun.subossch;
возвращает пусто

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

sql select saldmoun.sums, saldmoun.datesal from saldmoun where
    '408'    = saldmoun.scheto
and '3'      = saldmoun.subossch
and datesal=convert(datetime,'01/03/2014',104);
как конвертировать дату для запросов?

Re: Прямой SQL

Добавлено: 25 мар 2014, 11:18
zna
Через функцию (Den дал)

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

Sql Function IntDateToString(d: longint):string[10];
    var s: string;
    {s:=cast(cast(day(datetime(d,0)) as string) + '/' + cast(month(datetime(d,0)) as string) + '/' + cast(year(datetime(d,0)) as string) as string); return s;}
...
  SQLAddStr(strHandle, 'select top 30000 IntDateToString(basedoc.ddoc), katorg.name, cast(coalesce(katsopr.summa,0) as string), basedoc.NODOC');          

Для пользователей- не админов надо доступ в саппорте на эту функцию дать.