Sorgudan Sql İle Veri Çekme İşlemi Sırasında Hata Mesajı

1 2
26/09/2024, 16:21

truhi

Merhaba,
Ekte ekran görüntüsü görüneceği üzeri;
"tbl_Products" adlı tablodan, "qry_Products" adlında bir sorgu oluşturdum;
Bu sorguda Satış alanının verileri "tbl_Sales" adındaki diğer tablodan gelmektedir.

Sorgu Sql kodu:
SELECT tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi, Sum(tbl_Products.Miktar) AS ToplaMiktar, Sum(DSum("[Miktar]","tbl_Sales","[isEmri]=" & [ie])) AS Satis, [ToplaMiktar]-[Satis] AS Kalan
FROM tbl_Products
GROUP BY tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi;


buraya kadar bir sorun bulunmuyor,

Bu sorguya Excel' den Sql ile ulaşamaya çalışırken

Kod:
SQL = " SELECT * FROM qry_Reports"
RS.Open SQL, cn, 1, 3

sorgunuz toplama işlevinin bir parçası olarak belirtilen '[ToplaMiktar]-[Satis]' ifadesini içermiyor

şeklinde hata mesajı alıyorum.

Nasıl bir çözüm önerirsiniz,

desteğiniz için şimdiden teşekkürler,
iyi Çalışmalar.
26/09/2024, 18:36

atoykan

Sorgunuzu
SELECT Liman, UrunKod, UrunAdi, ToplaMiktar, Satis, (ToplaMiktar - Satis) AS Kalan
FROM (SELECT tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi,
Sum(tbl_Products.Miktar) AS ToplaMiktar,
Sum(DSum("[Miktar]","tbl_Sales","[isEmri]=" & [ie])) AS Satis
FROM tbl_Products
GROUP BY tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi) AS SubQuery;
şeklinde değiştirerek dener misiniz?
[ToplaMiktar]-[Satis] gibi hesaplamalar ile ifade alanları bazen sorun çıkarabilir çünkü bu alanları Excel doğru bir şekilde anlayamayabiliyor. Excel için daha anlaşılır olmasını teminen ToplaMiktar ve Satis hesaplamalarını ilk olarak ayrı bir alt sorgu içinde yaptırıp bu alt sorguyu yukarıdaki gibi ana sorgu içine alarak daha anlamlı bir ifade elde edilmesini sağlıyoruz. Bu sorgunuzu örneğin qry_ReportsNew gibi kaydederseniz
SQL = " SELECT * FROM qry_ReportsNew"
RS.Open SQL, cn, 1, 3
Excel'den çağırabilirsiniz veya eski sorgunuzun yerine kaydedip aynı ad ve kodla devam da edebilirsiniz.
26/09/2024, 22:15

truhi

(26/09/2024, 18:36)atoykan yazdı: Sorgunuzu
SELECT Liman, UrunKod, UrunAdi, ToplaMiktar, Satis, (ToplaMiktar - Satis) AS Kalan
FROM (SELECT tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi,
Sum(tbl_Products.Miktar) AS ToplaMiktar,
Sum(DSum("[Miktar]","tbl_Sales","[isEmri]=" & [ie])) AS Satis
FROM tbl_Products
GROUP BY tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi) AS SubQuery;
şeklinde değiştirerek dener misiniz?
[ToplaMiktar]-[Satis] gibi hesaplamalar ile ifade alanları bazen sorun çıkarabilir çünkü bu alanları Excel doğru bir şekilde anlayamayabiliyor. Excel için daha anlaşılır olmasını teminen ToplaMiktar ve Satis hesaplamalarını ilk olarak ayrı bir alt sorgu içinde yaptırıp bu alt sorguyu yukarıdaki gibi ana sorgu içine alarak daha anlamlı bir ifade elde edilmesini sağlıyoruz. Bu sorgunuzu örneğin qry_ReportsNew gibi kaydederseniz
SQL = " SELECT * FROM qry_ReportsNew"
RS.Open SQL, cn, 1, 3
Excel'den çağırabilirsiniz veya eski sorgunuzun yerine kaydedip aynı ad ve kodla devam da edebilirsiniz.

Teşekkürler Hocam
iyi ki varsınız;

Burada soracağım bir husus daha var,
Ekli ekran görüntüsünde ifade etmeye çalıştığım;

Hesaplanan Dsum formülü ile hesaplanan "Satis" Alanında biçimlendirme yapamıyorum;
bunun bir yöntemi var mıdır?

iyi Akşamlar.
26/09/2024, 22:55

truhi

(26/09/2024, 18:36)atoykan yazdı: Sorgunuzu
SELECT Liman, UrunKod, UrunAdi, ToplaMiktar, Satis, (ToplaMiktar - Satis) AS Kalan
FROM (SELECT tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi,
Sum(tbl_Products.Miktar) AS ToplaMiktar,
Sum(DSum("[Miktar]","tbl_Sales","[isEmri]=" & [ie])) AS Satis
FROM tbl_Products
GROUP BY tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi) AS SubQuery;
şeklinde değiştirerek dener misiniz?
[ToplaMiktar]-[Satis] gibi hesaplamalar ile ifade alanları bazen sorun çıkarabilir çünkü bu alanları Excel doğru bir şekilde anlayamayabiliyor. Excel için daha anlaşılır olmasını teminen ToplaMiktar ve Satis hesaplamalarını ilk olarak ayrı bir alt sorgu içinde yaptırıp bu alt sorguyu yukarıdaki gibi ana sorgu içine alarak daha anlamlı bir ifade elde edilmesini sağlıyoruz. Bu sorgunuzu örneğin qry_ReportsNew gibi kaydederseniz
SQL = " SELECT * FROM qry_ReportsNew"
RS.Open SQL, cn, 1, 3
Excel'den çağırabilirsiniz veya eski sorgunuzun yerine kaydedip aynı ad ve kodla devam da edebilirsiniz.

Hocam tekrar merhaba,
Burada Satis alanında uygun değerler bulunamadığı zaman boş olarak geliyor, satis alanı boş gelinde Kalan da boş geliyor,
Kalan da boş yerine ToplaMiktar alanına eşit değerin gelmesi için nasıl bir düzenleme yapaılabilir?

(ToplaMiktar - Satis) AS Kalan

tekrar teşekkürleri
iyi akşamlar.
26/09/2024, 23:06

atoykan

DSum alanlarınız hesaplanan alan bunun sonucu da default olarak string döner. Bu alanlar için CInt, CDbl, CCur gibi fonksiyonlarla dönüştürme işlemi yapmanız gerekir. Uygun değer bulunması bulunmaması durumlarına göre NZ fonksiyonu veya mantıksal sınama IIF fonksiyonu gibi yardımcılar kullanabilirsiniz.
27/09/2024, 13:46

truhi

(26/09/2024, 23:06)atoykan yazdı: DSum alanlarınız hesaplanan alan bunun sonucu da default olarak string döner. Bu alanlar için CInt, CDbl, CCur gibi fonksiyonlarla dönüştürme işlemi yapmanız gerekir. Uygun değer bulunması bulunmaması durumlarına göre NZ fonksiyonu veya mantıksal sınama IIF fonksiyonu gibi yardımcılar kullanabilirsiniz.

Hocam merhaba,

Aşağıdaki gibi formülün başına cdbl ekleyeince boş olanlara #Hata sonucunu döndürüyor,
bunun farklı bir çözümü olabilir mi?

Kod:
SELECT SubQuery.Liman, SubQuery.UrunKod, SubQuery.UrunAdi, SubQuery.ToplaMiktar, SubQuery.Satis, (ToplaMiktar-Satis) AS Kalan
FROM (SELECT tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi, Sum(tbl_Products.Miktar) AS ToplaMiktar, cdbl(DSum("[Miktar]","tbl_Sales","[Liman]='" & [Liman] & "' And [UrunKod]='" & [UrunKod] & "'")) AS Satis FROM tbl_Products GROUP BY tbl_Products.Liman, tbl_Products.UrunKod, tbl_Products.UrunAdi)  AS SubQuery;

teşekkürler,
iyi çalışmalar.
1 2