![]() |
![]() |
![]() |
|
Обработать результат к выборе MySQL | ☑ | ||
---|---|---|---|---|
0
lamme
18.10.17
✎
11:19
|
1C83
клиент. подключаюсь к базе MySQL запросом к таблице select barcode, date_ins, date_upd, image from photo WHERE date_ins > STR_TO_DATE(""01.10.2017"",""%d.%m.%Y"") AND date_ins < STR_TO_DATE(""10.10.2017"",""%d.%m.%Y"") - получаю какие то данные из таблицы http://clip2net.com/s/3OFC5ku Собственно вопрос ... а где сами данные то? Как теперь в этом НаборЗаписей - поиметь те поля - которые я вытаскиваю из таблицы. И как понять -сколько записей в выборке? |
|||
1
Ёпрст
гуру
18.10.17
✎
11:22
|
Сообщить(RecordSet.Fields.Item("barcode").Value);
|
|||
2
Ёпрст
гуру
18.10.17
✎
11:23
|
в твоём случае,
Сообщить(НаборЗаписей.Fields.Item("barcode").Value); |
|||
3
lamme
18.10.17
✎
11:27
|
а если нужны двоичные данные в image ?
те это картинка на MySQL я так понимаю - там должны быть бинарные данные работаем с ними как с двоичными? |
|||
4
lamme
18.10.17
✎
11:30
|
а это нормально - что запрос работает на выборку долго?
те я из 1С выбираю данные - ну .. минуты с 4 .. в консоли MySQL - там шустрее |
|||
5
lamme
18.10.17
✎
11:31
|
вообще - запрос верен?
те нужны все записи из таблицы ... за период с ... по полю date_ins |
|||
6
lamme
18.10.17
✎
11:35
|
как показывает практика - запрос верен
только вот тип данных у поля image - вот такой вот http://clip2net.com/s/3OFEMSy и как его дальше обработать? чтобы получить картинку |
|||
7
lamme
18.10.17
✎
12:29
|
||||
8
lamme
18.10.17
✎
13:35
|
Делаю так:
ТекстЗакпроса = "select barcode, date_ins, date_upd, image from photo WHERE date_ins >= STR_TO_DATE(""01.10.2017"",""%d.%m.%Y"") AND date_ins <= STR_TO_DATE(""06.10.2017"",""%d.%m.%Y"")"; Stream = Новый COMОбъект("ADODB.Stream"); RS = Новый COMОбъект("ADODB.Recordset"); RS.ActiveConnection = АДОСоединение; RS.open (ТекстЗакпроса); Stream.Type = 1; Пока RS.EOF() = 0 Цикл Stream.Open(); Stream.Write(RS.Fields("image").Value); ИмяФайла = RS.fields("barcode").Value; фрис = КаталогВременныхФайлов() + ИмяФайла + ".png"; Stream.SaveToFile(фрис); Stream.Close(); КонецЦикла; выдается вот такая ошибка Произошла исключительная ситуация (ADODB.Stream): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом. что делать? |
|||
9
lamme
18.10.17
✎
13:38
|
Stream.Write(RS.Fields("image").Value); - вот тут валится
RS.Fields("image").Value= Тип comsafearray а у Stream - только параметр Stream.Type = 1; |
|||
10
lamme
18.10.17
✎
15:12
|
решено
|
|||
11
lamme
18.10.17
✎
15:12
|
ТекстЗакпроса = "select barcode, date_ins, date_upd, image from photo WHERE date_ins >= STR_TO_DATE(""01.10.2017"",""%d.%m.%Y"") AND date_ins <= STR_TO_DATE(""06.10.2017"",""%d.%m.%Y"")";
//бираем все поля из таблицы Command = Новый COMОбъект("ADODB.Command");; Command.ActiveConnection = АДОСоединение; Command.CommandText = ТекстЗакпроса; Command.CommandType = 1; RS = Новый COMОбъект("ADODB.Recordset"); RS.ActiveConnection = АДОСоединение; RS.CursorType = 3; RS = Command.Execute(); //ределим таблицу с именами колонок, как имена полей, полученные из запроса к MySQL таблице РезультатЗапроса = Новый ТаблицаЗначений; КоличествоПолей = RS.Fields.Count; Для НомерКолонки = 0 По КоличествоПолей - 1 Цикл РезультатЗапроса.Колонки.Добавить(RS.Fields.Item(НомерКолонки).Name); //поля таблицы КонецЦикла; //озиционируемся на начало выборки MySQL RS.MoveFirst(); Recordset = Новый COMОбъект("ADODB.Recordset"); Stream = Новый COMОбъект("ADODB.Stream"); Stream1 = Новый COMОбъект("ADODB.Stream"); Stream1.Type = 1; Stream1.Mode = 3; Stream.Type = 1; Stream.Open(); //ходим все строки выборки MySQL Пока НЕ RS.EOF Цикл НоваяСтрока = РезультатЗапроса.Добавить(); Для НомерКолонки = 0 По КоличествоПолей - 1 Цикл ИмяПоля = RS.Fields.Item(НомерКолонки).Name; Значение = RS.Fields(ИмяПоля).Value; Если ИмяПоля="image" тогда Stream1.Open(); Stream1.Write(Значение); ИмяФайла = RS.fields("barcode").Value; фрис = КаталогВременныхФайлов() + ИмяФайла + ".jpg"; Stream1.SaveToFile(фрис,2); сообщить("Записан "+фрис); Stream1.Close(); конецесли; НоваяСтрока[ИмяПоля] = Значение; КонецЦикла; RS.MoveNext(); КонецЦикла; RS.Close(); // Элементыформы.РезультатЗапроса.СоздатьКолонки(); |
|||
12
lamme
18.10.17
✎
15:13
|
Stream - обходит результа выборки
Stream1 - записывает данные в файл пытался сделать зхапись в Stream поэтому и ругалось |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |