|
Как выгрузить значение SQL запроса к внешнему источнику? | ☑ | ||
---|---|---|---|---|
0
НикДляЗапросов
21.11.13
✎
15:45
|
Т.е. ADODB.Recordset select-oм выбирает поля
я могу objRecordset.Fields("НАИМЕНОВАНИЕ ПОЛЯ").value получить значение, но хотелось бы весь результат запроса выгрузить в ТЗ |
|||
1
Maxus43
21.11.13
✎
15:50
|
внешниеисточникиданных + СКД и делай что хочешь, не вариант?
|
|||
2
НикДляЗапросов
21.11.13
✎
16:01
|
Я не знаю, так проще?
|
|||
3
НЕА123
21.11.13
✎
16:06
|
For i = 0 to RS.Fields.Count - 1 do
ТЗ.Колонки.Добавить(RS.Fields(i).Name, Новый ОписаниеТипов("Строка, Число, Дата, NULL", Новый КвалификаторыЧисла(64, 32, ДопустимыйЗнак.Любой), Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная))); EndDo; While RS.EOF() = 0 Do НоваяСтрокаТЗ = ТЗ.Добавить(); For i = 0 to RS.Fields.Count - 1 do НоваяСтрокаТЗ[i] = RS.Fields(i).Value; EndDo; RS.MoveNext(); EndDo; |
|||
4
НикДляЗапросов
21.11.13
✎
16:11
|
(3) Да я понял, но я запарюсь поля описывать
|
|||
5
НЕА123
21.11.13
✎
16:13
|
(4)
имеется ввиду типа //RS.Fields(i).DefinedSize - размер целой части числа, длина строки , не? |
|||
6
НикДляЗапросов
21.11.13
✎
16:15
|
(5) Ща, подумать надо
|
|||
7
Serginio1
21.11.13
✎
16:24
|
Функция ЗаполнитьИзРекордСета(РекордСет)
Тз=СоздатьОбъект("ТаблицаЗначений"); ХБ=РекордСет.Fields.Count-1; Сз=СоздатьОбъект("СписокЗначений"); Для сч=0 по ХБ Цикл Поле=РекордСет.Fields(сч); Name=Поле.Name; Сз.ДобавитьЗначение(Name); Тз.НоваяКолонка(Name); КонецЦикла; Пока РекордСет.EOF = 0 Цикл Тз.НоваяСтрока(); НомСтр=Тз.НомерСтроки; Для сч=0 по ХБ Цикл Значение=РекордСет.Fields(сч).Value; Тз.УстановитьЗначение(НомСтр,Сч+1,Значение); КонецЦикла; РекордСет.MoveNext(); КонецЦикла; РекордСет.close(); возврат Тз КонецФункции |
|||
8
МихаилМ
21.11.13
✎
16:33
|
(1)
в методе нет нормализации имен колонок для тз. + нет типизации колонок |
|||
9
Serginio1
21.11.13
✎
16:54
|
||||
10
НикДляЗапросов
21.11.13
✎
17:19
|
Всем спасибо.
Ну получил я в итоге то что нужно, но не так просто как хотел. Функция ЗаполнитьИзРекордСета(РекордСет) Тз= Новый ТаблицаЗначений; ХБ=РекордСет.Fields.Count-1; Сз= Новый СписокЗначений; Для сч=0 по ХБ Цикл Поле=РекордСет.Fields(сч); Name=Поле.Name; Если Name = "" Тогда name = "Поле"+сч; КонецЕсли; Сз.Добавить(Name); Тз.Колонки.Добавить(Name); КонецЦикла; Пока РекордСет.EOF = 0 Цикл СтрТЗ = Тз.Добавить(); НомСтр=Тз.Индекс(стртз); Для сч=0 по ХБ Цикл Значение=РекордСет.Fields(сч).Value; //Тз.УстановитьЗначение(НомСтр,Сч+1,Значение); СтрТЗ[Сч] = Значение; КонецЦикла; РекордСет.MoveNext(); КонецЦикла; РекордСет.close(); возврат Тз КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |