Forum
Stok kart resimlerinin klasörünü nebimde tanımladım. Resim adını elle girdiğimde resim görüntüleniyor. Fakat model güncellemelerinden dolayı sürekli resim dosyalarının isimlerini stok kartlarına tek tek tanıtmak zaman alıyor. Stok kart adı ile stok resim adı aynı ise otomatik olarak winnerdaki stoğa güncelleme yapma imkanı var mı?
Merhaba Abdullah bey,
Söylemiş olduğunuz işlem için gerekli olan sql aşağıdadır...
declare @BaslangicModel char(20)
declare @BitisModel char(20)
declare @ResimDosyasiUzantisi char(4)
set @BaslangicModel = ''
set @BitisModel = 'zzzzzzz'
set @ResimDosyasiUzantisi = '.jpg'
update tbstokresim
set sResimAdi = rtrim(ltrim(sModel)) + @ResimDosyasiUzantisi
where sModel between @BaslangicModel and @BitisModel
insert into tbstokresim
select distinct sModel , rtrim(ltrim(sModel)) + @ResimDosyasiUzantisi , 'sa' , getdate()
from tbStok
where not exists ( select * from tbStokResim where sModel = tbStok.sModel )
and sModel between @BaslangicModel and @BitisModel
go
Yazdığınız kodu çalıştırdım. 0 row(s) affected mesajını veriyor. Sonuç alamadım. Stok resimlerinin olduğu klasör isminin kodda geçmesi gerekli mi? eksik birşey mi yapıyorum acaba
Model sınırlamasını değiştirmiştim o yüzden çalışmıyormuş. Sizin gönderdiğinizi direk çalıştırdım çalıştı fakat şöyle bir sorunum var. Stok kart adı ile resim adının eşleşmesi gerekirken resim adını model kodları ile eşleştirme yapmaya çalıştı...
Merhaba;
Sql model koduna bakıyor sizede tavsiyem resim isimlerini model kodu ile eşit tutmanız çünkü model kodu unique alan olduğu için asla isim çakışması olmaz.
Şu an mevcutta isimle kayıt ettiğim 2900 adet resim var. Bu durumda çok daha büyük bir iş yükünün altına girmem gerekecek... İsimle ilgili sql de kesinlikle işlem yapma şansımız yok mudur?
Merhaba;
Şöyle bişey yazdım fakat test etmeye fırsat bulamadım. sadece insert yazdım.
yedek alıp denermisiniz!!!
declare @BaslangicModel char(20)
declare @BitisModel char(20)
declare @ResimDosyasiUzantisi char(4)
set @BaslangicModel = ''
set @BitisModel = 'zzzzzzz'
set @ResimDosyasiUzantisi = '.jpg'
insert into tbstokresim
select distinct tbstok.sModel , rtrim(ltrim(tbstok.saciklama)) + @ResimDosyasiUzantisi , 'sa' , getdate()
from tbStok
where not exists ( select * from tbStokResim , tbstok where tbstokresim.sModel = tbStok.sModel
)
and sModel between @BaslangicModel and @BitisModel
go
0 Row(s) affected sonucu veriyor. Sadece insert kodu var diye resmi olmayan yeni bir stok açtım, resim dosyasını aynı isimle verip öyle çalıştırdım ama olmadı...
Merhaba;
Burada test edermisiniz.
declare @BaslangicModel char(20)
declare @BitisModel char(20)
declare @ResimDosyasiUzantisi char(4)
set @BaslangicModel = ''
set @BitisModel = 'zzzzzzz'
set @ResimDosyasiUzantisi = '.jpg'
update tbstokresim
set sResimAdi = rtrim(ltrim(tbstok.saciklama)) + @ResimDosyasiUzantisi
from tbStok,tbstokresim
where tbstokresim.sModel = tbStok.sModel
and tbStokresim.sModel between @BaslangicModel and @BitisModel
insert into tbstokresim
select distinct sModel , rtrim(ltrim(tbstok.saciklama)) + @ResimDosyasiUzantisi , 'sa' , getdate()
from tbStok
where not exists ( select * from tbStokResim where sModel = tbStok.sModel )
and sModel between @BaslangicModel and @BitisModel
go
İlginiz için çok teşekkürler... Deneme veritabanında sonuç verdi fakat şu an kullandığım veritabanında çalıştırdığımda
(4310 row(s) affected)
Server: Msg 242, Level 16, State 3, Procedure UpdTrigauStokResim, Line 9
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.
hatasını verdi. Hatanın nerden kaynaklandığını bulamadım..
tarih formatından kaynaklanıyor sql in başına
set dateformat dmy
ekleyerek çalışıtırırmısınız.
Teşekkürler kod çalıştı tam aradığım şey... Hatice hanım ilginiz için özellikle teşekkür edeyim. Kodu Query Analyzerden çalıştırıyorum. Uygulamanın kolaylığı için bir kısayol oluşturup çalıştırmayı nasıl yapabilirim.
Mümkün sql e bir job tanıtırsınız. Job içinde command alanına bu sql yapıştırın istediğiniz zaman aralığını schedules içinde tanımlayın.
Tavsiyem geceleri 1 kez çalışması.
iyi çalışmalar dilerim.
İsteklerimi yapmama yardımcı olan, ilgilenen, düşünen herkese teşekkürler.. İstediğim şeyi tam olarak başardım...
Tekrar merhabalar;
Kullanımda şöyle bir sıkıntım oldu. Bazen yeni ürünler fotoğraf çekilmesi atlanabiliyor. Bunu kontrol ederken dosya isimlerine bakarak yapıyordum. Fakat şimdi bütün stok kartlarında dosya ismi olmasına rağmen fotoğraf olmayabiliyor. Bunun kontrolü için Fotoğrafların olduğu klasörde aynı isimli dosya yoksa isim ataması yapmasa diye düşündüm. Şartla yapmaya çalıştım fakat başaramadım. Yardımcı olabilirseniz sevinirim.
Merhaba;
Bende yapamam 🙁
çünkü ben dosya var mı yokmu kontrolü yapmıyor sanırım yapılamazda.. Ezbere tabloya ismi stok adından alıp yazıyorum.
iyi çalışmalar.
Merhaba,
Malesef Hatice Hn'ın dediği gibi sql içeirisinde böyle bir kontrol yok.
Alternatif çözüm önerisi olarak;
Sql çalıştırıldıktan sonra,Destek --> Stok -->Stok Resim Dosyaları Bakım bölümünde Stok Kartında Tanımlı Fakat Resim Dizininde Bulunmayan Dosya İsimleri seçeneğini seçerek Tüm bu kayıtları silebilirsiniz.
Sonrasında ise Stok modülünden kartlardan döküm alıp, küçük filtrede Resmi olmayanlar der iseniz istediğiniz kayıtlara ulaşabilirsiniz.
Dediğiniz şekilde döküm alıyorum. Her defasında bunu yapmadan çözüm olabilir mi diye düşünmüştüm... Çok büyük problem değil.. teşekkürler ilginiz için... Kafama takıldığı için soruyorum, destek bölümünde yaptığımız işlemi bizim kodlara entegre etme şansımız yok mu?
Tekrar merhaba... Başka bir veritabanında bu işlemi denediğimde şu şekilde bir hata alıyorum. Yardımcı olabilir misiniz?
Violation of PRIMARY KEY constraint 'PK_tbstokResim_2D7CBDC4'. Cannot insert duplicate key in object 'tbStokResim'. The statement has been terminated.