Mikro Yazılım Homepage
Forum Home Forum Home > Mikro Ürünleri ile ilgili Forumlar > ERP Programları
  New Posts New Posts RSS Feed - Jpg resimlerinin sql tablosuna aktarımı
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Jpg resimlerinin sql tablosuna aktarımı

 Post Reply Post Reply
Author
Message
gündeniz View Drop Down
Yeni Üye
Yeni Üye
Avatar

Joined: 26 Ekim 2006
Location: Turkey
Status: Offline
Points: 22
Post Options Post Options   Thanks (0) Thanks(0)   Quote gündeniz Quote  Post ReplyReply Direct Link To This Post 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.
Back to Top
LuiSchiffer View Drop Down
Senior Member
Senior Member
Avatar

Joined: 13 Ekim 2004
Location: Turkey
Status: Offline
Points: 1332
Post Options Post Options   Thanks (0) Thanks(0)   Quote LuiSchiffer Quote  Post ReplyReply Direct Link To This Post 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 int

AS

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 @SqlStatement

Insert Into mye_ImageData (TableID, RecID_DBCno, RecID_RECno) Values (13,0,@RecNo)

UPDATE mye_ImageData

SET Data = (SELECT BlobData FROM #BlobData)

WHERE (TableID = 13) And (RecID_DBCno = 0) And (RecID_RECno = @RecNo)

DROP TABLE #BlobData

End

GO

 
Kullanımı :
Exec LoadBMPFromFile 1234567
Back to Top
gündeniz View Drop Down
Yeni Üye
Yeni Üye
Avatar

Joined: 26 Ekim 2006
Location: Turkey
Status: Offline
Points: 22
Post Options Post Options   Thanks (0) Thanks(0)   Quote gündeniz Quote  Post ReplyReply Direct Link To This Post 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. 
Back to Top
LuiSchiffer View Drop Down
Senior Member
Senior Member
Avatar

Joined: 13 Ekim 2004
Location: Turkey
Status: Offline
Points: 1332
Post Options Post Options   Thanks (0) Thanks(0)   Quote LuiSchiffer Quote  Post ReplyReply Direct Link To This Post 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..
Back to Top
Guests View Drop Down
Misafir
Misafir
Post Options Post Options   Thanks (0) Thanks(0)   Quote Guests Quote  Post ReplyReply Direct Link To This Post 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 FOR

select 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 null

DECLARE @dosya varchar(50),@REC int,@executes varchar(500),@dosyaadi varchar(200)

OPEN ali_aslan

FETCH NEXT FROM ali_aslan INTO @dosya,@REC

WHILE @@FETCH_STATUS =0

BEGIN

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,@REC

END

CLOSE ali_aslan

DEALLOCATE ali_aslan

--kodları kısaltmak ve performans artışı sağlamak size kalmış

drop table #dosya

drop table #data

Back to Top
tansu View Drop Down
Senior Member
Senior Member
Avatar

Joined: 17 Temmuz 2010
Location: İzmir
Status: Offline
Points: 475
Post Options Post Options   Thanks (0) Thanks(0)   Quote tansu Quote  Post ReplyReply Direct Link To This Post Posted: 17 Ocak 2020 at 19:36
Personel fotoları da burada mı?
Table ID kaç oluyor?
Back to Top
mikro_ogreniyorum View Drop Down
Yeni Üye
Yeni Üye
Avatar

Joined: 31 Ocak 2021
Status: Offline
Points: 28
Post Options Post Options   Thanks (0) Thanks(0)   Quote mikro_ogreniyorum Quote  Post ReplyReply Direct Link To This Post 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


Back to Top
 Post Reply Post Reply

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.06
Copyright ©2001-2023 Web Wiz Ltd.

This page was generated in 0.609 seconds.