Dynamisch auffüllen ein über Daten in Visual Basic

Zusammenfassung

Erläutert, wie einem Gruppenbericht Daten programmgesteuert erstellen, ohne diese Daten zur Entwurfszeit.

Weitere Informationen

Schrittweises Beispiel

  1. Öffnen Sie ein Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
  2. Fügen Sie eine Befehlsschaltfläche zu Form1 hinzu.
  3. Im Menü Projekt auf Verweise, und fügen Sie einen Verweis auf Microsoft ActiveX Data Objects Library.
  4. Menü Projekt klicken Sie DataReport1. Wenn Datareport hinzufügen im Menü Projekt nicht ist, über die Registerkarte Designer im Menü Projekt unter Komponentenhinzufügen. (Stellen Sie sicher, dass Sie Nur ausgewählte Elemente im Menü Projekt unter Komponentendeaktivieren.)
  5. Öffnen Sie Datareport1 und sicherstellen Sie, dass das Detail, Seitenkopfund Seitenfuß sichtbar sind. Entfernen Sie Abschnitt Berichtskopf oder -Fuß angezeigt werden, sie mit der rechten Maustaste auf den Bericht Zeigen Kopfzeile/Fußzeile des Berichtsdas Häkchen entfernen.
  6. Mit der rechten Maustaste, und wählen Sie Gruppe Kopfzeile/Fußzeile einfügen. Die Datareport Abschnitt Section4, hinzugefügt.
  7. Ein RptLabel -Steuerelement und ein RptTextbox -Steuerelement die neuen Abschnitt hinzufügen.
  8. Steuerelemente für zwei RptLabel und zwei RptTextbox -Steuerelemente in den Detailabschnitt den Datareport hinzufügen.
  9. Kopieren Sie und fügen Sie den folgenden Code in das Formular:
          Dim cn As New ADODB.Connection      Dim rs As New ADODB.Recordset
    Dim cmd As New ADODB.Command
    Dim rs1 As New ADODB.Recordset
    Private Sub Command1_Click()
    Dim q As Integer
    Dim intCtrl As Integer
    Dim x As Integer
    Dim z As Integer
    x = 0
    q = 0
    z = 0

    With DataReport1
    .Hide
    Set .DataSource = rs
    .DataMember = ""
    With .Sections("section4").Controls
    For intCtrl = 1 To .Count
    If TypeOf .Item(intCtrl) Is RptLabel Then
    .Item(intCtrl).Caption = "City" & " :"
    q = q + 1
    End If
    If TypeOf .Item(intCtrl) Is RptTextBox Then
    .Item(intCtrl).DataMember = ""
    .Item(intCtrl).DataField = "City"
    End If
    Next
    End With

    q = 0
    With .Sections("Section1").Controls
    For intCtrl = 1 To .Count
    If TypeOf .Item(intCtrl) Is RptLabel Then
    .Item(intCtrl).Caption = rs1.Fields(q).Name & " :"
    q = q + 1
    End If
    If TypeOf .Item(intCtrl) Is RptTextBox Then
    .Item(intCtrl).DataMember = "Command1"
    .Item(intCtrl).DataField = rs1(z).Name
    z = z + 1
    End If
    Next intCtrl
    End With
    .Refresh
    .Show
    End With
    End Sub

    Private Sub Form_Load()

    Command1.Caption = "Show Report"
    cn.Open "Provider=MSDATASHAPE; Data Provider=Microsoft.JET.OLEDB.4.0;" & _
    "Data Source=D:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;"

    With cmd
    .ActiveConnection = cn
    .CommandType = adCmdText
    .CommandText = " SHAPE {SELECT FirstName,Lastname,City FROM `Employees`} AS Command1 COMPUTE Command1 BY 'City'"
    .Execute
    End With

    With rs
    .ActiveConnection = cn
    .CursorLocation = adUseClient
    .Open cmd
    End With
    Set rs1 = rs(0).Value

    End Sub

Referenzen

Klicken Sie für Weitere Informationen auf die nachstehende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

240019 wie einen Datenbericht in Visual Basic dynamisch aufgefüllt
Eigenschaften

Artikelnummer: 289793 – Letzte Überarbeitung: 20.01.2017 – Revision: 2

Feedback