|
Создание документа из запроса SQL | ☑ | ||
---|---|---|---|---|
0
Shaggart
18.08.15
✎
19:25
|
Вечер добрый, есть такой кусок кода, после запроса хочу создавать документы по каждой строке в экселевском файле, который читаю, но что то не могу сообразить что дальше делать с recordsetom
RecordSet = Новый COMОбъект("ADODB.RecordSet"); Command.ActiveConnection = Connection; Command.CommandText = "SELECT |list.F5, |list.F6, |list.F8, |list.F9, |list.F10, |list.F11, |list.F12 |FROM ["+ИмяТаблицы+"] as list |Where list.F6<>NULL |"; Command.CommandType = 1; RecordSet = Command.Execute(); Если RecordSet.EOF()<>0 Тогда Сообщить("В файле нет записей"); Возврат; КонецЕсли; RecordSet.MoveNext(); Пока RecordSet.EOF() = 0 Цикл может кто подскажет как дальше должно быть? |
|||
1
mehfk
18.08.15
✎
19:28
|
в цикле
читаешь Filelds("моеполе1").Value RecordSet.MoveNext(); |
|||
2
ДенисЧ
18.08.15
✎
19:33
|
А может, если возникает такой вопрос - это пока не твоё?
|
|||
3
Shaggart
19.08.15
✎
01:27
|
Буду благодарен, если чуть больше помощи, и чуть меньше подколов, понятное дело, тут все знатоки, но хотелось бы понять как делать дальше. Спасибо.
|
|||
4
1Сергей
19.08.15
✎
05:55
|
Поля.УдалитьВсе();
Пока RecordSet.EOF()<>0 Цикл Для Идн = 0 по RecordSet.Fields.Count - 1 Цикл Попытка ИмяПоля = RecordSet.Fields(Идн).Name; ЗначениеПоля = RecordSet.Fields(Идн).Value; Исключение Сообщить("Ошибка получения данных из запроса [" + ИмяПоля + "] - [" + ЗначениеПоля + "]"); КонецПопытки; КонецЦикла; КонецЦикла; |
|||
5
1Сергей
19.08.15
✎
05:56
|
*первую строку не надо
|
|||
6
Учитель
19.08.15
✎
05:58
|
(3) На ДенисаЧ не обращай внимание-это известный клоун выступает с гастролями на многих форумах)))
|
|||
7
Repey
19.08.15
✎
07:39
|
На вот:
Функция ПолучитьТЗИзВнешДанныхПоЗапросу(СтрокаСоединения, ТекстЗапроса, ИменаПолей = Ложь) //Если (ЗначениеЗаполнено(СтрокаСоединения) и ЗначениеЗаполнено(ТекстЗапроса)) тогда Если ЗначениеЗаполнено(СтрокаСоединения) Тогда КомСоед = ПодключитьсяКИсточникуданных(СтрокаСоединения); КомСоед = рПодключение; АдоКомманд = Новый COMОбъект("ADODB.Command"); АдоКомманд.ActiveConnection = КомСоед; АдоКомманд.CommandText = ТекстЗапроса; РекСет = Новый COMОбъект("ADODB.Recordset"); РекСет = АдоКомманд.Execute(); КоличСтолбцов = РекСет.fields.count; ТабЗн = новый ТаблицаЗначений; Сч = 0; Пока Сч < КоличСтолбцов цикл КодТипаКолонки = РекСет.fields(Сч).type; Если ИменаПолей тогда Попытка ИмяКолонки = РекСет.fields(Сч).name; Исключение ИмяКолонки = "Поле"+формат(Сч+1,"ЧЦ=3; ЧВН=; ЧГ=0"); КонецПопытки; Иначе ИмяКолонки = "Поле"+формат(Сч+1,"ЧЦ=3; ЧВН=; ЧГ=0"); КонецЕсли; ИмяКолонкиПоле = "Поле"+формат(Сч+1,"ЧЦ=3; ЧВН=; ЧГ=0"); Попытка ТабЗн.Колонки.Добавить(ИмяКолонки, ); Исключение ТабЗн.Колонки.Добавить(ИмяКолонкиПоле, ); КонецПопытки; Сч = Сч+1; КонецЦикла; СчСтр = 0; Пока не(РекСет.EOF) цикл НовСтр = ТабЗн.Добавить(); //Заполнение полей в строке Сч = 0; Пока Сч < КоличСтолбцов цикл НовСтр[Сч] = РекСет.fields(Сч).value; Сч = Сч + 1; КонецЦикла; Сч = Сч +1; РекСет.MoveNext(); КонецЦикла; ЧтоВернуть = ТабЗн; иначе ЧтоВернуть = Неопределено; КонецЕсли; КомСоед = 0; Возврат ЧтоВернуть; КонецФункции Возвращает готовую ТЗ из строки соединения и запроса. Только надо сюда процесс подключения вписать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |