IMAGE-BLOB-IMAGE...

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Всем большое здравствуйте.
Нержиданно всплыла старая проблема с гонянием блоб-полей из MSSQL в TPS и наоборот. А также запихивание и выгрузка на диск вордовских документов. Поиск по форуму показывает обсуждения пяти-шестилетней давности, а прогресс идет (ну или должен идти) вперед (по теории даже в кларике). Так вот. Кларион 8рка. MSSQL2008. Соединение вроде как через адо. Но не важно, можно наверное файл с любым драйвером обьявить.
Кларион без сторонних библиотек.
Надо:
1. Из скула регулярно выгружать табличку в тпс. В табличке поле Image.
2. Эту же табличку загружать обратно.
3. Офисные документы doc и xls загружать в Image поля на MSSQL и время от времени некоторые выгружать обратно на диск.
По быстрому все эти вопросы решить не удалось. До этого кларик со скулом не пользовали. Прошу отозваться, как дело обстоит с этими вещами в восьмерке, и как это сделать просто и эффективно?
Повторю, Кларик без сторонних библиотек. И не планируется.
Заранее спс.
-------------------------------
В истинном золоте блеска нет...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Дед Пахом »

а чего, prop:handle не работает?
С уважением, ДП
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

И {prop:size}? неа, с полпинка не завелось. Скуловская табличка в словаре вообще как-то через ж.у отображена: вместо blob почему-то cstring на 4 мегабайта...
-------------------------------
В истинном золоте блеска нет...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

IMAGE-BLOB-IMAGE...

Сообщение kreator »

А в чём, собственно, затык? 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. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Дед Пахом »

kreator писал(а): Вот как документ в Image загнать?
С какой-то версии в cwutil появились функции BlobToFile/FileToBlob.
С уважением, ДП
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Yufil »

1. Опять свой класс CSTR рекламирую :)

S Cstr
...
S.LoadFromFile('File.doc')
S.SaveToBlob(Table:BlobField)

2. У Blob был флажок Binary. Он включен ?
3. В ABC классы настолько умные, что при изменении в файле ТОЛЬКО Blob-поля запись не считается изменившейся. В силу чего простой Update может быть тихо проигнорирован. Поле DateTime с текущим временем, изменяющимся при каждой перезаписи, вполне уместно...
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Повторю, более детально проблема (если будет, конечно) будет изучена в понедельник. Пока хотелось бы, чтобы время зря не терять получить некий вектор деятельности. То есть, не понятно, почему image в ДСТ трансформировался в cstring. Это как-то связано с вышеупомянутой галочкой? И еще. Отображать задача пока не стоит, задача гонять из скула в тпс и наоборот. И документы тоже! В ТПСе файл читался тупо порциями и писался в блоб. Может и тут так?
Драйвер ADO. Если припрет, конечно, можно локально обьявить в проге нужную табличку с любым другим драйвером, лишь бы все туда-сюда гонялось. Только как коннект получать?
-------------------------------
В истинном золоте блеска нет...
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Как и ожидалось, возникли дебиловатые проблемы. Не исключаю, что из-за тупости автора данного сообщения. Но общие правила написания программы командой никто не отменял. Раз сказали АДО - значит, нАДО АДО.

Вопчем, сымпортировал таблицу в словарь. Выставил ей драйвер 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 не прокатывает, селектится какаято хрень. Может опять же по причине роста рук из другого места.

Люди, поможите если можете...
-------------------------------
В истинном золоте блеска нет...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Дед Пахом »

подозреваю, что ты один в Clarion через ADO работаешь. Может даже во всём мире...
С уважением, ДП
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Я тоже это подозреваю, но комплексовать по этому поводу не буду, ибо идиотизЬма не моя. Но! возможность есть, и шаблоны есть, и прочая кухня наличествует. С радостью бы не стал такой х.ней заниматься, но...
-------------------------------
В истинном золоте блеска нет...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

IMAGE-BLOB-IMAGE...

Сообщение Игорь Столяров »

Дед Пахом писал(а):подозреваю, что ты один в Clarion через ADO работаешь. Может даже во всём мире...
Тогда как минимум нас двое ... ;) давно делали задачу на еще C63 через ADO.
Нужно было выгребать и записывать данные из/в MS Access Database - до сих пор работает.
Но мы работали без драйвера, через CWADO
Кажется был какой-то пример работы с ADO (Source, без шаблонов), от которого и оттолкнулись ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Дед Пахом »

Для начала предлагаю в структуре файла ADO блоб описать не как BLOB вне RECORD, а как оч. длинную STRING (не CSTRING конечно) внутри RECORD.
С уважением, ДП
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Так... А дальше? Опять select from?
И я не понимаю, почему АДОшный драйвер не цепляет базу, просто вообще не обращается к ней. Через рекордсеты без вопросов - криэйтим, указываем коннект, связываем с полями или группой и делаем выборку. В этом случае в стринг выбирается какой-то огрызок из блоба, хрен знает что (извините). Поэтому хотелось через file добраться, как говорится, бЛоб в бЛоб. А не выходит!!!
-------------------------------
В истинном золоте блеска нет...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

IMAGE-BLOB-IMAGE...

Сообщение Дед Пахом »

Aragorn писал(а): какой-то огрызок из блоба
ну это понятно, ты ж сам сказал, что
Скуловская табличка в словаре вообще как-то через ж.у отображена: вместо blob почему-то cstring на 4 мегабайта...
вот на первом нуле и обрезает.
С уважением, ДП
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

IMAGE-BLOB-IMAGE...

Сообщение Aragorn »

Т.е. имеет смысл обьявить в группе четырехмегабайтную строчку? не cstring, а string? и в блоб ее

blob[0 : len(clip(grp:string))] = grp:string???
-------------------------------
В истинном золоте блеска нет...
Ответить