Skip to main content

AccessTr.neT


Sorgunun tabloya başvurmadan istenilen sayıda satır üretmesi münkün mü?

Sorgunun tabloya başvurmadan istenilen sayıda satır üretmesi münkün mü?

Çözüldü #2
Merhaba arkadaşlar,
Yukarıdaki sorumun çözümünü buldum.

Problemin çözümünde epey bir süre önce forumdan indirdiğim bir uygulamadaki yöntemi kullandım. Bu uygulama kredi ödeme planı oluşturuyordu. O uygulamayı foruma kimin yüklediğini hatırlamıyorum, yalnızca yükleyen arkadaşın yabancı sitelerden bulduğu bir uygulama olduğunu hatırlıyorum.

Çözümü ekteki örneğim üzerinden anlatayım.

Sorumun başlığında "tabloya başvurmadan" diye belirtmiştim ama tabii ki -SQL'in temelleri gereği- bir tablo ve esas sorgumuzun başvuracağı bir sorgu hazırlayarak çözdüm. Ekteki örneğimde Rakamlar isimli bir tablo oluşturdum ve içeriğine 0'dan 9'a kadar rakamları girdim. Sonra SrgSayilar isimli bir sorgu hazırladım. Bu sorgu Rakamlar tablosuna başvuruyor ve 999'a kadar sayı üretiyordu. Sql cümlesi şöyledir:

SELECT (Rakamlar.Rakam+(Rakamlar1.Rakam*10)+(Rakamlar2.Rakam*100)) AS Sayilar
FROM Rakamlar, Rakamlar AS Rakamlar1, Rakamlar AS Rakamlar2
ORDER BY (Rakamlar.Rakam+(Rakamlar1.Rakam*10)+(Rakamlar2.Rakam*100));

Bu sorgudaki SELECT kısmını şöyle yazarak, örneğin 99'a kadar sayı üretmek mümkün:

SELECT (Rakamlar.Rakam+(Rakamlar1.Rakam*10)) AS Sayilar

Yukarıdaki sorumda ilk sütundaki değerlerin üst sınırının oluşturduğum bir functiondan dönecek değer olacağını söylemiştim. Sorgunun diğer sütunlarınında functionlardan oluşacağını, bu functionların, ilk sütundaki değerleri alarak bunlar üzerinde işlem yapacağını söylemiştim.

Buna göre Vba kısmına basit functionlar (4 adet) oluşturdum. Bu functionları tamamen örnek oluşturmak için yazdım. Gerçek uygulamamda kullandıklarım biraz daha karmaşıktır. İlk function sınır değeri belirliyor. Diğerleri de kendilerine gönderilen değerleri basit çarpma işlemi yaparak sonuç döndürüyorlar. SrgEsasSorgu adını verdiğim sorgunun Sql cümlesi şöyle:

SELECT SrgSayilar.Sayilar, SayiCarp(SrgSayilar.Sayilar), SayiCarp1(SrgSayilar.Sayilar), SayiCarp2(SrgSayilar.Sayilar)
FROM SrgSayilar
WHERE SrgSayilar.Sayilar BETWEEN 0 AND SinirDeger()
ORDER BY SrgSayilar.Sayilar;

İşte böyle. Forumda dursun ki ihtiyacı olanlar kullanabilsin.
Saygılarımla...

.rar SQLOrnek.rar (Dosya Boyutu: 14,19 KB | İndirme Sayısı: 3)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Cvp: Sorgunun tabloya başvurmadan istenilen sayıda satır üretmesi münkün mü? - Yazar: WiniFred - 07/10/2012, 19:55
Task