Прямой SQL

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

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

BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Прямой SQL

Сообщение BlazeBio »

Что-то я не вкуриваю, ораклейная функция вечно возвращает 0, хотя должна или 1, или 2, или 3 во всех иных случаях.

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

function SQL_F_SPREADY_PARTY(spsornrec : comp) : integer;
{
	var stmt     : LongInt;
	var stmt_str : LongInt;
	var messageErr : string;
	var nresult : integer;

	stmt := sqlAllocStmt;
	sqlBindParam( stmt, 1, spsornrec);
	sqlBindCol(stmt, 1, nresult);
	sqlAddStr(stmt_str, 'F_SPREADY_PARTY(?)');
	//f_add_spraw (param1, param2) - (код партии, наименование МЦ).
	sqlPrepare(stmt, stmt_str);
	sqlFreeStr(stmt_str);
	messageErr := sqlExecute(stmt);
	sqlFreeStmt(stmt);
	message(nresult);
//	SQL_F_SPREADY_PARTY := messageErr;
SQL_F_SPREADY_PARTY := nresult;
}

..............
	var checkparty : integer;
	checkparty := SQL_F_SPREADY_PARTY( katsopr.nrec);
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Прямой SQL

Сообщение BlazeBio »

Мб надо что-то вроде такого писать перед тем как в Oracle создавать функцию?

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

sql Function F_SPREAD_PARTY  (katsoprnrec :string ) :integer;
{
return 7;
}
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Прямой SQL

Сообщение savov »

А кто-то может сказать как работает DSQL в JS?
Есть такие ф-ии
function DSQL_RunQuery(liHandle, strQuery)
liHandle : longint - идентификатор, полученный в результате работы функции DSQL_CreateHandle()
strQuery : string - текст запроса

Функция индексации полей запроса из функции DSQL_RunQuery
function DSQL_BindCol(liHandle, wNumberCol, strType)
liHandle : longint - идентификатор, полученный в результате работы функции DSQL_CreateHandle
wNumberCol : word - номер поля в запросе из функции DSQL_RunQuery
strType : string - строковое наименование типа поля в запросе из функции DSQL_RunQuery

Функция получения записи из запроса
Возвращает код ошибки (0 - успешное выполнение).
function DSQL_GetRecord(liHandle)
liHandle : longint - идентификатор, полученный в результате работы функции DSQL_CreateHandle()

Функция для получения значения поля из записи, считанной в результате функции DSQL_GetRecord
Возвращает значение поля.
function DSQL_GetFieldValueByNum(wNumberCol)
wNumberCol : word - номер поля используемый в функции DSQL_BindCol


ВОПРОС: А КАК ОСУЩЕСТВИТЬ НАВИГАЦИЮ ПО ПОЛУЧЕННЫМ В ЗАПРОСЕ ЗАПИСЯМ??
Не понятно, как позиционироваться на первую запись и как определить максимальное их количество для выхода из цикла. Хелпа нет. Кто-то может подсказать?
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Прямой SQL

Сообщение savov »

Народ, так что,никто не знает как навигацию сделать??
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Прямой SQL

Сообщение Vik »

может быть, так:
..
DSQL_BindCol(lHandle, 1, 'string')
..
while (DSQL_GetRecord(lHandle) == 0)
{
col1 = DSQL_GetFieldValueByNum(1)
}

Сам не пробовал, лишь предполагаю по приведенному вами описанию.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Прямой SQL

Сообщение zna »

Очень интересна данная тема в JS, но толком что-то сделать не получилось. Хотелось бы разработчиков услышать..
LaaLaa

Re: Прямой SQL

Сообщение LaaLaa »

zna писал(а):Хотелось бы разработчиков услышать..
Попробуйте про JavaScript спросить на минском форуме https://forum.galaktika.ru/viewforum.php?f=6
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Прямой SQL

Сообщение zna »

Ок, спробую..
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Прямой SQL

Сообщение zna »

Тишина там, спрашивал ещё в июне: https://forum.galaktika.ru/viewtopic.ph ... c&start=15 :-?
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Прямой SQL

Сообщение savov »

Действительно, Vik был прав! Помогло, огромное спасибо!
Вот мой текст, все работает

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

iHandle = DSQL_CreateHandle();
sstr = "select persons.nrec from  persons, lschet where lschet.tperson=persons.nrec and lschet.datuv=0";
result = DSQL_RunQuery(iHandle, sstr);
DSQL_BindCol(iHandle, 1, 'comp');
while(DSQL_GetRecord(iHandle)==0)
{
 sss =DSQL_GetFieldValueByNum(1);
SPPlan.CreateSPPlan(CurPlan());
SPPlan.rewrite();
SPPlan.NrecObjstr  = sss;
SPPlan.rewrite();
SPPlan.SetCurSt(CurPlan(),0,sss);
SPPlan.TypeObjst = tp;
SPPlan.Sostst  = Ssost;
SPPlan.rewrite();
};
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Прямой SQL

Сообщение savov »

Еще вопросец в продолжение тематики DSQL+JS
Пишу код:

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

sstr1 = 'select persons.tabnmb from persons where persons.nrec = Comp(';
 nrecpersons = SPPlan.NrecObjstr;

 iHandle = DSQL_CreateHandle();

sstr1 = sstr1 + nrecpersons+')';
 result = DSQL_RunQuery(iHandle, sstr1);
 DSQL_BindCol(iHandle, 1, 'string');
 Message(sstr1,0); //вывожу строку запроса для поверки
 tabnum = DSQL_GetFieldValueByNum(1);
 Message(tabnum,0);   //  вывожу  табельный номер   


Результат получить не могу!!!!!!!
Пробовал без ф-ии Comp, без '', преобразовывал сам к 16 -ному и сравнивал строками, ничего не помогает! Причем сама переменная nrecpersons получает правильное значение!!!!! по нему в суппорте легко все находится.
Есть предложения у кого-то что можно предпринять?
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Прямой SQL

Сообщение n0where »

Функция для получения значения поля из записи, считанной в результате функции DSQL_GetRecord
function DSQL_GetFieldValueByNum(wNumberCol)
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Прямой SQL

Сообщение Vik »

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

sstr1 = 'select persons.tabnmb from persons where persons.nrec = #comp(' + nrecpersons + ')' ;
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Прямой SQL

Сообщение savov »

Спасибо n0Where! Слона я не приметил, причем в предыдущем же посте сам все правильно написал!
sildae
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 04 апр 2009, 15:56
Откуда: сАРАТОВ
Контактная информация:

Re: Прямой SQL

Сообщение sildae »

Уважаемые, подскажите, что не так.
В JS алгоритме.

Dogovor1.setPosition(curDogovor());
if (Dogovor1.DMin == 0 & Dogovor1.Dmax == 0)
{
Message ('Нужно проставить предоплату или отстрочку платежа.');
iHandle = DSQL_CreateHandle();
sstr = "select groupsch.name from groupsch,dogovor,spgrsch where '+Dogovor1.Nrec1+'=dogovor.nrec and 1=spgrsch.wlist and '+Dogovor1.Nrec1+'=spgrsch.cbasedoc and spgrsch.cgroupsch=groupsch.nrec";
result = DSQL_RunQuery(iHandle, sstr);
Message (result); //тут печатается 0,
DSQL_BindCol(iHandle,1,'string');
aa = DSQL_GetRecord(iHandle);
Message (aa); //а тут 4, уже ошибка
gr = DSQL_GetFieldValueByNum(1);
Message (gr); //а тут пусто
}


Пытаюсь найти группу договоров.
Ответить