IMAGE-BLOB-IMAGE...
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
IMAGE-BLOB-IMAGE...
Всем большое здравствуйте.
Нержиданно всплыла старая проблема с гонянием блоб-полей из MSSQL в TPS и наоборот. А также запихивание и выгрузка на диск вордовских документов. Поиск по форуму показывает обсуждения пяти-шестилетней давности, а прогресс идет (ну или должен идти) вперед (по теории даже в кларике). Так вот. Кларион 8рка. MSSQL2008. Соединение вроде как через адо. Но не важно, можно наверное файл с любым драйвером обьявить.
Кларион без сторонних библиотек.
Надо:
1. Из скула регулярно выгружать табличку в тпс. В табличке поле Image.
2. Эту же табличку загружать обратно.
3. Офисные документы doc и xls загружать в Image поля на MSSQL и время от времени некоторые выгружать обратно на диск.
По быстрому все эти вопросы решить не удалось. До этого кларик со скулом не пользовали. Прошу отозваться, как дело обстоит с этими вещами в восьмерке, и как это сделать просто и эффективно?
Повторю, Кларик без сторонних библиотек. И не планируется.
Заранее спс.
Нержиданно всплыла старая проблема с гонянием блоб-полей из MSSQL в TPS и наоборот. А также запихивание и выгрузка на диск вордовских документов. Поиск по форуму показывает обсуждения пяти-шестилетней давности, а прогресс идет (ну или должен идти) вперед (по теории даже в кларике). Так вот. Кларион 8рка. MSSQL2008. Соединение вроде как через адо. Но не важно, можно наверное файл с любым драйвером обьявить.
Кларион без сторонних библиотек.
Надо:
1. Из скула регулярно выгружать табличку в тпс. В табличке поле Image.
2. Эту же табличку загружать обратно.
3. Офисные документы doc и xls загружать в Image поля на MSSQL и время от времени некоторые выгружать обратно на диск.
По быстрому все эти вопросы решить не удалось. До этого кларик со скулом не пользовали. Прошу отозваться, как дело обстоит с этими вещами в восьмерке, и как это сделать просто и эффективно?
Повторю, Кларик без сторонних библиотек. И не планируется.
Заранее спс.
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
IMAGE-BLOB-IMAGE...
И {prop:size}? неа, с полпинка не завелось. Скуловская табличка в словаре вообще как-то через ж.у отображена: вместо blob почему-то cstring на 4 мегабайта...
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
-
- ✯ Ветеран ✯
- Сообщения: 4994
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
IMAGE-BLOB-IMAGE...
А в чём, собственно, затык? Image-Blob-Image гоняются через prop:ImageBlob, prop:ImageBits, prop:Handle. В хелпе раздел - "How to Store and Display a Graphic Image with a Memo or Blob Data Type". По-моему это в Clarion работает. Вот как документ в Image загнать? Такого делать не приходилось.
We are hard at work… for you.
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
IMAGE-BLOB-IMAGE...
С какой-то версии в cwutil появились функции BlobToFile/FileToBlob.
С уважением, ДП
IMAGE-BLOB-IMAGE...
1. Опять свой класс CSTR рекламирую
S Cstr
...
S.LoadFromFile('File.doc')
S.SaveToBlob(Table:BlobField)
2. У Blob был флажок Binary. Он включен ?
3. В ABC классы настолько умные, что при изменении в файле ТОЛЬКО Blob-поля запись не считается изменившейся. В силу чего простой Update может быть тихо проигнорирован. Поле DateTime с текущим временем, изменяющимся при каждой перезаписи, вполне уместно...
S Cstr
...
S.LoadFromFile('File.doc')
S.SaveToBlob(Table:BlobField)
2. У Blob был флажок Binary. Он включен ?
3. В ABC классы настолько умные, что при изменении в файле ТОЛЬКО Blob-поля запись не считается изменившейся. В силу чего простой Update может быть тихо проигнорирован. Поле DateTime с текущим временем, изменяющимся при каждой перезаписи, вполне уместно...
IMAGE-BLOB-IMAGE...
Повторю, более детально проблема (если будет, конечно) будет изучена в понедельник. Пока хотелось бы, чтобы время зря не терять получить некий вектор деятельности. То есть, не понятно, почему image в ДСТ трансформировался в cstring. Это как-то связано с вышеупомянутой галочкой? И еще. Отображать задача пока не стоит, задача гонять из скула в тпс и наоборот. И документы тоже! В ТПСе файл читался тупо порциями и писался в блоб. Может и тут так?
Драйвер ADO. Если припрет, конечно, можно локально обьявить в проге нужную табличку с любым другим драйвером, лишь бы все туда-сюда гонялось. Только как коннект получать?
Драйвер ADO. Если припрет, конечно, можно локально обьявить в проге нужную табличку с любым другим драйвером, лишь бы все туда-сюда гонялось. Только как коннект получать?
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
IMAGE-BLOB-IMAGE...
Как и ожидалось, возникли дебиловатые проблемы. Не исключаю, что из-за тупости автора данного сообщения. Но общие правила написания программы командой никто не отменял. Раз сказали АДО - значит, нАДО АДО.
Вопчем, сымпортировал таблицу в словарь. Выставил ей драйвер ADO (вместо MSSQL). Кстати. Возможно тут кроется ошибка, не знаю. Выбирал провайдера Microsoft SQL Server. Дальше порадовался, что Image таки стала BLOB. Хотя, естественно, вне Record. Но об этом позже. Далее скомпилил прогу, выдрал описание таблицы из clw? вставил к себе. Указываю {prop:owner}, {prop:name}. Открываю табличку
Open(Table)
if errorcode() <> 0 then
stop('ec = ' & errorcode())
end
stop(records(table))
Итог - открывает без ошибок, профайлер нифига не регистрит, записей ноль. А записей в таблице дофига, на самом-то деле!!!
Плюнул. Сменил драйвер на MSSQL. Дописал prop:loginprompt = false.
Повторил код с получением числа записей. И - о, чудо! - получил верное число. Но.
1. Через профайлер видно "левый" коннект к базе, помимо "легального" АДОшного;
2. Профайлер ловит какието фетчи, которые я не просил, но это фигня;
3. А надо-то цеплять через АДО!!!
Как быть. что не так? Если бы не Image, все работает на рекордсетах. А blob в рекорд не попадает. Вариант селектить имидж в длиннющий cstring не прокатывает, селектится какаято хрень. Может опять же по причине роста рук из другого места.
Люди, поможите если можете...
Вопчем, сымпортировал таблицу в словарь. Выставил ей драйвер ADO (вместо MSSQL). Кстати. Возможно тут кроется ошибка, не знаю. Выбирал провайдера Microsoft SQL Server. Дальше порадовался, что Image таки стала BLOB. Хотя, естественно, вне Record. Но об этом позже. Далее скомпилил прогу, выдрал описание таблицы из clw? вставил к себе. Указываю {prop:owner}, {prop:name}. Открываю табличку
Open(Table)
if errorcode() <> 0 then
stop('ec = ' & errorcode())
end
stop(records(table))
Итог - открывает без ошибок, профайлер нифига не регистрит, записей ноль. А записей в таблице дофига, на самом-то деле!!!
Плюнул. Сменил драйвер на MSSQL. Дописал prop:loginprompt = false.
Повторил код с получением числа записей. И - о, чудо! - получил верное число. Но.
1. Через профайлер видно "левый" коннект к базе, помимо "легального" АДОшного;
2. Профайлер ловит какието фетчи, которые я не просил, но это фигня;
3. А надо-то цеплять через АДО!!!
Как быть. что не так? Если бы не Image, все работает на рекордсетах. А blob в рекорд не попадает. Вариант селектить имидж в длиннющий cstring не прокатывает, селектится какаято хрень. Может опять же по причине роста рук из другого места.
Люди, поможите если можете...
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
IMAGE-BLOB-IMAGE...
подозреваю, что ты один в Clarion через ADO работаешь. Может даже во всём мире...
С уважением, ДП
IMAGE-BLOB-IMAGE...
Я тоже это подозреваю, но комплексовать по этому поводу не буду, ибо идиотизЬма не моя. Но! возможность есть, и шаблоны есть, и прочая кухня наличествует. С радостью бы не стал такой х.ней заниматься, но...
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
IMAGE-BLOB-IMAGE...
Тогда как минимум нас двое ... давно делали задачу на еще C63 через ADO.Дед Пахом писал(а):подозреваю, что ты один в Clarion через ADO работаешь. Может даже во всём мире...
Нужно было выгребать и записывать данные из/в MS Access Database - до сих пор работает.
Но мы работали без драйвера, через CWADO
Кажется был какой-то пример работы с ADO (Source, без шаблонов), от которого и оттолкнулись ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
IMAGE-BLOB-IMAGE...
Для начала предлагаю в структуре файла ADO блоб описать не как BLOB вне RECORD, а как оч. длинную STRING (не CSTRING конечно) внутри RECORD.
С уважением, ДП
IMAGE-BLOB-IMAGE...
Так... А дальше? Опять select from?
И я не понимаю, почему АДОшный драйвер не цепляет базу, просто вообще не обращается к ней. Через рекордсеты без вопросов - криэйтим, указываем коннект, связываем с полями или группой и делаем выборку. В этом случае в стринг выбирается какой-то огрызок из блоба, хрен знает что (извините). Поэтому хотелось через file добраться, как говорится, бЛоб в бЛоб. А не выходит!!!
И я не понимаю, почему АДОшный драйвер не цепляет базу, просто вообще не обращается к ней. Через рекордсеты без вопросов - криэйтим, указываем коннект, связываем с полями или группой и делаем выборку. В этом случае в стринг выбирается какой-то огрызок из блоба, хрен знает что (извините). Поэтому хотелось через file добраться, как говорится, бЛоб в бЛоб. А не выходит!!!
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
IMAGE-BLOB-IMAGE...
ну это понятно, ты ж сам сказал, что
вот на первом нуле и обрезает.Скуловская табличка в словаре вообще как-то через ж.у отображена: вместо blob почему-то cstring на 4 мегабайта...
С уважением, ДП
IMAGE-BLOB-IMAGE...
Т.е. имеет смысл обьявить в группе четырехмегабайтную строчку? не cstring, а string? и в блоб ее
blob[0 : len(clip(grp:string))] = grp:string???
blob[0 : len(clip(grp:string))] = grp:string???
-------------------------------
В истинном золоте блеска нет...
В истинном золоте блеска нет...