Имя: Пароль:
1C
 
comsafearray как получить картинку
,
0 Sa6nek6
 
22.10.14
09:48
comsafearray как получить  картинку не могу понять( подскажите плиз
1 Sa6nek6
 
22.10.14
09:53
ТабДокумент = новый ТабличныйДокумент;    
    Макет = ПолучитьОбщийМакет("ПФ_MXL_ОтвесСФОТО");    
    ОбластьПодвал                       = Макет.ПолучитьОбласть("ОбластьПодвал");
    Connection = Новый COMОбъект("ADODB.Connection");
    Stream     = Новый COMОбъект("ADODB.Stream");
    Recordset  = Новый COMОбъект("ADODB.Recordset");
    Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;" +
    "Dbname=SASHKA/3050:C:\Program Files\VesySoft\Server\DataBase\VESYEVENT.GDB;" +  // Исправьте на свой IP, порт и путь к базе данных !
    "UID=SYSDBA;" +                                     // Исправьте на свое имя пользователя !
    "PWD=masterkey;" +                                  // Исправьте на правильный пароль !
    "CHARSET=WIN1251;" +                                // Исправьте на свою кодировку подключения !!!
    "client=C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll";
    Connection.ConnectionTimeOut = 60;
    Connection.CommandTimeout = 60;
    Connection.CursorLocation = 3;    
    Попытка
        Connection.Open();
    Исключение
        Сообщить("Подключение к БД <Супер окна> не установлено. Проверьте настройки подключения");
        Connection = Неопределено;
    КонецПопытки;
    Recordset.ActiveConnection = Connection;
    RecordsetТекст = "SELECT VW_SP_REG.DATETIME_UPDATE,VW_SP_REG.CODE,VW_SP_REG.MASSA,VW_SP_REG.PHOTO1, VW_SP_REG.PHOTO2, VW_SP_REG.EVENS_REG
    |FROM VW_SP_REG VW_SP_REG
    | WHERE (VW_SP_REG.EVENS_REG='Незафиксированный проезд транспорта'
    | AND (VW_SP_REG.DATETIME_UPDATE Between {ts '"+Строка(Формат(Отчет.НачалоПериода,"ДФ=yyyy-MM-dd")+" "+Формат(НачалоДня(Отчет.НачалоПериода),"ДЛФ=T"))+".000'} And {ts '"+Строка(Формат(Отчет.КонецПериода,"ДФ=yyyy-MM-dd")+" "+Формат(КонецДня(Отчет.КонецПериода),"ДЛФ=T"))+".000'}))";
    Recordset.Open(RecordsetТекст);
    Stream.Type = 1;
    Stream.Open();
    Пока Recordset.EOF() = 0 Цикл
        Stream.Write(RecordSet.Fields("PHOTO2").Value);
        ИмяФайла = RecordSet.fields("CODE").Value;
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".png";
        Stream.SaveToFile(фрис);
        Stream.Close();
        Файл = Новый ДвоичныеДанные(фрис);
        УдалитьФайлы(фрис);
        ОбластьПодвал.Рисунки.Фото11.Картинка = Новый Картинка(Файл);
        ТабДокумент.Вывести(ОбластьПодвал);
    КонецЦикла;
2 Sa6nek6
 
22.10.14
09:53
что не так???
3 DmitrO
 
22.10.14
10:06
а ничего что Stream.Open() один раз, а Stream.SaveToFile(фрис); Stream.Close(); много раз в цикле?
4 Sa6nek6
 
22.10.14
10:08
(3) Поменял, пишет после первого прохо "Произошла исключительная ситуация (ADODB.Stream): Не удается записать файл.
5 Sa6nek6
 
22.10.14
10:09
Пока Recordset.EOF() = 0 Цикл
        Stream.Open();
        Stream.Write(RecordSet.Fields("PHOTO2").Value);
        ИмяФайла = RecordSet.fields("CODE").Value;
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".gif";
        Stream.SaveToFile(фрис);
        Файл = Новый ДвоичныеДанные(фрис);
        ЗапуститьПриложение(фрис);
        УдалитьФайлы(фрис);
        ОбластьПодвал.Рисунки.Фото11.Картинка = Новый Картинка(Файл);
        ТабДокумент.Вывести(ОбластьПодвал);
        Stream.Close();
    КонецЦикла;
6 Sa6nek6
 
22.10.14
10:58
Up
7 Sa6nek6
 
22.10.14
11:25
( ну что не так делаю
8 Ёпрст
 
22.10.14
11:36
удалять файло надо в конце
9 Ёпрст
 
22.10.14
11:36
для начала
10 Sa6nek6
 
22.10.14
11:37
(8)      Файл = Новый ДвоичныеДанные(фрис);
        УдалитьФайлы(фрис);
11 Sa6nek6
 
22.10.14
11:38
ТабДокумент = новый ТабличныйДокумент;    
    Макет = ПолучитьОбщийМакет("ПФ_MXL_ОтвесСФОТО");    
    ОбластьПодвал                       = Макет.ПолучитьОбласть("ОбластьПодвал");
    Connection = Новый COMОбъект("ADODB.Connection");
    Recordset  = Новый COMОбъект("ADODB.Recordset");
    Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;" +
    "Dbname=SASHKA/3050:C:\Program Files\VesySoft\Server\DataBase\VESYEVENT.GDB;" +  // Исправьте на свой IP, порт и путь к базе данных !
    "UID=SYSDBA;" +                                     // Исправьте на свое имя пользователя !
    "PWD=masterkey;" +                                  // Исправьте на правильный пароль !
    "CHARSET=WIN1251;" +                                // Исправьте на свою кодировку подключения !!!
    "client=C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll";
    Connection.ConnectionTimeOut = 60;
    Connection.CommandTimeout = 60;
    Connection.CursorLocation = 3;    
    Попытка
        Connection.Open();
    Исключение
        Сообщить("Проверьте настройки подключения");
        Connection = Неопределено;
    КонецПопытки;
    Recordset.ActiveConnection = Connection;
    RecordsetТекст = "SELECT VW_SP_REG.DATETIME_UPDATE,VW_SP_REG.CODE,VW_SP_REG.MASSA,VW_SP_REG.PHOTO1, VW_SP_REG.PHOTO2, VW_SP_REG.EVENS_REG
    |FROM VW_SP_REG VW_SP_REG
    | WHERE (VW_SP_REG.EVENS_REG='Незафиксированный проезд транспорта'
    | AND (VW_SP_REG.DATETIME_UPDATE Between {ts '"+Строка(Формат(Отчет.НачалоПериода,"ДФ=yyyy-MM-dd")+" "+Формат(НачалоДня(Отчет.НачалоПериода),"ДЛФ=T"))+".000'} And {ts '"+Строка(Формат(Отчет.КонецПериода,"ДФ=yyyy-MM-dd")+" "+Формат(КонецДня(Отчет.КонецПериода),"ДЛФ=T"))+".000'}))";
    Recordset.Open(RecordsetТекст);
    Stream     = Новый COMОбъект("ADODB.Stream");
    Stream.Type = 1;
    Stream.Open();
    Н = 0;
    Пока Recordset.EOF() = 0 Цикл
        Н = Н +1;
        ИмяФайла = Строка(RecordSet.Fields("PHOTO1").Value)+Н;
        Stream.Write(RecordSet.Fields("PHOTO1").Value);
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".gif";
        Stream.SaveToFile(фрис);
        Файл = Новый ДвоичныеДанные(фрис);
        Попытка
            Картинка = Новый Картинка(Файл,Ложь);
        Исключение
        КонецПопытки;    
        УдалитьФайлы(фрис);
        ОбластьПодвал.Рисунки.Фото11.Картинка = Картинка;
        ТабДокумент.Вывести(ОбластьПодвал);
    КонецЦикла;                                    
    Recordset.Close();
    Stream.Close();
    Возврат ТабДокумент
12 Ёпрст
 
22.10.14
11:39
да ё.. после закрытия стрима удаляй временной файло, для начала
13 Ёпрст
 
22.10.14
11:41
ну или хотя бы после вывода в область
14 Sa6nek6
 
22.10.14
11:45
Н = Н +1;
        ИмяФайла = Строка(RecordSet.Fields("PHOTO1").Value)+Н;
        Stream.Write(RecordSet.Fields("PHOTO1").Value);
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".gif";
        Stream.SaveToFile(фрис);
        Файл = Новый ДвоичныеДанные(фрис);
        Попытка
            Картинка = Новый Картинка(Файл,Ложь);
        Исключение
        КонецПопытки;    
        ОбластьПодвал.Рисунки.Фото11.Картинка = Картинка;
        ТабДокумент.Вывести(ОбластьПодвал);
        УдалитьФайлы(фрис)
15 Ёпрст
 
22.10.14
11:46
(14) и ? не работает ?
16 Ёпрст
 
22.10.14
11:46
сама картинка то хоть создалась ?
17 Sa6nek6
 
22.10.14
12:41
(16) Картинка создалась когда, много проходов делает то ошибку выдает
18 Ёпрст
 
22.10.14
12:58
какую ?
19 Sa6nek6
 
22.10.14
13:44
Произошла исключительная ситуация (ADODB.Stream): Не удается записать файл.
20 Sa6nek6
 
22.10.14
13:49
Н = 0;
    Пока Recordset.EOF() = 0 Цикл
        Н = Н +1;
        ИмяФайла = Строка(RecordSet.Fields("PHOTO1").Value)+Н;
        Stream.Write(RecordSet.Fields("PHOTO1").Value);
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".gif";
        Stream.SaveToFile(фрис);
        Файл = Новый ДвоичныеДанные(фрис);
        Попытка
            Картинка = Новый Картинка(Файл,Ложь);
        Исключение
        КонецПопытки;    
        ОбластьПодвал.Рисунки.Фото11.Картинка = Картинка;
        ТабДокумент.Вывести(ОбластьПодвал);
        УдалитьФайлы(фрис);
21 Sa6nek6
 
22.10.14
13:49
Вроде удаляю а темп забивается
22 Ёпрст
 
22.10.14
14:03
Воткни в попытку- исключение - смотри на имя файла. Мот там мусор в имени - и записать такое файло не может (слэш там, например)
23 Sa6nek6
 
22.10.14
14:08
(22) Получается что в цикле 17 записей по дате а цикл как будто бесконечный, хотя запрос пишу в Microsoft Query
24 Ёпрст
 
22.10.14
14:14
:)

RecordSet.MoveNext(); есть в цикле хоть ?
:)
25 Ёпрст
 
22.10.14
14:14
чето на сам код я и не посмотрел, вообще..
26 Ёпрст
 
22.10.14
14:15
а так то конечно - бесконечный цикл ..по первой записи
27 Ёпрст
 
22.10.14
14:15
:)
28 Sa6nek6
 
22.10.14
14:16
(26)  Так че адо вставить RecordSet.MoveNext(); и все?
29 Sa6nek6
 
22.10.14
14:16
Пока Recordset.EOF() = 0 Цикл
        RecordSet.MoveNext();
        Н = Н +1;
        ИмяФайла = Строка("PHOTO1")+"_"+Строка(Н);
        Stream.Write(RecordSet.Fields("PHOTO1").Value);
        фрис = КаталогВременныхФайлов() + ИмяФайла + ".png";
        Stream.SaveToFile(фрис);
        Файл = Новый ДвоичныеДанные(фрис);
        Попытка
            Картинка = Новый Картинка(Файл,Ложь);
        Исключение
        КонецПопытки;    
        ОбластьПодвал.Рисунки.Фото11.Картинка = Картинка;
        ТабДокумент.Вывести(ОбластьПодвал);
        УдалитьФайлы(фрис);
    КонецЦикла;
30 Ёпрст
 
22.10.14
14:17
(28) да, только не в начало а в конец цикла - а то первую запись пропустишь
31 Sa6nek6
 
22.10.14
14:17
Произошла исключительная ситуация (ADODB.Field): BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись.
32 Sa6nek6
 
22.10.14
14:18
(30) РАБОТАЕТ!!!!!!!!!!!!!!!!!
33 Ёпрст
 
22.10.14
14:18
RecordSet.MoveFirst();
Пока RecordSet.EOF() = 0 Цикл
    //тут твой хлам

    RecordSet.MoveNext();  
КонецЦикла;
34 Sa6nek6
 
22.10.14
14:18
(30) Ты есть на инфостарте кину мани))
35 Sa6nek6
 
22.10.14
14:20
(33) Спасибо!!!
36 Ёпрст
 
22.10.14
14:21
(34) есть, забанен я там.
:)
37 Ёпрст
 
22.10.14
14:22
да и ..переводы там  были закрыты, можно только через платный вопрос перевести
38 Sa6nek6
 
22.10.14
15:19
(37) Печалька
Независимо от того, куда вы едете — это в гору и против ветра!