![]() |
Jpg resimlerinin sql tablosuna aktarımı |
Post Reply
|
| Author | |
gündeniz
Yeni Üye
Joined: 26 Ekim 2006 Location: Turkey Status: Offline Points: 22 |
Post Options
Thanks(0)
Quote Reply
Topic: Jpg resimlerinin sql tablosuna aktarımıPosted: 09 Mart 2007 at 18:00 |
|
Sizden aşağıda açıklamaya çalıştığım konu hakkında yardım rica ediyorum.
Amacımız Mikro programında "stok kartında" tanımlı olan stokların resimlerini jpg formatıyla kayıtlı olan
klasörden alıp stok kartı içine kayıt etmek.
Normal şartlarda biz mikro iiçinde stok tablosunda resim bölümünü sağ tıklayıp resim yolunu gösterip resmi ekleyebiliyoruz.
Fakat şimdi 15 bin stok kalemi var ve biz bunları tek tek yapmaya çalıştığımızda çok zaman alacak bizim de bir an önce
resimleri mikro içine almamız gerekiyor..
Acaba sql den bununla ilgili bir çözüm varmıdır?
Stok resimlerimiz bir klasörün için stokkodu.jpg formatıyla kayıtlı,
Örneğin; Biz 1234567.jpg formatıyla kayıtlı olan bir resmi sql de 1234567 koduyla kayıtlı olan stoğun resim sütununa gönderebilirmiyiz.
İyi günler.
|
|
![]() |
|
LuiSchiffer
Senior Member
Joined: 13 Ekim 2004 Location: Turkey Status: Offline Points: 1332 |
Post Options
Thanks(0)
Quote Reply
Posted: 10 Mart 2007 at 02:25 |
|
Arada kazık sorular iyi oluyor ... :)
mye_ImageData tablosuna bakarsanız Data alanının "image" tipinde olduğunu göreceksiniz. Bu da (malesef) veri BMP olarak tutuluyor demek. SQL 7'de TextCopy (bcp'ye benzer) bir yardımcı program vardı, SQL2005'de yokmuş :( O olsaydı, tek bir komut satırı işiyle halletmek mümkün olurdu. Belki SQL2005'de bcp'ye eklenmiştir ama incelemedim. Neyse..
Aşağıdaki örnek tek bir parametre alır (Kayıt nosu). 14. satırdaki klasör adı yerine sizdeki dosyalar neredeyse onu yazmalısınız.
SQL içinde JPG dosyayı BMP'ye dönüştürmeyi hiç denemedim doğrusu. Aşağıdaki kod en azından fikir verecektir. Alan tipi image yerine blob olsaydı, SQL içinden "OLE Automation" kullanarak yapmak da mümkün olurdu.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].LoadBMPFromFile') and OBJECTPROPERTY(id, N'IsProcedure') = 1) DROP PROCEDURE LoadBMPFromFile;GO CREATE PROCEDURE LoadBMPFromFile @RecNo intAS Begin DECLARE @KlasorAdi varchar(255)DECLARE @FileName varchar(255)DECLARE @SqlStatement nvarchar(MAX)CREATE TABLE #BlobData(BlobData varbinary(max))Set @KlasorAdi = 'C:\'Set @FileName = @KlasorAdi + LTrim(Str(@RecNo)) + '.BMP'SET @SqlStatement = N' INSERT INTO #BlobData SELECT BlobData.* FROM OPENROWSET(BULK ''' + @FileName + ''',SINGLE_BLOB) BlobData' EXEC sp_executesql @SqlStatementInsert Into mye_ImageData (TableID, RecID_DBCno, RecID_RECno) Values (13,0,@RecNo)UPDATE mye_ImageDataSET Data = (SELECT BlobData FROM #BlobData)WHERE (TableID = 13) And (RecID_DBCno = 0) And (RecID_RECno = @RecNo)DROP TABLE #BlobDataEnd GO Kullanımı :
Exec LoadBMPFromFile 1234567 |
|
![]() |
|
gündeniz
Yeni Üye
Joined: 26 Ekim 2006 Location: Turkey Status: Offline Points: 22 |
Post Options
Thanks(0)
Quote Reply
Posted: 10 Mart 2007 at 14:47 |
|
Zaman ayırıp cevapladığın için teşekkürler. Sql konusunda Fazla bilgim olmadığından yazdıklarını anlayamadım,senden konuyu basite indirip anlatmanı rica ederim.Yani benim ne yapmam gerekiyor yukarıdaki verilerle!
İyi günler.
|
|
![]() |
|
LuiSchiffer
Senior Member
Joined: 13 Ekim 2004 Location: Turkey Status: Offline Points: 1332 |
Post Options
Thanks(0)
Quote Reply
Posted: 10 Mart 2007 at 21:03 |
|
TextCopy dışında bildiğim en basit yol bu :)
Birara bakıp SQL2000 - SQL2005 muadili neymiş öğrenirsem buraya yazarım..
|
|
![]() |
|
Guests
Misafir
|
Post Options
Thanks(0)
Quote Reply
Posted: 27 Nisan 2007 at 14:19 |
|
--aşağıda yazılı komutlar MS Sql 2005 de test edilmiştir bmp uzantılı resim dosyalarınızı topluca aktarır -- !... bu işlemleri uygulamadan önce mutlaka database yedeğini alın ...! --not stok kodları ile dosya adının aynı olması gereklidir. --öncelikle resim arşivinizin bmp resim formatına çevirmeniz gerekli bunun için --http://www.gold-software.com/download296.html adresinden convert programının demosunu indirip --bilgisayarınıza kurmanız gerekli programın kullanması kolay klasör içerisindeki tüm dosyalarınızı --bmp formatına çok kısa bir süre içerisinde topluca çevirmenizi sağlıyor bu konuda yardım istiyorsanız [email protected] adresine mail gönderebilirsiniz -- C:\Mikro\v12xx\ klasörü altında "stokresimleri" --isminde bir klasör oluşturup buraya kopyalayın ve daha sonra aşağıdaki kodları Management Studio da çalıştırınız CREATE TABLE #dosya( dosyaadi nvarchar(200) COLLATE Turkish_CI_AS null)CREATE TABLE #data( id int,dbno int,REC nvarchar(20) COLLATE Turkish_CI_AS null,DATA image,)--geçici tablolarımızı oluşturduk INSERT INTO dbo.#dosya exec ('master..xp_cmdshell "dir C:\Mikro\v12xx\stokresimleri\*.bmp /B"')--oluşturduğumuz geçici tabloya C:\Mikro\v12xx\stokresimleri\ klasöründeki bmp uzantılı dosyaların adını yazdırdık --not yukarıdaki komut satırında hata mesajı ile karşılaşıyorsanız xp_cmdshell sistem prosedürünün aktif olmadığı anlamına geliyor
--bu konuda yardım istiyorsanız mail gönderebilirsiniz. DECLARE ali_aslan CURSOR FORselect substring(dosyaadi,1,CHARINDEX('.',dosyaadi)-1) as [dosya],(SELECT sto_RECno from dbo.STOKLAR where sto_kod=substring(dosyaadi,1,CHARINDEX('.',dosyaadi)-1)) as [REC] from #dosya where dosyaadi is not nullDECLARE @dosya varchar(50),@REC int,@executes varchar(500),@dosyaadi varchar(200)OPEN ali_aslanFETCH NEXT FROM ali_aslan INTO @dosya,@RECWHILE @@FETCH_STATUS =0BEGIN if(@REC is not null) begin set @dosyaadi='c:\Mikro\v12xx\stokresimleri\'+@dosya+'.bmp' SET @executes = N'SELECT 13 as [Tableid],0 as [dbno],'+Convert(varchar,(@REC))+'as [REC],BulkColumn as [Bmp] FROM OPENROWSET (BULK ''' + @dosyaadi + ''',SINGLE_BLOB) as datatransfer' INSERT INTO dbo.#data execute (@executes) --daha önce bu stok için seçilmiş bir resim varsa siliyoruz delete dbo.mye_ImageData where TableID=13 and RecID_DBCno=0 and RecID_RECno=@REC INSERT INTO dbo.mye_ImageData Select id,dbno,Convert(int,REC),DATA from #data where REC=Convert(varchar,@REC) end FETCH NEXT FROM ali_aslan INTO @dosya,@RECEND CLOSE ali_aslanDEALLOCATE ali_aslan--kodları kısaltmak ve performans artışı sağlamak size kalmış drop table #dosyadrop table #data |
|
![]() |
|
tansu
Senior Member
Joined: 17 Temmuz 2010 Location: İzmir Status: Offline Points: 475 |
Post Options
Thanks(0)
Quote Reply
Posted: 17 Ocak 2020 at 19:36 |
|
Personel fotoları da burada mı? Table ID kaç oluyor?
|
|
![]() |
|
mikro_ogreniyorum
Yeni Üye
Joined: 31 Ocak 2021 Status: Offline Points: 28 |
Post Options
Thanks(0)
Quote Reply
Posted: 12 Nisan 2022 at 12:31 |
|
Merhabalar ;
Sql Koduyla zevkine uğraşmak dışında bilginiz yok ise karıştırabilirsiniz. (099635) numaralı Resim Aktarma kartından Aktarabilirsiniz. Sadece Excel kullanmanız yeterli. https://prnt.sc/GZjTLgja4ixE |
|
![]() |
|
Post Reply
|
|
| Tweet |
| Forum Jump | Forum Permissions ![]() You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |