var arrServices = GetSimpleSQLResult(sSQL);
тогда arrServices - одномерный массив, с длиной запрашиваемых столбцов.
а если sSQL возвращает несколько строк, можно объявить двумерный массив, где количвство столбцов = количеству запрашиваемых столбцов, а количвство строк = количество возвращаемых строк
Конечно, теоретически это сделать возможно, но при условии, что Вы модифицируете функцию GetSimpleSQLResult(sSQL) таким образом, что возвращаемый результат будет записан в двумерный массив.
т.е. такой встроенной функции нет ?
Есть ли в террасофт понятие resultSet ?
например:
set rs = ExecuteQuery("select столбец from таблица where условие")
Do While Not rs.EOF -- т.е пока не дошли до последней строки запроса(включительно), EOF-end of file
Функции GetSimpleSQLResult в коробочной версии нет, это какая-то доработка.
Обычно в таком цикле перебирают Dataset с несколькими строками результатов, примерно так:
function GetAllRecordFieldsValues(Dataset, FieldNames, Result){
var Result =new Array();
var i;
var ResultItem;while(!Dataset.IsEOF){
Result[Result.length]=new Array();
ResultItem = Result[Result.length-1];for(i=0;i<FieldNames.length;i++){
ResultItem[FieldNames[i]]= Dataset.Values(FieldNames[i]);}
Dataset.GotoNext();}return Result;}
Это стандартная функция из scr_DB.
Она возвращает массив массивов.
Здравствуйте Александр.
Спасибо за пример, я попробовала.
И если я Вас правильно поняля, для этого надо было создать tbl_таблицу, sq_запрос, ds_датасет, что я и сделала.
Но ведь, при решении какой-то задачи может возникнуть необходимость пройтись по различным запросам, которые не имеет смысла хранить в системе как таблицу.
Любые таблицы базы данных лучше создавать в системе как сервис tbl. А sq — это запрос, графическое представление sql-кода, которое может быть построен и по существующим таблицам. В принципе, если сильно нужно, то и sq, и ds по ней можно создать чисто программно, не в дизайнере. Примеры низкоуровневой работы с этими объектами — в том же scr_DB.