Как выгрузить всю таблицу БД SQL в поле текстового документа (по запросу пользователя)?

1. ovadia 17.11.17 19:22 Сейчас в теме
Подскажите, пожалуйста, как выгрузить по SQL запросу таблицу БД в поле текстового документа (обычная форма)? Запрос вводится пользователем в поле текстового документа. Имена полей таблицы не известны.

Пример кода (в данном случае известны имена полей таблицы - [id], [tst] и запрос прописывается в коде):
Процедура BT_SQLClick(Элемент)
	
	
	Попытка
        Соединение  = Новый COMОбъект("ADODB.Connection");
        Команда     = Новый COMОбъект("ADODB.Command");
        Выборка     = Новый COMОбъект("ADODB.RecordSet");
        Соединение.ConnectionString =
            "driver={SQL Server};" +
            "server="+ИмяСервераSQL+";"+
            "uid="+ПользовательSQL+";"+
            "pwd="+ПарольSQL+";"+
            "database="+БазаДанныхSQL+";";
        Соединение.ConnectionTimeout = 10;
        Соединение.CommandTimeout = 600;
        //Открытие соединение
        Соединение.Open();
        Команда.ActiveConnection   = Соединение;
    Исключение
        Сообщить(ОписаниеОшибки());
		ЭлементыФормы.STATUS_TEXT.ЦветТекста = Новый Цвет(250, 0, 0);
		ЭлементыФормы.STATUS_TEXT.Значение = "Ошибка запроса!";
        Возврат;
	КонецПопытки;
	
	 //Читаем записи
    ТекстЗапроса =
        "SEL ECT
        |   [id], [tst]
        |FROM "+ТаблицаSQL_TST;
	
	ТекстЗапроса_2 =
        "SEL ECT * FR OM "+ТаблицаSQL_Enum;
	
	//id = 4;
	//tst = "Я вот что тут подумал ...";
	//ТекстТекущейИнструкции =
	//    "SET IDENTITY_INSERT "+ТаблицаSQL+" ON;
	//	|INS ERT INTO "+ТаблицаSQL+"
	//    |([id], [tst])
	//    |VALUES ('"+id+"', '"+tst+"')";
	//Попытка
	//    Соединение.Execute(ТекстТекущейИнструкции,,128);
	//    Сообщить("Запись добавлена!");
	//Исключение
	//    Сообщить(ОписаниеОшибки());
	//КонецПопытки;
	
	Попытка
		Команда.CommandText = ТекстЗапроса;
		Выборка = Команда.Execute();
		Если Выборка.BOF = Ложь Тогда
		    Выборка.MoveFirst();
			Пока Выборка.EOF = Ложь Цикл
				s_res = "id= " + Число(Выборка.Fields("id").Value) + ", tst= " + СокрЛП(Выборка.Fields("tst").Val ue);
		        ЭлементыФормы.FLD_ResSQL.ДобавитьСтроку(s_res);
				Сообщить(s_res);
		        Выборка.MoveNext();
		    КонецЦикла;
		КонецЕсли;
		ЭлементыФормы.FLD_ResSQL.ДобавитьСтроку("Запрос выполнен!");
	Исключение
		ЭлементыФормы.FLD_ResSQL.ДобавитьСтроку("Ошибка запроса!");
	    Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	Соединение.Close();

КонецПроцедуры;
Показать


Мне нужно сделать вывод по любому запросу, который пользователь напечатает в поле, например:
SEL ECT * FROM ТSQL_Enum
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dnki 4 18.11.17 00:57 Сейчас в теме
* Однозначно, команда должна быть SELECT *
* При выводе результата, нужно обходить его колонки.
* Я не большой знаток ADO, но навскидку нашел, что у объекта RecordSet есть коллекция Fields.
И работа с ней на самом официальном сайте:My Webpage
+
3. МихаилМ 18.11.17 12:20 Сейчас в теме
на этом сайте полно консолей запросов . возможно есть и с мастерами построения запросов
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот