Jak programově vytvořit nový sloupec v sestavě Accessu

Původní číslo KB: 812719

Souhrn

Tento článek popisuje, jak programově vytvořit sloupec v sestavě Accessu. Sloupec můžete dynamicky přidat do sestavy pomocí metody 1 nebo metody 2, které jsou popsány v části Další informace.

Poznámka

Ukázkový kód v tomto článku používá objekty Microsoft Data Access. Aby tento kód běžel správně, musíte odkazovat na knihovnu objektů Microsoft DAO 3.6. Provedete to tak, že kliknete na Odkazy v nabídce Nástroje v Editor Jazyka Visual Basic a ujistěte se, že je zaškrtnuté políčko Knihovna objektů Microsoft DAO 3.6.

Metoda 1: Přidání sloupců do sestavy prostřednictvím kódu programu

Následující příklad ukazuje, jak vytvořit sestavu Accessu prostřednictvím kódu programu. Kód vygeneruje sestavu, která je založená na dotazu na zdroj záznamů. Vygenerovaná sestava zobrazí sloupec Jméno a Sloupec Příjmení v tabulce Zaměstnanci Northwind.mdb ukázkové databáze.

  1. Spusťte Access.

  2. V nabídce Nápověda klikněte na Ukázkové databáze a potom klikněte na Ukázková databáze Northwind. Zavřete formulář Hlavní přepínací panel , jakmile se zobrazí.

    Poznámka

    V Accessu 2007 klikněte v podokně Kategorie šablon na Ukázka, klikněte na Northwind 2007 a potom klikněte na Stáhnout.

  3. V levém podokně klikněte na Sestavy.

    Poznámka

    V Accessu 2007 tento krok přeskočte.

  4. V pravém podokně poklikejte na Vytvořit sestavu v návrhovém zobrazení.

    Poznámka

    V Accessu 2007 klikněte na Návrh sestavy ve skupině Sestavy na kartě Vytvořit .

  5. V nabídce Soubor klikněte na Uložit.

    Poznámka

    V aplikaci Access 2007 klikněte na tlačítko Microsoft Office a potom klikněte na Uložit.

  6. V dialogovém okně Uložit jako zadejte AccessColumnBuilder a klikněte na OK.

  7. Zavřete sestavu.

  8. V levém podokně vyberte Formuláře.

    Poznámka

    V Accessu 2007 tento krok přeskočte.

  9. V pravém podokně poklikejte na Vytvořit formulář v návrhovém zobrazení.

    Poznámka

    V Accessu 2007 klikněte na Návrh formuláře ve skupině Formuláře na kartě Vytvořit .

  10. Přidejte do formuláře příkazové tlačítko.

    Poznámka

    V Accessu 2007 klikněte na tlačítko a přidejte tlačítko do formuláře ve skupině Ovládací prvky na kartě Návrh .

  11. Klikněte pravým tlačítkem myši na příkazové tlačítko, klikněte na Sestavit událost, v dialogovém okně Zvolit tvůrce kódu klikněte na Tvůrce kódu a potom klikněte na OK.

  12. Přidejte následující kód do události OnClick příkazového tlačítka:

    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. Uložte formulář a spusťte ho.

  14. Pokud chcete zobrazit náhled sestavy, klikněte na příkazové tlačítko, které jste přidali v kroku 10.

    Následující záznamy se zobrazí na první stránce:

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

    Sestava obsahuje sloupec Jméno a sloupec Příjmení v tabulce Zaměstnanci . Můžete buď uložit sestavu, nebo provést požadované změny dotazu a pak sestavu spustit.

Metoda 2: Přidání sloupců do sestavy za běhu nastavením vlastnosti visible existujícího sloupce

Tento příklad ukazuje, jak zobrazit nový sloupec v sestavě manipulací s vlastností Visible ovládacího prvku.

Sestava obsahuje čtyři sloupce. Vlastnost Visible prvních tří sloupců je nastavená na ano. Vlastnost Visible čtvrtého sloupce je nastavena na hodnotu Ne. Na konci Visible stránky je vlastnost čtvrtého sloupce nastavena na ano , když se sloupec zobrazí.

  1. Spusťte Access.

  2. V nabídce Nápověda klikněte na Ukázkové databáze a potom klikněte na Ukázková databáze Northwind. Zavřete formulář Hlavní přepínací panel , jakmile se zobrazí.

    Poznámka

    V Accessu 2007 klikněte v podokně Kategorie šablon na Ukázka, klikněte na Northwind 2007 a potom klikněte na Stáhnout.

  3. Pokud chcete vytvořit sestavu s názvem Sestava1 založenou na tabulce Produkty , postupujte takto:

    1. V okně Databáze klikněte na Sestavy a potom klikněte na Nový.

      Poznámka

      V Accessu 2007 klikněte na Průvodce sestavou ve skupině Sestavy na kartě Vytvořit .

    2. V dialogovém okně Nová sestava klikněte na Návrhové zobrazení, vyberte Produkty a potom klikněte na OK.

    3. Do části Podrobnosti sestavy přidejte následující textová pole. Zarovnejte textová pole.

    4. Vložte odpovídající popisky do oddílu Záhlaví stránky sestavy. Zarovnejte popisky.

      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. Do oddílu Podrobnosti přidejte ovládací prvek textového pole s následujícími vlastnostmi. Umístěte textové pole přímo nad ovládací prvek ProductName .

    Tento ovládací prvek funguje jako čítač počtu záznamů v sestavě.

    Text Box:
    -----------------------
    Name: Counter
    ControlSource: =1
    Visible: No
    RunningSum: Over All
    
  5. Na panelu nástrojů klikněte na Konec stránky.

    Poznámka

    V Accessu 2007 klikněte na Přidat nebo odebrat konec stránky ve skupině Ovládací prvky na kartě Návrh .

  6. Přidejte ovládací prvek konce stránky do levého dolního rohu oddílu Podrobnosti . Umístěte ovládací prvek konce stránky přímo pod ovládací prvek ProductName . Nastavte vlastnost Name na PageBreak.

  7. V části Podrobnosti nastavte vlastnost OnFormat na následující proceduru události:

    If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _
    Else Me![PageBreak].Visible = False
    
  8. Pokud chcete zmenšit prázdné místo v sestavě, umístěte ukazatel mezi dolní části oddílu Podrobnosti a Zápatí stránky a potom přetáhněte prstem nahoru.

  9. V části Zápatí stránky nastavte vlastnost OnPrint na následující proceduru události:

    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
    

    Když se zobrazí PageBreak , zobrazí se sloupec TotalPrice(Celková cena ).

  10. Zobrazte náhled sestavy. Následující záznamy se zobrazí na první stránce:

    Product NameUnit PriceUnit in Stock
    
    Cahi$18.0039
    
    Chang$19.0017
    

    Poznámka

    První stránka sestavy obsahuje tři sloupce.

    Následující záznamy se zobrazí na druhé stránce:

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

    Poznámka

    Konec stránky se zobrazí za první stránkou. Proto druhá stránka sestavy obsahuje čtyři sloupce.

Odkazy

Další informace o tom, jak programově vytvořit sestavu accessu, najdete v následujícím článku:

Vytvoření jednoduché sestavy