Excel Sql Sorgu Hata

Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
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
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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...

.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,642
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Zeki bey iç sorguda matematiksel bir işlem yapılmadığı için alias ifadesi olmadan devam edilemez mi?
 
Son düzenleme:
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
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
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
@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

.
 
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Teşekkürler Zeki Bey değerli bilgileriniz için...
 
Üst