| imho.ws | 
![]()  | 
	
		 
 
 | 
| 
			
			 | 
		# 1 | 
| 
			
			 Junior Member 
			
			
			
				
			
			Регистрация: 10.10.2003 
				Адрес: Москва 
				
				
				
					Сообщения: 136
				 
				
				![]() ![]() ![]() ![]()  | 
	
	
	
		
		
			
			 
				
				MS SQL. Builder6. Вставка картинки в базу
			 
			
			
			Дурацкий вопрос, но никак не могу допереть. Есть картинка. Я её умею перетаскивать в объект типа TField, но как потом это поле передать в базу используя ADOQuery? Я попробовал сначала получить нужную строку из базы, потом запихал в ADOQuery->Fields->FieldByName("Photo")  картинку загрузкой из потока. А что дальше? Вызывал метод Post(), но потом глюки при попытке просмотра лезут. Чё делать? Можно ли как-то передать данные с того же потока в параметр sql запроса? В смысле в конструкцию UPDATE Base SET Photo=параметр WHERE ID=n запихать параметром данные с картинкой. Впервые столкнулся с проблемой и туплю нещадно.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	"Самое великое достижение Америки - каждый должен голосовать". - Джордж Буш Мл.(Остин, 08.12.00).  | 
| 
		 | 
	
	
| 
			
			 | 
		# 3 | 
| 
			
			 Advanced Member 
			
			
			
				
			
			Регистрация: 09.03.2004 
				Адрес: толстозадая Москва 
				
				
				
					Сообщения: 498
				 
				
				![]() ![]() ![]() ![]()  | 
	
	
	
		
		
		
		 
			
			общий алгоритм: 
		
		
		
		
		
		
			если картинка из файла - открываем файл бинарным (блоб) потоком и запихиваем через какую-либо буферную переменную в блоб филд в бд... если картинка на канве то все не так просто, тут все зависит от того что за картинка (формат) у тя, т.к. помимо сканлайнсов тебе еще нужно сторить карту цветов, т.к. это битмапа в конечно счете.... думаю проще встроеными средствами сохранить во временный файлик и залить его как в первом случае.... а глюки могут быть - это надо дебажить... проверь как у тебя определен филд... 
				__________________ 
		
		
		
		
	В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах  | 
| 
		 | 
	
	
| 
			
			 | 
		# 4 | |
| 
			
			 Junior Member 
			
			
			
				
			
			Регистрация: 10.10.2003 
				Адрес: Москва 
				
				
				
					Сообщения: 136
				 
				
				![]() ![]() ![]() ![]()  | 
	
	
	
		
		
		
		 Цитата: 
	
 
				__________________ 
		
		
		
		
	"Самое великое достижение Америки - каждый должен голосовать". - Джордж Буш Мл.(Остин, 08.12.00).  | 
|
| 
		 | 
	
	
| 
			
			 | 
		# 5 | 
| 
			
			 Advanced Member 
			
			
			
				
			
			Регистрация: 09.03.2004 
				Адрес: толстозадая Москва 
				
				
				
					Сообщения: 498
				 
				
				![]() ![]() ![]() ![]()  | 
	
	
	
		
		
		
		 
			
			да нет вроде... там все как обычно должно быть... я когда то давно делал вне нормально и без гемороев... единственное что траблы могут появиться с окончанием потока, т.е. если у тебя размерность разная буфера и файла самого... т.е. на пример буфер у тебя жестко 256 байт а файл у тя к примеру 514, то это надо ручками отслеживать... буфер динамический должен быть по идее... отсюда и картинка сбивается и прочие глюки 
		
		
		
		
		
		
			ты по пробуй по дебажить на каком нить маленьком файлике то что у тебя считывается и то что в итоге подсовывается в запрос... 
				__________________ 
		
		
		
		
		
			В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах Последний раз редактировалось /7y3uK; 26.04.2005 в 12:05.  | 
| 
		 | 
	
	
| 
			
			 | 
		# 6 | 
| 
			
			 Junior Member 
			
			
			
				
			
			Регистрация: 10.10.2003 
				Адрес: Москва 
				
				
				
					Сообщения: 136
				 
				
				![]() ![]() ![]() ![]()  | 
	
	
	
		
		
		
		 
			
			Фуф, вроде сделал. На самом деле, задача была перенести фотки из бде-шной базы на сервер. Но на данный момент их нужно было просто пару запихать туда для демонстрации другой проги. Я и геммороился с запихиванием картинок из всяких левых источников, как то файл или клипборд. В итоге сделал утилиту, которая из старой базы в новую переносит данные, там все получилось быстро из без проблем с потоками и т.п. Сделал выборку в обеих базах, если в новой нет записи, то всем полям выбранной записи присваиваюстя поля записи из старой базы и делается Post(). Может и не очень хорошо пост юзать, но перенести надо всего сотни три записей.  
		
		
		
		
		
		
			Кстати, ещё вопрос, может кто знает. У меня в проге создается в рантайме объект TADOQueryб присваивается ссылка на него datasource-у, а на тот зацеплен TDBImage. В рантайме же свойству DataField присваивается значение "Photo", т.е. имя поля с фотографией... Но при выборе записи вылетает ошибка: "Field 'Photo' not found'". Запрос делается типа "SELECT * FROM Base" и т.д. Поле это там точно есть. И не пустое даже. Вот торможу то. Я после одно запроса делал через тот же объек запрос к другой базе с другим набором полей, а картинка то все равно пыталась читаться из него... Всем спасибо. Вопрос снят. 
				__________________ 
		
		
		
		
		
			"Самое великое достижение Америки - каждый должен голосовать". - Джордж Буш Мл.(Остин, 08.12.00). Последний раз редактировалось TRiPLE; 26.04.2005 в 12:51. Причина: наврал с типом ошибки  | 
| 
		 | 
	
	
| 
			
			 | 
		# 7 | |
| 
			
			 Guest 
			
			
			
			
					Сообщения: n/a
				 
				
				 | 
	
	
	
		
		
		
		 Цитата: 
	
 TBlobField(FieldByName('Photo')).LoadFromStream(); Но это если не с SQL Serverом работаешь, ну типа для BDE  | 
|