Sql Serverda gruplama sorunu

ASMET67

Altın Üye
Katılım
8 Haziran 2007
Mesajlar
410
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
30-11-2027
Exlden SQL severe göndermiş olduğum sorguda aynı verileri grouplamaya çalıtığımda kayıt seti bos geliyor. Ama sorgu içerisinden Group by ifadesini çıkarttığımızda sorgu mükerrer kayıtlarla geliyor. aynı sekilde DISTINCT ile denediğimde sorgu boş geliyor. DISTINCT kaldırdığımda sorgu çalışıyor.
Buton altında kullandığım kon ve fonksiyon kodları aşağıdaki. Yardımlarınız için teşekkürler


Kod:
Private Sub Magaza()
Dim Conn As ADODB.Connection, datarec, tb_rec As ADODB.Recordset
Dim Yol As String
Dim s1 As Worksheet
Me.FrListe.Left = 80
Me.FrListe.Top = 90
veritabani = "LOGISTIC"
tablename = "[Magaza_Liste]"
'FROM         [dbo].[Magaza_Liste]
FROM = veritabani & ".[dbo]." & tablename
Sorgu = "SELECT   count(Id) as SayId, InfologNo,Infolog_Magaza_Adi From " & FROM & " Where Id<>0 "
If Me.OptDepoMagazasi = True Then Sorgu = Sorgu & " And DepoInfolgoNo=" & Val(DepoNumarasi)
If Me.OptDepo = True Then Sorgu = Sorgu & " And Tip='" & Me.OptDepo.Caption & "'"
If Me.OptExpres = True Then Sorgu = Sorgu & " And Tip='" & Me.OptExpres.Caption & "'"
If Me.OPtHiper = True Then Sorgu = Sorgu & " And Tip='" & Me.OPtHiper.Caption & "'"
If Me.TxtBul.Value <> "" Then Sorgu = Sorgu & " And Infolog_Magaza_Adi Like'%" & Me.TxtBul.Value & "%'"
Sorgu = Sorgu & " GROUP BY InfologNo , Infolog_Magaza_Adi"
'
Sorgu = Sorgu & " ORDER BY Infolog_Magaza_Adi"
MsgBox Sorgu
'Cells(1, 1) = Sorgu
Call LWDoldur(Me.ListView3, LWSutunAdi, Sorgu)
End Sub
Kod:
Sub LWDoldur(LWAdi As MSForms.Control, Baslik, Sorgu As Variant)
 
Dim Satir, Sutun As Long
Dim Bagm As ADODB.Connection
Dim KSm As ADODB.Recordset
Dim strConn As String, stsql As String
Dim gen As Long
 
Dim password As String
Dim user As String
Dim servername As String
Dim veritabani As String
'On Error Resume Next
veritabani = "LOGISTIC"
servername = "**.**.**.**"
user = **
password = "**"
Set Bagm = New ADODB.Connection
Set KSm = New ADODB.Recordset
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & servername & ";INITIAL CATALOG=" & veritabani & ";"
strConn = strConn & "UID=" & user & ";PWD=" & password
Bagm.Open strConn
LWAdi.ListItems.Clear
With LWAdi
    On Error Resume Next
    KSm.Close
    On Error GoTo 0
'    MsgBox Sorgu
    KSm.Open Sorgu, Bagm, 1, 3 '= Bagm.Execute(Sorgu)
       gen = 0
        If Not KSm.EOF Then
           .ColumnHeaders.Clear
            For Sutun = 0 To KSm.Fields.Count - 1
'              Agen = .Width
'              BGen = Agen * Ksm.Fields.Count
 
              If Sutun = 0 Then
                .ColumnHeaders.Add , , KSm(Sutun).Name, 50
               Else
                gen = (.Width - 65)
               gen = gen / (KSm.Fields.Count - 1)
                .ColumnHeaders.Add , , KSm(Sutun).Name, gen
               End If
 
            Next
 
                LWAdi.ListItems.Clear
            For Satir = 0 To KSm.RecordCount - 1
                   On Error Resume Next
                    For Sutun = 0 To KSm.Fields.Count - 1
                        If Sutun = 0 Then
             '            s1.Cells(no, "e").Value = KSm(sutun)
                            .ListItems.Add , , KSm(Sutun)
                        Else
                         On Error Resume Next
                     ' stn = stn + 1
            '            s1.Cells(no, stn).Value = KSm(sutun)
                          .ListItems(Satir + 1).SubItems(Sutun) = KSm(Sutun)
                          '  No = KSm(0)
                        End If
                       On Error GoTo 0
 
 
                    Next
                   '  No = No + 1
                KSm.MoveNext
                Next
        End If
Bagm.Close
Set KSm = Nothing
Set Bagm = Nothing
End With
 
End Sub
 

ASMET67

Altın Üye
Katılım
8 Haziran 2007
Mesajlar
410
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
30-11-2027
Herhangi bir çözüm önerisi olan varmı
 

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
Sorgunuz doğru görünüyor. Bir de, group by kullanıldığında distinct kullanımı gereksizidir; çünkü group by ile gruplama istediğinizde bu kendiliğinden yapılır. (Mantık olarak da bunu gerektirir)
 

ASMET67

Altın Üye
Katılım
8 Haziran 2007
Mesajlar
410
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
30-11-2027
Zeki bey teşekkurler ilginiz için.

Gorup ve DISTINCT ayrı ayrı kullanıyorum. İkisindede bos geliyordu ama sorunumu çözdum

Aşağıdaki kodu
Kod:
 KSm.Open Sorgu, Bagm, 1, 3 '= Bagm.Execute(Sorgu)
bu şekilde yapınca record set satır sayısı veriyor. Arasındaki farkı anlamadım. Bilginiz varsa analatabilirmisiniz.
Kod:
 KSm.Open Sorgu, Bagm, 3, 1 '= Bagm.Execute(Sorgu)
 
Üst