...
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);
...
а 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;
}
Ещё вопрос по теме, коллеги. Интерфейс, использующий закрос прямого sql, от имени пользователя- администратора "Галактики", работает нормально. А от обычного пользователя- нет, выдаёт пустую выборку, хотя права на таблицы этому пользователю в "Протекте" даны. Подозреваю, что нужно какие-то права дать пользователю на уровне MS SQL (у нас 2008, галактика 8.10)?
+ в протекте поставить внизу галочки - типа расширенные права для DSQL. Если у вас используются какие то функции, то можно задать права на них по группам на соотв. закладке.
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] Ошибка последовательности функций
edward_K писал(а):+ в протекте поставить внизу галочки - типа расширенные права для DSQL. Если у вас используются какие то функции, то можно задать права на них по группам на соотв. закладке.
Имею вот что:
Новая функция недоступна.
Сделал доступ, пересчитал права- выборка прошла нормально! Благодарю!
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.
Алексей писал(а):а можно из интерфейса галактики сделать запрос на DSQL к другой БД на другому SQL сервере?
если да, то можно примерчиr?
У нас на таким образом между собой связаны 2 БД галактики и еще одна БД негалактики.
СУБД оракл. Связь через dblink.
В принципе если надо просто получить данные из сторонней БД, то нет разницы какой запрос выполнять, к своей БД или к какой-то другой, лишь бы синтактически запрос к сторонней БД был правильный.
sql select saldmoun.sums, saldmoun.datesal from saldmoun where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=convert(datetime,'01/03/2014',104);
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');
Для пользователей- не админов надо доступ в саппорте на эту функцию дать.