А кто-то может сказать как работает 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
ВОПРОС: А КАК ОСУЩЕСТВИТЬ НАВИГАЦИЮ ПО ПОЛУЧЕННЫМ В ЗАПРОСЕ ЗАПИСЯМ??
Не понятно, как позиционироваться на первую запись и как определить максимальное их количество для выхода из цикла. Хелпа нет. Кто-то может подсказать?
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 получает правильное значение!!!!! по нему в суппорте легко все находится.
Есть предложения у кого-то что можно предпринять?
Уважаемые, подскажите, что не так.
В 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); //а тут пусто
}