Здравствуйте.

var arrServices = GetSimpleSQLResult(sSQL);
тогда arrServices - одномерный массив, с длиной запрашиваемых столбцов.

а если sSQL возвращает несколько строк, можно объявить двумерный массив, где количвство столбцов = количеству запрашиваемых столбцов, а количвство строк = количество возвращаемых строк

Спасибо.

Нравится

6 комментариев

Здравствуйте, Марина!

Конечно, теоретически это сделать возможно, но при условии, что Вы модифицируете функцию GetSimpleSQLResult(sSQL) таким образом, что возвращаемый результат будет записан в двумерный массив.

т.е. такой встроенной функции нет ?
Есть ли в террасофт понятие resultSet ?

например:
set rs = ExecuteQuery("select столбец from таблица where условие")
Do While Not rs.EOF -- т.е пока не дошли до последней строки запроса(включительно), EOF-end of file

-- какой-то анализ

rs.MoveNext -- переход на следующую строку
Loop

Функции 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.

Здравствуйте Алла и Александр.
Спасибо за ответы !

Показать все комментарии