|
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) Печалька
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |