[VBA] SQL den Cektigim verinin SqlStr'si icinde IIF nasil kullanabilirim?
#1
Arkadaslar

1 - asagidaki kod icinde IIf(H.SIGN=1,H.AMOUNT,0) nasil kullanilirim,
2 - aslinda bunun yerine MBorc(Veri1,Veri2) seklinde bir kod hazirlamistim Bunu nasil Kullanabilirim ('Veri"ler rakam)
Visual Basic
  1. Private Sub Form_Open(Cancel As Integer)
  2. On Error Resume Next
  3. 'Dim cn As ADODB.Connection
  4. Dim rst As New ADODB.Recordset
  5. Set cn = New ADODB.Connection
  6.  
  7. cn.ConnectionString = strConnect
  8.  
  9. cn.Open "server=" & strServer & ";driver={SQL Server};database=" & strDatabase & ";TimeOut=1000;dsn=’’;", strUID, strPWD
  10. If cn.State = adStateOpen Then
  11. rst.CursorLocation = adUseClient
  12.  
  13. Dim Link As String
  14. Link = Forms!AnaMenu!Filitre.Form.SelectedList
  15.  
  16. Dim SqlTbl, SqlTbl2 As String
  17. SqlTbl = "LG_" & Link & "_01_" & "KSLINES H"
  18. SqlTbl2 = "LG_" & Link & "_KSCARD K"
  19.  
  20. Dim Kriter As String
  21. Kriter = " WHERE"
  22. Kriter = Kriter & " DATE_>='"
  23. Kriter = Kriter & AktifTarih
  24. Kriter = Kriter & "' AND DATE_<='"
  25. Kriter = Kriter & AktifTarih
  26. Kriter = Kriter & "' AND"
  27. Kriter = Kriter & " LINEEXP LIKE '%"
  28. Kriter = Kriter & AktifArama
  29. Kriter = Kriter & "%'"
  30.  
  31. SqlStr = "SELECT " & "K.NAME 'KASA', H.DATE_'TARIH', H.CUSTTITLE 'CARIHESAP', H.LINEEXP 'ACIKLAMA', IIf(H.SIGN=0,H.AMOUNT,0) 'BORC', IIf(H.SIGN=1,H.AMOUNT,0) 'ALACAK', H.SIGN 'ISLEMTURU'"
  32. SqlStr = SqlStr & " FROM "
  33. SqlStr = SqlStr & SqlTbl2
  34. SqlStr = SqlStr & " INNER JOIN "
  35. SqlStr = SqlStr & SqlTbl
  36. SqlStr = SqlStr & " ON K.LOGICALREF=H.CARDREF"
  37. SqlStr = SqlStr & Kriter
  38. SqlStr = SqlStr & " ORDER BY DATE_"
  39. Forms!AnaMenu!LabelProgram = SqlStr
  40. rst.Open SqlStr, cn, adOpenKeyset, adLockOptimistic
  41. Set Me.Recordset = rst
  42. Else
  43.  
  44. End If
  45. rst.Close
  46. cn.Close
  47. Set rst = Nothing
  48. Set cn = Nothing
  49. End Sub
  50.  
  51.  
  52. Private Sub Form_Unload(Cancel As Integer)
  53. 'Close the ADO connection we opened
  54. Dim cn As ADODB.Connection
  55. ' Set cn = Me.Recordset.ActiveConnection
  56. ' cn.Close
  57. Set cn = Nothing
  58. End Sub





  Alıntı
Bu mesajı beğenenler:
#2
Arkadaslar

Internette ararken buldugum bir yontem benim sikintimi simdilik cozdu... Sql STR yi asagidaki sekilde degistirdim... Case kullanarak yaptim.... ama case daha kompleks kullanilmak istersem nasil yapmaliyim?

Visual Basic
  1. ......
  2.  
  3. SqlStr = "SELECT " & _
  4. "K.NAME 'KASA', H.DATE_ 'TARIH', " & _
  5.   "H.CUSTTITLE 'CARIHESAP', H.LINEEXP 'ACIKLAMA', " & _
  6.   "(Case When H.SIGN=0 then H.AMOUNT else 0 End) 'BORC', " & _
  7.   "(Case When H.SIGN=1 then H.AMOUNT else 0 End) 'ALACAK', " & _
  8.   "H.SIGN 'ISLEMTURU'"
  9. SqlStr = SqlStr & " FROM "
  10. SqlStr = SqlStr & SqlTbl2
  11. SqlStr = SqlStr & " INNER JOIN "
  12. SqlStr = SqlStr & SqlTbl
  13. SqlStr = SqlStr & " ON K.LOGICALREF=H.CARDREF"
  14. SqlStr = SqlStr & Kriter
  15. SqlStr = SqlStr & " ORDER BY DATE_"
  16. ......



Eger asagidaki gibi bir case kullanmak istersem tek kolon icin nasil tanimlamaliyim


Visual Basic
  1. Public Function CHModul(Veri1 As Integer)
  2.  
  3. Select Case Veri1
  4. Case 1
  5. CHModul = ""
  6. Case 2
  7. CHModul = ""
  8. Case 3
  9. CHModul = ""
  10. Case 4
  11. CHModul = "Fatura"
  12. Case 5
  13. CHModul = "Virman"
  14. Case 6
  15. CHModul = ""
  16. Case 7
  17. CHModul = "Banka"
  18. Case 8
  19. CHModul = ""
  20. Case 9
  21. CHModul = ""
  22. Case 10
  23. CHModul = "Kasa"
  24.  
  25. End Select
  26. End Function





  Alıntı
Bu mesajı beğenenler:
#3
Merhaba..

Son sorunuzda amacınızı pek anlamadım ama amaç select case yapısını basitleştirmekse bu şekilde yapabilirsiniz..:

Visual Basic
  1. Select Case Veri1
  2. Case 1, 2, 3, 6, 8, 9
  3. CHModul = ""
  4. Case 4
  5. CHModul = "Fatura"
  6. Case 5
  7. CHModul = "Virman"
  8. Case 7
  9. CHModul = "Banka"
  10. Case 10
  11. CHModul = "Kasa"
  12. End Select





  Alıntı
Bu mesajı beğenenler:
#4
Sn Taruz

"(Case When H.SIGN=0 then H.AMOUNT else 0 End) 'BORC', "

yukardaki yapinin icine sizin yazdiginizi nasil tanimlaya bilirim?

sqlStr icine tanimladigim veri tek case tanimli bunun yerine sizin taniminizi yerlestirmek istiyorum




  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [SORGU] Kelime Içinde Geçen 2 3 4 Harfe Göre Veri Doldurma toros333 1 203 16-02-2026, 02:12
Son Mesaj: dsezgin
  [SORGU] Sorgu Ifadesi Içindeki Fonksiyon Ifade Içinde Kullanılamaz Hatası Mecnun24 7 661 27-08-2024, 16:53
Son Mesaj: Mecnun24
  [SORGU] List BoX'a Gelen Verinin Ismi Değil ıd'si Görünüyor TheREDROSE 4 503 11-07-2024, 10:17
Son Mesaj: TheREDROSE
  [FORM] form klasör içinde dosya kontrolü obaysal42 4 2.497 29-12-2023, 10:24
Son Mesaj: burhanb
  [SORGU] Sorgu icinde gruplama MuazTurkyilmaz 6 2.864 23-11-2023, 00:53
Son Mesaj: dsezgin
  Açılan Kutuda Değiştirilene Kadar Verinin Sabitlenmesi croww 4 504 07-07-2023, 18:00
Son Mesaj: croww
  [FORM] Içinde Başka Form Olan Formu Gizli Açma hedefkaya 8 817 27-03-2023, 17:05
Son Mesaj: hedefkaya
access-sql-7 Dao Içinde Alan Adını Değişken Olarak Tanımlama alperalper 1 483 02-03-2023, 12:29
Son Mesaj: alperalper

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi