Access raporunda program aracılığıyla yeni sütun oluşturma

Özgün KB numarası: 812719

Özet

Bu makalede, Access raporunda program aracılığıyla sütun oluşturma açıklanmaktadır. "Daha Fazla Bilgi" bölümünde açıklanan Yöntem 1 veya Yöntem 2'yi kullanarak sütunu rapora dinamik olarak ekleyebilirsiniz.

Not

Bu makaledeki örnek kodda Microsoft Veri Erişim Nesneleri kullanılmaktadır. Bu kodun düzgün çalışması için Microsoft DAO 3.6 Nesne Kitaplığı'na başvurmanız gerekir. Bunu yapmak için, Visual Basic Düzenleyici Araçlar menüsünde Başvurular'a tıklayın ve Microsoft DAO 3.6 Nesne Kitaplığı onay kutusunun seçili olduğundan emin olun.

Yöntem 1: Rapora Program Aracılığıyla Sütun Ekleme

Aşağıdaki örnekte program aracılığıyla bir Access raporunun nasıl oluşturulacağı gösterilmektedir. Kod, kayıt kaynağı sorgusunu temel alan bir rapor oluşturur. Oluşturulan rapor, Northwind.mdb örnek veritabanının Çalışanlar tablosunun Ad sütununu ve Soyadı sütununu görüntüler.

  1. Access'i başlatın.

  2. Yardım menüsünde Örnek Veritabanları'na ve ardından Northwind Örnek Veritabanı'na tıklayın. Göründüğünde Ana Geçiş Panosu formunu kapatın.

    Not

    Access 2007'de Şablon Kategorileri bölmesinde Örnek'e tıklayın, Northwind 2007'ye ve ardından İndir'e tıklayın.

  3. Sol bölmede Raporlar'a tıklayın.

    Not

    Access 2007'de bu adımı atlayın.

  4. Sağ bölmede Tasarım Görünümü'nde rapor oluştur'a çift tıklayın.

    Not

    Access 2007'de, Oluştur sekmesinin Raporlar grubunda RaporTasarımı'na tıklayın.

  5. Dosya menüsünde Kaydet'e tıklayın.

    Not

    Access 2007'de Microsoft Office Düğmesi'ne ve ardından Kaydet'e tıklayın.

  6. Farklı Kaydet iletişim kutusunda AccessColumnBuilder yazıp Tamam'a tıklayın.

  7. Raporu kapatın.

  8. Sol bölmede Formlar'ı seçin.

    Not

    Access 2007'de bu adımı atlayın.

  9. Sağ bölmede Tasarım Görünümü'nde Form oluştur'a çift tıklayın.

    Not

    Access 2007'de, Oluştur sekmesinin Formlar grubunda Form Tasarımı'na tıklayın.

  10. Forma bir komut düğmesi ekleyin.

    Not

    Access 2007'de, Tasarım sekmesinin Denetimler grubunda forma düğme eklemek için Düğme'ye tıklayın.

  11. Komut düğmesine sağ tıklayın, Olay Oluştur'a tıklayın, Oluşturucu Seç iletişim kutusunda Kod Oluşturucusu'na tıklayın ve ardından Tamam'a tıklayın.

  12. Komut düğmesinin OnClick olayına aşağıdaki kodu ekleyin:

    Dim txtNew As Access.TextBox
    Dim labNew As Access.Label
    Dim lngTop      As Long
    Dim lngLeft     As Long
    Dim lblCol    As  Long
    Dim rpt As Report
    Dim reportQuery As String
    Dim rs As DAO.Recordset
    Dim i As Integer
    Dim prevColwidth As long
    
    lngLeft = 0
    lngTop = 0
    
    ' Open the report to design.
    ' To make changes in the number of columns that appear at run time.
    
    DoCmd.OpenReport "AccessColumnBuilder", acViewDesign
    
    Set rpt = Reports![AccessColumnBuilder]
    
    ' Change the number of columns required as per your requirement.
    reportQuery = "SELECT FirstName, LastName FROM Employees"
    
    ' Open the recordset.
    Set rs = CodeDb().OpenRecordset(reportQuery)
    ' Assign the query as a record source to report control.
    rpt.RecordSource = reportQuery
    
    ' Set the value to zero so that the left margin is initialized.
    prevColwidth = 0
    lblCol = 0
    ' Print the page header for the report.
    For i = 0 To rs.Fields.Count - 1
    Set labNew = CreateReportControl(rpt.Name, acLabel, acPageHeader, _
      , rs.Fields(i).Name, lblcol, , , lngTop)
      labNew.SizeToFit
      lblCol = lblCol + 600 + labNew.Width
    Next
    
    ' Create the column depending on the number of fields selected in reportQuery.
    ' Assign the column value to new created column.
    For i = 0 To rs.Fields.Count - 1
      ' Create new text box control and size to fit data.
      Set txtNew = CreateReportControl(rpt.Name, acTextBox, _
         acDetail, , , lngLeft + 15 + prevColwidth, lngTop)
      txtNew.SizeToFit
      txtNew.ControlSource = rs(i).Name
      ' Modify the left margin depending on the number of columns
      ' and the size of each column.
      prevColwidth = prevColwidth + txtNew.width
    Next
    'To save the modification to the report,  uncomment the following line of code:
    'DoCmd.Save
    ' View the generated report.
    DoCmd.OpenReport "AccessColumnBuilder", acViewPreview
    
    ' This opens the report in preview.
    
  13. Formu kaydedin ve çalıştırın.

  14. Raporu önizlemek için 10. adımda eklediğiniz komut düğmesine tıklayın.

    İzleyen kayıtlar ilk sayfada görünür:

    First NameLast Name
    
    NancyDavolio
    
    MargaretPeacock
    
    ...............
    

    Rapor, Çalışanlar tablosunun Ad sütununu ve Soyadı sütununu içerir. Raporu kaydedebilir veya sorguda gerekli değişiklikleri yapıp raporu çalıştırabilirsiniz.

Yöntem 2: Var olan sütunun görünür özelliğini ayarlayarak çalışma zamanında rapora sütun ekleme

Bu örnekte, denetimin Visible özelliğini düzenleyerek raporda yeni bir sütunun nasıl görüntüleneceği gösterilmektedir.

Rapor dört sütun içerir. Visible İlk üç sütunun özelliği evet olarak ayarlanır. Visible Dördüncü sütunun özelliği hayır olarak ayarlanır. Sayfa sonunda, Visible dördüncü sütunun özelliği, sütun göründüğünde evet olarak ayarlanır.

  1. Access'i başlatın.

  2. Yardım menüsünde Örnek Veritabanları'na ve ardından Northwind Örnek Veritabanı'na tıklayın. Göründüğünde Ana Geçiş Panosu formunu kapatın.

    Not

    Access 2007'de Şablon Kategorileri bölmesinde Örnek'e tıklayın, Northwind 2007'ye ve ardından İndir'e tıklayın.

  3. Rapor1 adlı ve Ürünler tablosunu temel alan bir rapor oluşturmak için şu adımları izleyin:

    1. Veritabanı penceresinde Raporlar'a ve ardından Yeni'ye tıklayın.

      Not

      Access 2007'de, Oluştur sekmesinin Raporlar grubunda Rapor Sihirbazı'na tıklayın.

    2. Yeni Rapor iletişim kutusunda Tasarım Görünümü'ne tıklayın, Ürünler'i seçin ve ardından Tamam'a tıklayın.

    3. Raporun Ayrıntı bölümüne aşağıdaki metin kutularını ekleyin. Metin kutularını hizalayın.

    4. İlgili etiketleri raporun Sayfa Üst Bilgisi bölümüne yerleştirin. Etiketleri hizalayın.

      Report: Report1
      --------------------------
      Caption: TestReport
      ControlSource: Products
      
      Label:
         Name: ProductName_label
      
      Text Box:
         Name: ProductName
         ControlSource: ProductName
      
      Label:
         Name: UnitPrice_label
      
      Text Box:
         Name: UnitPrice
         ControlSource: UnitPrice
      
      Label:
         Name: UnitsInStock_label
      
      Text Box:
         Name: UnitsInStock
         ControlSource: UnitsInStock
      
      Label:
         Name: TotalPrice_label
         Visible: No
      
      Text Box:
         Name:  TotalPrice
         ControlSource:  =[UnitPrice] * [UnitsInStock]
         Visible: No
      
  4. Ayrıntı bölümüne aşağıdaki özelliklere sahip bir metin kutusu denetimi ekleyin. Metin kutusunu doğrudan ProductName denetiminin üzerine yerleştirin.

    Bu denetim, rapordaki kayıt sayısı için bir sayaç işlevi görür.

    Text Box:
    -----------------------
    Name: Counter
    ControlSource: =1
    Visible: No
    RunningSum: Over All
    
  5. Araç Kutusu'ndaSayfa Sonu'na tıklayın.

    Not

    Access 2007'de, Tasarım sekmesinin Denetimler grubunda Sayfa Sonu Ekle veya Kaldır'a tıklayın.

  6. Ayrıntı bölümünün sol alt köşesine sayfa sonu denetimi ekleyin. Sayfa sonu denetimini doğrudan ProductName denetiminin altına yerleştirin. Name özelliğini PageBreak olarak ayarlayın.

  7. Ayrıntı bölümünde, OnFormat özelliğini aşağıdaki olay yordamına ayarlayın:

    If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _
    Else Me![PageBreak].Visible = False
    
  8. Rapordaki boş alanı azaltmak için, işaretçinizi Ayrıntı bölümünün alt kısmıyla Sayfa Alt Bilgisi'nin arasına yerleştirin ve yukarı sürükleyin.

  9. Sayfa Alt Bilgisi bölümünde, OnPrint özelliğini aşağıdaki olay yordamına ayarlayın:

    If Me![PageBreak].Visible = True Then
     Me![TotalPrice].Visible = True
     Me![TotalPrice_label].Visible = True
    Else
     Me![TotalPrice].Visible = False
     Me![TotalPrice_label].Visible = False
    End If
    

    PageBreak gerçekleştiğinde TotalPrice sütunu görüntülenir.

  10. Raporun önizlemesini görüntüleme. İzleyen kayıtlar ilk sayfada görünür:

    Product NameUnit PriceUnit in Stock
    
    Cahi$18.0039
    
    Chang$19.0017
    

    Not

    Raporun ilk sayfasında üç sütun bulunur.

    İzleyen kayıtlar ikinci sayfada görünür:

    Product NameUnit PriceUnit in StockTotal Amount
    
    Aniseed Syrup $10.0013    130
    
    Chef A...    $22.00 53    1166
    

    Not

    Sayfa sonu ilk sayfadan sonra gerçekleşir. Bu nedenle, raporun ikinci sayfasında dört sütun bulunur.

Başvurular

Program aracılığıyla Access raporu oluşturma hakkında daha fazla bilgi için aşağıdaki makaleyi ziyaret edin:

Basit bir rapor oluşturma