Skip to main content

AccessTr.neT


Liste kutusunda Aynı Kişiye Ait Verileri Yan Yana Yazdırma

Liste kutusunda Aynı Kişiye Ait Verileri Yan Yana Yazdırma

Çözüldü #1
Sayın hocalarım
srg_aboneler sorgusundan alt form yerine Liste kutusu oluşturdum.
Yalnız burada Listede veya alt formda Musterı adının çift yazılması yerine 
Abone adının,Gelecektarihini Tek yazamazmıyız ?
Ayrıca alt formda yer alan verilerin gelecektarih bu gün ise,bu tarihten bir gün önce listelemesi ve uyarı msj.vermesini sağlamak mümkünmü.

Saygılarımla.
.rar FA.ÇİFTLİK-Sld.rar (Dosya Boyutu: 203,3 KB | İndirme Sayısı: 22)
Cevapla
#2
F_GIRIS isimli formdaki Liste kutusunda aynı kişiye ait 2 satır olmasının sebebi, bu kişiye ait 2 farklı ürün olması. 1. satırda tavuk, 2. satırda yumurta listeleniyor.

Tek veri olmasını istiyorsanız liste kutusundan bu sütunları kaldırmalısın.
"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#3
Sayın Ozan hocam,
Haklısınız 2 çeşit ürün var,benimde takıldığım nokta bu,Şöyle bişey olamazmı ürünleri vede miktarları yan yana yazamazmıyız.

Saygılarımla.
Cevapla
#4
Konu başlığı Değiştirilmiştir.

Yeni sorgu oluştur, Sql koduna aşağıdakileri yaz

Visual Basic Code
 SELECT srg_aboneler.MUSTERIADI, srg_aboneler.fark, srg_aboneler.sonsiparistarihi, srg_aboneler.gelecektarih, srg_aboneler.MUSTERIDURUM, ConcatRelated("URUNADI & ' (' &ortalama & ')'","srg_aboneler") AS urunleri
FROM srg_aboneler
GROUP BY srg_aboneler.MUSTERIADI, srg_aboneler.fark, srg_aboneler.sonsiparistarihi, srg_aboneler.gelecektarih, srg_aboneler.MUSTERIDURUM, ConcatRelated("URUNADI & ' (' &ortalama & ')'","srg_aboneler");



yeni modül oluştur, aşağıdakileri yaz.

Visual Basic Code
Option Compare Database

Public Function ConcatRelated(strField As String, _
    strTable As String, _
    Optional strWhere As String, _
    Optional strOrderBy As String, _
    Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
 
    Dim rs As DAO.Recordset
    Dim rsMV As DAO.Recordset
    Dim strSql As String
    Dim strOut As String
    Dim lngLen As Long
    Dim bIsMultiValue As Boolean
    
  
    ConcatRelated = Null
 
    strSql = "SELECT " & strField & " FROM " & strTable
    If strWhere <> vbNullString Then
        strSql = strSql & " WHERE " & strWhere
    End If
    If strOrderBy <> vbNullString Then
        strSql = strSql & " ORDER BY " & strOrderBy
    End If
    Set rs = DBEngine(0)(0).OpenRecordset(strSql, dbOpenDynaset)
 
    bIsMultiValue = (rs(0).Type > 100)

    Do While Not rs.EOF
        If bIsMultiValue Then
            'For multi-valued field, loop through the values
            Set rsMV = rs(0).Value
            Do While Not rsMV.EOF
                If Not IsNull(rsMV(0)) Then
                    strOut = strOut & rsMV(0) & strSeparator
                End If
                rsMV.MoveNext
            Loop
            Set rsMV = Nothing
        ElseIf Not IsNull(rs(0)) Then
            strOut = strOut & rs(0) & strSeparator
        End If
        rs.MoveNext
    Loop
    rs.Close
    
    'Return the string without the trailing separator.
    lngLen = Len(strOut) - Len(strSeparator)
    If lngLen > 0 Then
        ConcatRelated = Left(strOut, lngLen)
    End If

Exit_Handler:
    'Clean up
    Set rsMV = Nothing
    Set rs = Nothing
    Exit Function

Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConcatRelated()"
    Resume Exit_Handler
End Function


Formdaki liste kutusunun satır kaynağını yeni sorgu olacak şekilde düzenle

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#5
Sayın Ozan hocam,
Cevabınız ve emeğiniz için sonsuz teşekkürler.

Saygılarımla.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task