Вернуться   Форум программистов > Форум Базы данных > Форум SQL Server

SQL Server

Программирование MS SQL Server

Ответ
 
Старый 27.11.2001, 20:41   #1
Alexey2002
Пользователь
 
Регистрация: 27.11.2001
Сообщений: 40
Alexey2002 пока не определено
По умолчанию тип поля 'Image' и VB

как содержимое поля с типом 'Image' показать в VB и затем вернуть другую картинку?
Alexey2002 вне форума  
Старый 01.12.2001, 23:59   #2
Delta
Местный
 
Регистрация: 05.10.2001
Сообщений: 139
Delta пока не определено
По умолчанию RE: тип поля 'Image' и VB

Считываешь в Recordset как есть (конкретно с картинкой не работал, но сохранял в базе содежимое файлов и восстанавливал). Поле image будет представлено полем DLongVarBinary, или что-то такое (в названии типа не уверен). Затем присваиваешь св-ву Picture (или ListImage) значение поля Recordset.

Может, присваивание напрямую не получиться - сейчас просто нет времени попробовать, но принцип такой. Можно попробовать через Clipboard, если присвоить напрямую не удасться.

Воткнуть в поле image данные можно, присвоив полю recordset описанного выше типа значение массива типа Bytе, где и содержиться необходимая информация (например, после считывания из файла). Затем просто Recordset.Update. Только: ADO при этом использует (сам смотрел под SQL Profiler) для занесения содержимого Recordset в базу некоррекную комманду типа:
Код
1
2
3
 
sp_executesql 'UPDATE <col> SET <col>=0x<HEXDIGIT>'
 
На месте <HEXDIGIT> стоит длиннующая строка - 16-ричное число, которое и представляет собой данные, которые нужно впихать в поле image и которые находятся в VB-массиве типа Byte. Это не есть хорошо, т.к. Microsoft рекомендует пользоваться функциями Writetext, Updatetext для работы с полями image и text. Кроме того, при длинных строках (более 2-3 млн. символов) этот метод сбивается. Поэтому (сам не пробовал этот вариант - руки не дошли), мне кажется, лучшим решением было бы создать в VB-коде SQL-комманду, которая содержала бы нужный код для функции Writetext (с декларацией TextPointer, т.д.) и строку-шестнадцатиричное представление данных которые нужно занести. Замет выполнить ее методом Execute объекта Connection, Recordset или Command, лучше Connection. Строку делать не более 100 символов длинной (организовать цикл).

Надеюсь, понятно объяснил. Это то, что ты спрашивал?
Delta вне форума  
Старый 03.12.2001, 19:45   #3
Alexey2002
Пользователь
 
Регистрация: 27.11.2001
Сообщений: 40
Alexey2002 пока не определено
По умолчанию RE: тип поля 'Image' и VB

Спасибо за ответ. Но что-бы избежать циклов я содержимое объекта PictureBox сохраняю в файл, потом читаю этот файл, и передаю как параметр на сервер, там уже соответственно сохраняю
Alexey2002 вне форума  
Старый 03.12.2001, 20:57   #4
Alexey2002
Пользователь
 
Регистрация: 27.11.2001
Сообщений: 40
Alexey2002 пока не определено
По умолчанию RE: тип поля 'Image' и VB

кстати как присвоить св-ву Picture (или ListImage) значение поля Recordset?
Alexey2002 вне форума  
Старый 03.12.2001, 21:45   #5
Delta
Местный
 
Регистрация: 05.10.2001
Сообщений: 139
Delta пока не определено
По умолчанию RE: тип поля 'Image' и VB

Ну, если ты сохраняешь результат в файл, то можно воспользоваться и функцией LoadPicture.

Что касается присваивания св-ву поля Recordset, попробую. Только пока времени нет.

Кстати, меня на твой вопрос навела жена, она MCP по SQL Server и иногда лазит сюда. Говорит мне, 'ты же когда-то делал что-то подобное, помоги человеку'.
Delta вне форума  
Старый 04.12.2001, 14:23   #6
Alexey2002
Пользователь
 
Регистрация: 27.11.2001
Сообщений: 40
Alexey2002 пока не определено
По умолчанию RE: тип поля 'Image' и VB

Будете в Киеве - угощение за мой счет.
Alexey2002 вне форума  
Старый 04.12.2001, 15:08   #7
Delta
Местный
 
Регистрация: 05.10.2001
Сообщений: 139
Delta пока не определено
По умолчанию RE: тип поля 'Image' и VB

Вы что серьезно?

Я вообще в Киеве живу. За приглашение спасибо (если оно мне адресовано), Вы лучше скажите: получилось у Вас то, что Вы хотели? Помогли ли Вам мои экперименты, которые я описал здесь?
Delta вне форума  
Старый 04.12.2001, 15:51   #8
Alexey2002
Пользователь
 
Регистрация: 27.11.2001
Сообщений: 40
Alexey2002 пока не определено
По умолчанию RE: тип поля 'Image' и VB

В принципе это был мой первый эксперимент по получению совета на форумах (до этого мне помогал восновном MSDN). Но общаться с людьми приятнее. Ваши советы мне помогли, может и я когда-нибудь на что-нибудь сгожусь.
Alexey2002 вне форума  
Старый 04.12.2001, 18:09   #9
Delta
Местный
 
Регистрация: 05.10.2001
Сообщений: 139
Delta пока не определено
По умолчанию RE: тип поля 'Image' и VB

А что, в MSDN есть интерактивная помощь, где можно задать вопрос типа 'Как связать два SQL Servera' через Интернет?

Мой первый вопрос к ним - как получить информацию из log-файла SQL Server. Какие транзакции, кто их делал и т.д..
Delta вне форума  
Ads
Ответ
Опции темы

Похожие темы
Тема Автор
Вопрос быстродействия SELECT. SQL Server
Есть таблица: 300 строк, 200 столбцов. Что быстрее. Выбрать SELECTом 300 строк сразу или выполнить 150 SELECTов, выбирая каждым SELECTом по 2 строки ?
AlexV0
SQL Server Еще один, не менее интересный вопрос быстродействия SELECT.
Два случая: а) Таблица состоит из 10000 строк,1 столбец. б) Таблица состоит из 5 строк,2000 столбцов. В каком случае будет работать быстрее, если требуется пробежаться по каждому столбцу...
AlexV0
Почему пользователи в ГРУППАХ не ВИДЯТ ТАБЛИЦ SQL Server
Проблема вот в чем - ГРУППА НЕ ВИДИТ ПОЛЬЗОВАТЕЛЬСКИЕ ТАБЛИЦЫ. Создал группу SQL_USERS в Windows 2000 Server (на сереве естественно работает SQLServer 7.0), добавил в нее пользователя User1,...
URFIN
взaимoдеъствие SQL Server
Здрaсте, пoмoгите кoму не ленъ. Нaшa фирмa сoбирaется перехoдитъ с SQLA нa MS SQL Мне нaдo прoтестирoвaтъ ее взaимoдеъствие с Autocad2002. Теперъ кoнкретнo вoпрoс: мoжет ли бaзa MS SQL...
Loh
SQL Server SQL Server не создает подключения
У меня стоит MS SQL Server 2000 + SP1 на Win2000 Server + SP2. Иногда, не могу понять в каких случаях, MS SQL вдруг начинает странно приглючивать - создание новых подключений длится очень долго, так...
michaelsmirnov
Параметрический запрос ! Помогите ! SQL Server
Пытаюсь выполнить параметрический запрос в дизайнере видов MSSQL 7.0 SELECT PaymentArchive.* FROM PaymentArchive WHERE YEAR = ? Выдает ошибку - parameters may not be used in this query type. Но...
Сергей Передерий



Текущее время: 11:48. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

Рейтинг@Mail.ru