• DİKKAT

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

SQL Cümlesinde Case End Kullanımı

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Merhaba,

DBASE veritanından veri çekerken aşağıdaki linkteki Case End karar yapısını kullanmaya çalışıyorum.

http://www.excel.web.tr/showthread.php?t=41041

Sanırım yanlış yaptığım bir yer var.Çünkü doğru bir sonuça bir türlü ulaşamadım.

Kod:
SQLStr = "SELECT PERSONEL.SİCİL,[B]CASE PERSONEL.SİCİL WHEN 100 THEN 'Yüz'  Else 'Hata' End AS DURUMU[/B],PERSONEL.ADI,PERSONEL.SOYADI,PERSONEL.GİRİŞ,HAREKET.TARIH,HAREKET.SAAT FROM PERSONEL,HAREKET WHERE PERSONEL.SİCİL=HAREKET.SİCİL"
 
Merhabalar

Sn.Ripek, Aşağıdaki gibi dener misiniz?

Kod:
SQLStr = "[COLOR=blue]SELECT[/COLOR] PERSONEL.SİCİL," _
              & "PERSONEL.ADI," _
              & "PERSONEL.SOYADI," _
              & "PERSONEL.GİRİŞ," _
              & "HAREKET.TARIH," _
              & "HAREKET.SAAT " _
                 & "[COLOR=blue]CASE[/COLOR] PERSONEL.SİCİL " _
                       & "[COLOR=blue]WHEN[/COLOR] 100 THEN 'Yüz' " _
                       & "[COLOR=blue]ELSE[/COLOR] 'Hata' " _
                 & "[COLOR=blue]END[/COLOR] " _
                 & "[COLOR=blue]AS[/COLOR] DURUMU, " _
              & "[COLOR=blue]FROM[/COLOR] PERSONEL,HAREKET " _
              & "[COLOR=blue]WHERE[/COLOR] PERSONEL.SİCİL=HAREKET.SİCİL"
 
Son düzenleme:
Merhaba,

DBASE veritanından veri çekerken aşağıdaki linkteki Case End karar yapısını kullanmaya çalışıyorum.

http://www.excel.web.tr/showthread.php?t=41041

Sanırım yanlış yaptığım bir yer var.Çünkü doğru bir sonuça bir türlü ulaşamadım.

Kod:
SQLStr = "SELECT PERSONEL.SİCİL,[B]CASE PERSONEL.SİCİL WHEN 100 THEN 'Yüz'  Else 'Hata' End AS DURUMU[/B],PERSONEL.ADI,PERSONEL.SOYADI,PERSONEL.GİRİŞ,HAREKET.TARIH,HAREKET.SAAT FROM PERSONEL,HAREKET WHERE PERSONEL.SİCİL=HAREKET.SİCİL"


Selam,

Başlıktaki yazıda Standart SQL demiştim. Şunu iyi bilmek gerekir ki, her veritabanı sisteminin tanıdığı SQL farklıdır.

Sözkonusu başlıkta Standart SQL derken Firebird için geçerli idi.

Büyük ihtimalle DBASE böyle bir karar yapısını tanımıyor. Malesef bu karar yapısı MS Jet SQL' da da yoktur.(Access)
 
Buna rağmen "IIF" kullanabileceğinizi tahmin ediyorum. Access'te kullanılabiliyor.
 
Maalesef olmadı.

Method 'Open' of object '_Recordset' failed hatası veriyor.

Kodlar aşağıdadır.

Kod:
SQLStr = "SELECT PERSONEL.SİCİL," _
              & "PERSONEL.ADI," _
              & "PERSONEL.SOYADI," _
              & "PERSONEL.GİRİŞ," _
              & "HAREKET.TARIH," _
              & "HAREKET.SAAT " _
                 & "CASE PERSONEL.SİCİL " _
                       & "WHEN 100 THEN 'Yüz' " _
                       & "ELSE 'Hata' " _
                 & "END " _
                 & "AS DURUMU, " _
              & "FROM PERSONEL,HAREKET " _
              & "WHERE PERSONEL.SİCİL=HAREKET.SİCİL"
 
Set Kayit1 = CreateObject("ADODB.Recordset")
    With Kayit1
        .ActiveConnection = Baglanti
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        .LockType = adLockOptimistic
        .Source = SQLStr
        .Open
    End With
 
Kod:
SQLStr = "SELECT PERSONEL.SİCİL," _
              & "PERSONEL.ADI," _
              & "PERSONEL.SOYADI," _
              & "PERSONEL.GİRİŞ," _
              & "HAREKET.TARIH," _
              & "HAREKET.SAAT, " _
                 & "iif (PERSONEL.SİCİL = 100, 'Yüz', 'Hata') " & _
                 & "AS DURUMU " _
              & "FROM PERSONEL,HAREKET " _
              & "WHERE PERSONEL.SİCİL=HAREKET.SİCİL"
 
Son düzenleme:
IIF fonksiyonu doğru çalışdı.Fakat Case yine çalışmadı.

Problem 100 sayısından kaynaklanıyor olabilir.Bu alan metin veya başka bir türde olduğu için hata verebilir.
 
çooooooooooooooook sağolun
 
Geri
Üst