Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Обработать результат к выборе MySQL

Обработать результат к выборе MySQL
Я
   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);
   lamme
 
3 - 18.10.17 - 11:27
а если нужны двоичные данные в image ?
те это картинка на MySQL

я так понимаю - там должны быть бинарные данные
работаем с ними как с двоичными?
   lamme
 
4 - 18.10.17 - 11:30
а это нормально - что запрос работает на выборку долго?
те я из 1С выбираю данные - ну .. минуты с 4 ..
в консоли MySQL - там шустрее
   lamme
 
5 - 18.10.17 - 11:31
вообще - запрос верен?
те нужны все записи из таблицы ... за период с ... по полю date_ins
   lamme
 
6 - 18.10.17 - 11:35
как показывает практика - запрос верен

только вот тип данных у поля image - вот такой вот
http://clip2net.com/s/3OFEMSy

и как его дальше обработать? чтобы получить картинку
   lamme
 
7 - 18.10.17 - 12:29
собственно
вот примерное решение

comsafearray как получить  картинку
   lamme
 
8 - 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): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.


что делать?
   lamme
 
9 - 18.10.17 - 13:38
Stream.Write(RS.Fields("image").Value);  - вот тут валится


RS.Fields("image").Value= Тип comsafearray
а у  Stream - только параметр Stream.Type = 1;
   lamme
 
10 - 18.10.17 - 15:12
решено
 
 Рекламное место пустует
   lamme
 
11 - 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();
    
//    Элементыформы.РезультатЗапроса.СоздатьКолонки();
   lamme
 
12 - 18.10.17 - 15:13
Stream - обходит результа выборки
 Stream1  - записывает данные в файл


пытался   сделать зхапись в  Stream
поэтому и ругалось

Список тем форума
Рекламное место пустует  Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует