• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel Sql Sorgu Hata

Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Merhaba ;

Bu kodum Çalışıyor.
Kod:
Call BaglanDB

portws.ComboBox1.Column = bgln.Execute("select distinct seg1 from kalip").GetRows

Set bgln = Nothing

Ama bu kodum çalışmıyor

Kod:
Call BaglanDB

'Set a = con.Execute(sorgu)
portws.ComboBox2.Column = bgln.Execute("select distinct [seg2] from ( select [seg2] from [kalip]  WHERE [seg1] = '" & portws.ComboBox1.Value & "') ").GetRows

Set bgln = Nothing

"incorrect syntax near hatası alıyorum

Yardımlarınızı bekliyorum
 
Derived table, yani parantez içindeki ifadeye alias eklenmemiş... Veri tablosu yapısını bilmiyoruz ama gereksiz gibi görünüyor. Stabil kod akışı için recordset'in boş olup olmadığını kontrol ettikten sonra GetRows metod çağrımını tavsiye ederim.

Kolay gelsin...

.
 
Zeki bey iç sorguda matematiksel bir işlem yapılmadığı için alias ifadesi olmadan devam edilemez mi?
 
Son düzenleme:
Anladım.

Kod:
"select distinct seg2 from kalip  WHERE seg1 = '" & portws.ComboBox1.Value & "'"

ile

Kod:
"select distinct [seg2] from ( select [seg2] from [kalip]  WHERE [seg1] = '" & portws.ComboBox1.Value & "') ")

arasında fark var mı ?

ilkinde çalıştı. sizin açıklamanızdan sonra Derived Table anladım. birinci koda dönüştürdüm

SQL EXPRESS kullanıyorum

Kod:
CREATE TABLE kalip (
    kalipno INT PRIMARY KEY IDENTITY (1, 1),



    seg1 VARCHAR (50),
    seg2 VARCHAR (50),
    seg3 VARCHAR (50),
         segadi VARCHAR (50),
    turkak VARCHAR (50),
    yerinde VARCHAR (50),
    arakod VARCHAR (50),
    kapakolc VARCHAR (50),
    sayfaolc VARCHAR (50),
    belirsizlik VARCHAR (50),
    sayfa VARCHAR (50),
    metod VARCHAR (max),
    yontem VARCHAR (max),
    cihaz VARCHAR (50),
    kalimza VARCHAR (50),
    onimza VARCHAR (50),
    ref1 VARCHAR (50),
    ref2 VARCHAR (50),
    ref3 VARCHAR (50),
    ref4 VARCHAR (50),
 
    
);
Teşekkürler
 
@hlojan, Tek tablodan tekil değerleri almak için parantezli ifade kullanmak, sunucuya gereksiz yere ek kaynak kullanımı yaptırır. Büyük verilerle çalışıldığında performansı olumsuz etkiler. Eğer bu şekilde kullanım her ne sebeple olursa zorunluysa aşağıdaki gibi kullanabiliriz.

Yanlış hatırlamıyorsam M$ Sql Server' da alias tanımlama da AS sözcüğü zorunlu değil. Ancak, Jet Sql veritabanı (Access, Excel) için zorunludur.

Ek olarak, tekile düşürmenin diğer bir yolu da GROUP BY deyimidir.

SQL:
select distinct drv.[seg2]
from (
  select [seg2]
  from [kalip]
  where [seg1] = '........'
) as drv


.
 
Teşekkürler Zeki Bey değerli bilgileriniz için...
 
Geri
Üst