logo
Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
maytas  
#1 Gönderildi : 4 Aralık 2014 Perşembe 05:44:06(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

5 Kere Teşekkür Etti.
2 Mesajına Toplam 2 Kere Teşekkür Edildi.
[img]null[/img]Yine başıma gelen bir olayla ilgili soru soracağım.

Elimizde id, kumas_kodu, renk, mt alanlarından oluşan bir tablo mevcut.
Daha kolay anlaşılsın diye örnek veri girişi de yapayım.

id- kumas_kodu- renk- mt
1- A1- Beyaz- 10
2- A2- Sarı- 10
3- A3- Siyah- 10
4- A4- Siyah- 10
5- A5- Beyaz- 10
6- A6- Sarı- 10
7- A7- Beyaz- 10
8- A8- Beyaz- 10
9- A9- Siyah- 10

Buna nasıl bir sorgu oluşturalım ki aşağıdaki gibi bir sonuç alalım:

[img]UserPostedImage[/img]

Renkler standart değil, yani ben üstteki tabloda sadece 3 renk belirttim, ama gerçekte bir sürü renk belirtilebilir, sınır yok.
Benim elimde böyle bir Access çalışması vardı ve ben üstteki tablonun altındaki liste şeklinde raporunu hazırlamam gerekiyordu.
Yani üstteki tabloda veri olarak girilen renkler raporda sütun başlığı olarak gösterilmesi gerekiyordu.
Düşündüm, taşındım ve bunun ancak VBA kodlamayla mümkün olabileceğine kannat getirdim ve sorunu öyle çözdüm.
El elden üstün olduğu tezine dayanarak belki bu konuda çok pratik bir çözüm önerisi olan da çıkabilir.
Sizce bunun farklı bir çözümü olabilir mi?

Düzenle Kullanıcı Tarafından 4 Aralık 2014 Perşembe 05:56:38(UTC)  | Sebep: Sebep Bildirilmesi

diaboli  
#2 Gönderildi : 5 Aralık 2014 Cuma 02:12:39(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Hocam farklı bir çözüm derken sql server için mi kast ediyorsunuz? Mehmet hocam daha iyi bilir ama benim bildiğim kadarıyla sql'de tanımladığınız değişkeni tabloya kolon ismi olarak atamazsın bu da normal tablo ile yapılamıyacağı anlamına geliyor fakat temp tablo oluşturup triggerla bu sorunu çözebilirsiniz gibi düşünüyorum eğer sorunuz sql server hakkında ise..
maytas  
#3 Gönderildi : 5 Aralık 2014 Cuma 11:28:45(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

5 Kere Teşekkür Etti.
2 Mesajına Toplam 2 Kere Teşekkür Edildi.
Originally Posted by: diaboli Go to Quoted Post
Hocam farklı bir çözüm derken sql server için mi kast ediyorsunuz? Mehmet hocam daha iyi bilir ama benim bildiğim kadarıyla sql'de tanımladığınız değişkeni tabloya kolon ismi olarak atamazsın bu da normal tablo ile yapılamıyacağı anlamına geliyor fakat temp tablo oluşturup triggerla bu sorunu çözebilirsiniz gibi düşünüyorum eğer sorunuz sql server hakkında ise..


Doğrudur, sayın diaboli,sorum SQL Server'le ilgili.
Ben Access'te üstte bahsettiğim gibi dinamik olarak VBA kodlarla çözdüm.
Bana da SQL Server'de temp tablolarla çözülebilir gibi geldi,ama tam olarak nasıl.
Yine de Mehmet Zeki üstadın görüşünü de merak ediyorum.
diaboli  
#4 Gönderildi : 5 Aralık 2014 Cuma 19:26:39(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Dun saat gec olmasaydi ben hazirlayacaktim.biseyler ama malum bugun is vardi is yerindeyim hala su an eve gecince tekrar bakicam hocam kusura bakmayin gecikme icin
diaboli  
#5 Gönderildi : 6 Aralık 2014 Cumartesi 00:48:02(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Hocam bakabildim sql için şöyle bir şey hazırladım

öncelikle bir temp tablo oluşturdum
CREATE TABLE #Kumas2
(
[id] [int] IDENTITY(1,1) NOT NULL,
[KumasKodu] [nvarchar](20) NULL,
)

sonrasında bir trigger yazdım oda şöyle ki

Create trigger dbo.RenkEkle
ON dbo.Kumas
AFTER INSERT
AS
BEGIN
DECLARE @RENK NVARCHAR(20),
@KumasKodu nvarchar(20)
SELECT @RENK = RENK,@KumasKodu=kumas_kodu FROM inserted

if (select count(*) from Kumas where renk = @renk) > 1
begin
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)')
end
else
begin
exec( 'ALTER TABLE #Kumas2 ADD ' + @renk + ' nvarchar(10) NULL')
INSERT INTO #Kumas2(KumasKodu) values (10)
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)')
END
END

Sonrasında değerleri insert ettiğinizde temp tablo dolucak. sanırım bu şekilde idi isteğiniz Ha bu arada farklı yolu yordamı varsa Mehmet Hocamdan bende merak ediyorum açıkçası Saygılarımla
diaboli  
#6 Gönderildi : 6 Aralık 2014 Cumartesi 00:50:11(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
bu arada kod işinize yarar da anlamadığınız yerler olur ise isteğinize göre aşama aşama anlatabilirim Kolay gelsin
thanks diaboli: 1 Kişi mesajın için Teşekkür Etti.
mehmetzekikir 7.12.2014(UTC) tarihinde
diaboli  
#7 Gönderildi : 6 Aralık 2014 Cumartesi 00:56:13(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
kodda biraz eklikler vardı hocam düzelttim kusura bakmayın kafa yorgun olunca

alter trigger dbo.RenkEkle
ON dbo.Kumas
AFTER INSERT
AS
BEGIN
DECLARE @RENK NVARCHAR(20),
@KumasKodu nvarchar(20)
SELECT @RENK = RENK,@KumasKodu=kumas_kodu FROM inserted

if (select count(*) from Kumas where renk = @renk) > 1
begin
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)')
INSERT INTO #Kumas2(KumasType) values (@kumaskodu)
end
else
begin
exec( 'ALTER TABLE #Kumas2 ADD ' + @renk + ' nvarchar(10) NULL')
INSERT INTO #Kumas2(KumasType) values (@kumaskodu)
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)')
END
END
thanks diaboli: 1 Kişi mesajın için Teşekkür Etti.
mehmetzekikir 7.12.2014(UTC) tarihinde
maytas  
#8 Gönderildi : 6 Aralık 2014 Cumartesi 02:44:39(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

5 Kere Teşekkür Etti.
2 Mesajına Toplam 2 Kere Teşekkür Edildi.
Sayın diaboli,Mehmet Zeki Hocanın derslerini henüz tamamalmadığım için bu kodları yorumlamam biraz zor.
Mümkünse buradaki mantığı açıklayabilir misiniz?
diaboli  
#9 Gönderildi : 6 Aralık 2014 Cumartesi 09:51:48(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Yani mantık olarak ise maytas hocam kumas tablosuna renk girildiğinde oluşturduğum temp tabloya girilen renk mevcutsa değerleri o renk kolonunun altına girmesini mevcut değilse girilen renk değeriyle bir kolon oluşturmasını ve yeni değerleri oraya girmesini sağladım ekleyeceğim kolon ve değer gireceğim kolon bir değişken olduğu için dinamik sql kullandım. Umarım yardımcı olabilmişimdir Saygılarımla

Create trigger dbo.RenkEkle
ON dbo.Kumas --burada triggerı hangi tabloda çalışacağını tanımladım
AFTER INSERT --kayıt eklendikten sonra çalışmalı
AS
BEGIN
DECLARE @RENK NVARCHAR(20), --renk ve kumaskodu değişkeni tanımladı
@KumasKodu nvarchar(20)
SELECT @RENK = RENK,@KumasKodu=kumas_kodu FROM inserted --renk ve kumas kodu değişkeni kumas tablosuna eklendiğinde

if (select count(*) from Kumas where renk = @renk) > 1 --burada kumas tablosundaki girilen rengi saydırdım yani kumas tablosunda renk zaten varsa ilgili kolonun altına yazmalı
begin
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)') --değer gireceğimiz kolon değişken olduğu için burada dinamik sql kullandım girilen rengin kolonuna 10 yazdırdım
INSERT INTO #Kumas2(KumasType) values (@kumaskodu) --burada Kumas Kodunu insertledim
end
else
begin
exec( 'ALTER TABLE #Kumas2 ADD ' + @renk + ' nvarchar(10) NULL') --koşul sağlanmazsa yani yeni girilen renk, renk kolonunda yoksa yeni bir kolon oluşmalı burası da yine dinamik sql'le çünkü ekleyeceğim kolon bir değişken
INSERT INTO #Kumas2(KumasType) values (@kumaskodu) --aynı şekilde kumas kodunu insertledim
exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)') --yine burada da oluşan renk kolonuna giriceğimiz değeri insertledim siz bunu 10 vermiştiniz ama fark etmezdi değişken tanımlayıp girdiğiniz değeri de alabilirdiniz ben uğraşmadım siz 10 verdiğiniz için 10 insertledim
END
END

Düzenle Kullanıcı Tarafından 6 Aralık 2014 Cumartesi 09:56:58(UTC)  | Sebep: Sebep Bildirilmesi

thanks diaboli: 2 Kişi mesajın için Teşekkür Etti.
maytas 6.12.2014(UTC) tarihinde, mehmetzekikir 7.12.2014(UTC) tarihinde
maytas  
#10 Gönderildi : 6 Aralık 2014 Cumartesi 23:00:20(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

5 Kere Teşekkür Etti.
2 Mesajına Toplam 2 Kere Teşekkür Edildi.
Sayın diaboli, cevap için teşekkür ederim.
Mantığı sormamın sebebi Access'e uyarlanabilecek bir tarafı var mıdır diye, ama maalesef yok.
Bu aradayazmış olduğunuz kodlarınızın okunabilirliğini arttırmak için SQL Kod tagını kulandım:
Kod:
Create trigger dbo.RenkEkle
ON dbo.Kumas --burada triggerı hangi tabloda çalışacağını tanımladım
AFTER INSERT --kayıt eklendikten sonra çalışmalı
AS
	BEGIN
		DECLARE @RENK NVARCHAR(20), --renk ve kumaskodu değişkeni tanımladı
		@KumasKodu nvarchar(20)
		SELECT @RENK = RENK,@KumasKodu=kumas_kodu FROM inserted --renk ve kumas kodu değişkeni kumas tablosuna eklendiğinde

		if (select count(*) from Kumas where renk = @renk) > 1 --burada kumas tablosundaki girilen rengi saydırdım yani kumas tablosunda renk zaten varsa ilgili kolonun altına yazmalı
			begin
				exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)') --değer gireceğimiz kolon değişken olduğu için burada dinamik sql kullandım girilen rengin kolonuna 10 yazdırdım
				INSERT INTO #Kumas2(KumasKodu) values (@kumaskodu) --burada Kumas Kodunu insertledim
			end
		else
			begin
				exec( 'ALTER TABLE #Kumas2 ADD ' + @renk + ' nvarchar(10) NULL') --koşul sağlanmazsa yani yeni girilen renk, renk kolonunda yoksa yeni bir kolon oluşmalı burası da yine dinamik sql'le çünkü ekleyeceğim kolon bir değişken
				INSERT INTO #Kumas2(KumasKodu) values (@kumaskodu) --aynı şekilde kumas kodunu insertledim
				exec('insert into #Kumas2 ( '+ @renk + ' ) values (10)') --yine burada da oluşan renk kolonuna giriceğimiz değeri insertledim siz bunu 10 vermiştiniz ama fark etmezdi değişken tanımlayıp girdiğiniz değeri de alabilirdiniz ben uğraşmadım siz 10 verdiğiniz için 10 insertledim
			END
	END
thanks maytas: 1 Kişi mesajın için Teşekkür Etti.
mehmetzekikir 7.12.2014(UTC) tarihinde
mehmetzekikir  
#11 Gönderildi : 7 Aralık 2014 Pazar 15:48:14(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Originally Posted by: maytas Go to Quoted Post
[img]null[/img]Yine başıma gelen bir olayla ilgili soru soracağım.

Elimizde id, kumas_kodu, renk, mt alanlarından oluşan bir tablo mevcut.
Daha kolay anlaşılsın diye örnek veri girişi de yapayım.

id- kumas_kodu- renk- mt
1- A1- Beyaz- 10
2- A2- Sarı- 10
3- A3- Siyah- 10
4- A4- Siyah- 10
5- A5- Beyaz- 10
6- A6- Sarı- 10
7- A7- Beyaz- 10
8- A8- Beyaz- 10
9- A9- Siyah- 10

Buna nasıl bir sorgu oluşturalım ki aşağıdaki gibi bir sonuç alalım:

[img]UserPostedImage[/img]

Renkler standart değil, yani ben üstteki tabloda sadece 3 renk belirttim, ama gerçekte bir sürü renk belirtilebilir, sınır yok.
Benim elimde böyle bir Access çalışması vardı ve ben üstteki tablonun altındaki liste şeklinde raporunu hazırlamam gerekiyordu.
Yani üstteki tabloda veri olarak girilen renkler raporda sütun başlığı olarak gösterilmesi gerekiyordu.
Düşündüm, taşındım ve bunun ancak VBA kodlamayla mümkün olabileceğine kannat getirdim ve sorunu öyle çözdüm.
El elden üstün olduğu tezine dayanarak belki bu konuda çok pratik bir çözüm önerisi olan da çıkabilir.
Sizce bunun farklı bir çözümü olabilir mi?



Kusura bakmayın 3 gündür yoktum aşırı yoğundu ama diaboli arkadaş döktürmüş tebrikler
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
thanks mehmetzekikir: 1 Kişi mesajın için Teşekkür Etti.
diaboli 7.12.2014(UTC) tarihinde
maytas  
#12 Gönderildi : 7 Aralık 2014 Pazar 16:33:39(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

5 Kere Teşekkür Etti.
2 Mesajına Toplam 2 Kere Teşekkür Edildi.
Originally Posted by: mehmetzekikir Go to Quoted Post
Originally Posted by: maytas Go to Quoted Post
[img]null[/img]Yine başıma gelen bir olayla ilgili soru soracağım.

Elimizde id, kumas_kodu, renk, mt alanlarından oluşan bir tablo mevcut.
Daha kolay anlaşılsın diye örnek veri girişi de yapayım.

id- kumas_kodu- renk- mt
1- A1- Beyaz- 10
2- A2- Sarı- 10
3- A3- Siyah- 10
4- A4- Siyah- 10
5- A5- Beyaz- 10
6- A6- Sarı- 10
7- A7- Beyaz- 10
8- A8- Beyaz- 10
9- A9- Siyah- 10

Buna nasıl bir sorgu oluşturalım ki aşağıdaki gibi bir sonuç alalım:

[img]UserPostedImage[/img]

Renkler standart değil, yani ben üstteki tabloda sadece 3 renk belirttim, ama gerçekte bir sürü renk belirtilebilir, sınır yok.
Benim elimde böyle bir Access çalışması vardı ve ben üstteki tablonun altındaki liste şeklinde raporunu hazırlamam gerekiyordu.
Yani üstteki tabloda veri olarak girilen renkler raporda sütun başlığı olarak gösterilmesi gerekiyordu.
Düşündüm, taşındım ve bunun ancak VBA kodlamayla mümkün olabileceğine kannat getirdim ve sorunu öyle çözdüm.
El elden üstün olduğu tezine dayanarak belki bu konuda çok pratik bir çözüm önerisi olan da çıkabilir.
Sizce bunun farklı bir çözümü olabilir mi?



Kusura bakmayın 3 gündür yoktum aşırı yoğundu ama diaboli arkadaş döktürmüş tebrikler


Önemli değil, hocam. Geç olsun, güç olmasın :).
diaboli  
#13 Gönderildi : 7 Aralık 2014 Pazar 21:24:28(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Originally Posted by: mehmetzekikir Go to Quoted Post
Originally Posted by: maytas Go to Quoted Post
[img]null[/img]Yine başıma gelen bir olayla ilgili soru soracağım.

Elimizde id, kumas_kodu, renk, mt alanlarından oluşan bir tablo mevcut.
Daha kolay anlaşılsın diye örnek veri girişi de yapayım.

id- kumas_kodu- renk- mt
1- A1- Beyaz- 10
2- A2- Sarı- 10
3- A3- Siyah- 10
4- A4- Siyah- 10
5- A5- Beyaz- 10
6- A6- Sarı- 10
7- A7- Beyaz- 10
8- A8- Beyaz- 10
9- A9- Siyah- 10

Buna nasıl bir sorgu oluşturalım ki aşağıdaki gibi bir sonuç alalım:

[img]UserPostedImage[/img]

Renkler standart değil, yani ben üstteki tabloda sadece 3 renk belirttim, ama gerçekte bir sürü renk belirtilebilir, sınır yok.
Benim elimde böyle bir Access çalışması vardı ve ben üstteki tablonun altındaki liste şeklinde raporunu hazırlamam gerekiyordu.
Yani üstteki tabloda veri olarak girilen renkler raporda sütun başlığı olarak gösterilmesi gerekiyordu.
Düşündüm, taşındım ve bunun ancak VBA kodlamayla mümkün olabileceğine kannat getirdim ve sorunu öyle çözdüm.
El elden üstün olduğu tezine dayanarak belki bu konuda çok pratik bir çözüm önerisi olan da çıkabilir.
Sizce bunun farklı bir çözümü olabilir mi?



Kusura bakmayın 3 gündür yoktum aşırı yoğundu ama diaboli arkadaş döktürmüş tebrikler



Est. Mehmet Hocam sayenizde. Videolardaki faydalı eğitimleriniz sayesinde farkında olmadan bir şeyler öğreniyoruz galiba sorunlarla uğraştıkça fark ediyoruz.Allah razı olsun sizden.. Sağ olun, var olun,iyi ki varsınız...


Bu konudaki kullanıcılar
Guest (5)
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.