VBA-Schulung 2003-03-27/28Lesen und Schreiben von Daten 2 Erstellung von Formularen und...

Post on 06-Apr-2015

108 views 3 download

Transcript of VBA-Schulung 2003-03-27/28Lesen und Schreiben von Daten 2 Erstellung von Formularen und...

Lesen und Schreiben von Daten

2VBA-Schulung 2003-03-27/28

Erstellung von Formularen und

Datenverarbeitung

Lesen und Schreiben von Daten

3VBA-Schulung 2003-03-27/28

ÜberblickEntwicklung von Formularen Datenverarbeitung

Daten lesen,Daten bearbeiten,Daten schreiben

Klassisches EVA (Eingabe, Verarbeitung, Ausgabe)-Prinzip

Lesen und Schreiben von Daten

4VBA-Schulung 2003-03-27/28

ZielErleichterung der Erfassung von Rechnungspositionen mit Hilfe eines VBA-Formulars:„Rechnungs-Assistent“

Aufruf aus dem Menü „Aktionen“Anzeige aller ArtikelErstellen von neuen Rechnungsdatensätzen und neuen RechnungspositionenPlausibilitätsprüfungen

Lesen und Schreiben von Daten

5VBA-Schulung 2003-03-27/28

FormularNeues Formular erstellen

„Einfügen - UserForm“

Name: FInvoiceWizardCaption: Rechnungs-Assistent

Lesen und Schreiben von Daten

6VBA-Schulung 2003-03-27/28

FormularSteuerelemente für den Rechnungsdatensatz

fraRechnung (Frame)

dtpDatum (DTPicker)

cboVersand (ComboBox)

cboZahlungsweise (ComboBox)

cboLieferart (ComboBox)

+ Beschriftugen

(Labels)

cmdNeueRechnung

(CommandButton)

Lesen und Schreiben von Daten

7VBA-Schulung 2003-03-27/28

FormularSteuerelemente für die Rechnungspositionen

fraRechnungspositionen (Frame)

+ Beschriftugen

(Labels)

cboEinheit (ComboBox)

txtPreis (TextBox)

lblGesamt (Label)

txtAnzahl (TextBox)

txtArtikel (TextBox)

cmdNeuePosition (CommandButton)

Lesen und Schreiben von Daten

8VBA-Schulung 2003-03-27/28

FormularSteuerelement für die Artikelliste

lvwArtikel (ListView)

cmdClose (CommandButton)

Lesen und Schreiben von Daten

9VBA-Schulung 2003-03-27/28

Formular

Lesen und Schreiben von Daten

10VBA-Schulung 2003-03-27/28

Haben Sie

Fragen?

Lesen und Schreiben von Daten

11VBA-Schulung 2003-03-27/28

QuellcodeBenötigte Prozeduren:

Initialisieren der SteuerelementeEinlesen von persistenten VariablenEinlesen der Artikelliste

Anlegen einer neuen RechnungAnlegen von RechnungspositionenÜbernehmen der Artikeldaten in Steuerelemente der RechnungspositionenAnzeige der Summe der aktuellen Position

Lesen und Schreiben von Daten

12VBA-Schulung 2003-03-27/28

QuellcodeDeklarationen auf Modulebene

' Konstante für Fehlerbehandlung

Private Const csErrSource = "FInvoiceWizard"

' Variablen für Tabellenobjekte

Private mtblInvoices As OrgDbServer31.Table

Private mtblPositions As OrgDbServer31.Table

Private mtblArticles As OrgDbServer31.Table

Lesen und Schreiben von Daten

13VBA-Schulung 2003-03-27/28

QuellcodeProzedur Init()

Public Sub Init()

' Initialisierungen: Einlesen der Auswahllisten, Initialisieren der modulweiten Variablen

Dim pvars As PersistVars

Dim itm As ListItem

On Error GoTo ErrHandler

Lesen und Schreiben von Daten

14VBA-Schulung 2003-03-27/28

QuellcodeProzedur Init()

' Variablen initialisieren

Set mtblInvoices = gTables.GetTable(dbtblRechnungen)

Set mtblPositions = gTables.GetTable(dbtblRechnungspositionen)

Set mtblArticles = gTables.GetTable(dbtblArtikel)

Lesen und Schreiben von Daten

15VBA-Schulung 2003-03-27/28

QuellcodeProzedur Init()

' Auswahllisten einlesen

Set pvars = Database.Parser.PersistVars

With gobjDatabaseSupport

.LoadPersVarsCombobox pvars("lt_Versandkosten"), cboVersand

.LoadPersVarsCombobox pvars("lt_Zahlungsweise"), cboZahlungsweise

.LoadPersVarsCombobox pvars("lt_Lieferart"), cboLieferart

.LoadPersVarsCombobox pvars("lt_Einheit"), cboEinheit

End With

Lesen und Schreiben von Daten

16VBA-Schulung 2003-03-27/28

QuellcodeProzedur Init()

' Artikel einlesen

lvwArtikel.ListItems.Clear

With mtblArticles

.GoTop ORGDB_NAV_NOEVENTS

Do While Not .EOF

Set itm = lvwArtikel.ListItems.Add(Text:=.Fields("Bezeichnung").Value)

itm.ListSubItems.Add Text:=.Fields("Art").Value

itm.ListSubItems.Add Text:=.Fields("Einheit").Value

itm.ListSubItems.Add Text:=.Fields("Nettopreis").Value

.Skip 1, ORGDB_NAV_NOEVENTS

Loop

End With

Lesen und Schreiben von Daten

17VBA-Schulung 2003-03-27/28

QuellcodeProzedur Init()

Exit Sub

ErrHandler:

gErrors.DisplayError csErrSource & ".Init"

End Sub

Lesen und Schreiben von Daten

18VBA-Schulung 2003-03-27/28

QuellcodeAufrufprozeduren

Im Modul Invoicing neue Prozedur ShowInvoiceWizard()

Public Sub ShowInvoiceWizard()

' Rechnungs-Assistenten aufrufen

Dim frmWizard As New FInvoiceWizard

With frmWizard

.Init

.Show vbModal

End With

End Sub

Lesen und Schreiben von Daten

19VBA-Schulung 2003-03-27/28

QuellcodeAufrufprozeduren

Im Modul UserMacros neue Prozedur ShowInvoiceWizard()

Public Sub ShowInvoiceWizard()

' Rechnungs-Assistenten aufrufen

InitGlobalObjects

Invoicing.ShowInvoiceWizard

End Sub

Lesen und Schreiben von Daten

20VBA-Schulung 2003-03-27/28

QuellcodeErster Test: Im Direktbereich (Strg+G)

UserMacros.ShowInvoiceWizard

eingeben

Lesen und Schreiben von Daten

21VBA-Schulung 2003-03-27/28

Es funktioniert!

Lesen und Schreiben von Daten

22VBA-Schulung 2003-03-27/28

Haben Sie

Fragen?

Lesen und Schreiben von Daten

23VBA-Schulung 2003-03-27/28

QuellcodeWir machen weiter: Rechnung speichern

Private Sub cmdNeueRechnung_Click()

' Neuen Rechnungsdatensatz anlegen

On Error GoTo ErrHandler

...

Exit Sub

ErrHandler:

gErrors.DisplayError csErrSource & ".cmdNeueRechnung_Click"

End Sub

Lesen und Schreiben von Daten

24VBA-Schulung 2003-03-27/28

QuellcodeRechnung speichern II

With mtblInvoices

' Datensatzpuffer leeren und Feldvorbelegungen auswerten

.Record = .DefaultRecord

.Fields("Datum").Value = dtpDatum.Value

.Fields("Versandkosten").Value = cboVersand.Text

.Fields("Zahlungsweise").Value = cboZahlungsweise.Text

.Fields("Lieferart").Value = cboLieferart.Text

.Insert

End With

Lesen und Schreiben von Daten

25VBA-Schulung 2003-03-27/28

QuellcodePosition speichern

Private Sub cmdNeuePosition_Click()

' Neue Rechnungsposition anlegen

On Error GoTo ErrHandler

With mtblPositions

' Datensatzpuffer leeren und Feldvorbelegungen auswerten

.Record = .DefaultRecord

.Fields("Artikel").Value = txtArtikel.Value

.Fields("Anzahl").Value = txtAnzahl.Text

.Fields("Einheit").Value = cboEinheit.Text

.Fields("Nettopreis").Value = txtPreis.Text

.Insert

End With

Lesen und Schreiben von Daten

26VBA-Schulung 2003-03-27/28

QuellcodeArtikeldaten übernehmen

Private Sub lvwArtikel_DblClick()

' Beim Doppelklick auf die Artikelliste sollen die Daten des ausgewählten

' Artikels in die Rechnungsposition übernommen werden

On Error GoTo ErrHandler

...

Exit Sub

ErrHandler:

gErrors.DisplayError csErrSource & ".lvwArtikel_DblClick"

End Sub

Lesen und Schreiben von Daten

27VBA-Schulung 2003-03-27/28

QuellcodeArtikeldaten übernehmen II

' Gibt es einen ausgewählten Artikel?

If lvwArtikel.SelectedItem Is Nothing Then Exit Sub

' Daten übernehmen

With lvwArtikel.SelectedItem

txtArtikel.Text = .Text

cboEinheit.Text = .ListSubItems(2).Text

txtPreis.Text = .ListSubItems(3).Text

End With

' Anzahl auf 1 setzen

txtAnzahl.Text = "1"

Lesen und Schreiben von Daten

28VBA-Schulung 2003-03-27/28

QuellcodeSumme der aktuellen Position anzeigen

Aufruf von txtAnzahl_Change() und txtPreis_Change()

Private Sub SummeAktualisieren()

' Gesamtpreis berechnen

lblGesamt.Caption = Val(txtAnzahl.Text) * Val(txtPreis.Text)

End Sub

Lesen und Schreiben von Daten

29VBA-Schulung 2003-03-27/28

QuellcodeFormular schliessen

Private Sub cmdClose_Click()

' Formular schließen

Me.Hide

End Sub

Lesen und Schreiben von Daten

30VBA-Schulung 2003-03-27/28

OberflächeWir binden das Makro in die Oberfläche ein:

Über den Menüpunkt AktionenÜber eine Schaltfläche

Wir testen...

Lesen und Schreiben von Daten

31VBA-Schulung 2003-03-27/28

Es funktioniert noch immer und noch

besser!

Lesen und Schreiben von Daten

32VBA-Schulung 2003-03-27/28

QuellcodePlausibilitätsprüfungen

Artikelname darf nicht leer seinAnzahl muss grösser als 0 seinWenn eine dieser Bedingungen nicht erfüllt ist, dann soll die Position gar nicht gespeichert werdenDer Cursor soll in das fehlerverursachende Eingabefeld platziert werden

Lesen und Schreiben von Daten

33VBA-Schulung 2003-03-27/28

QuellcodePrivate Function PlausibilitätsprüfungPosition() As Boolean

' Plausibilitätsprüfung der Angaben zur Rechnungsposition

' Beim ersten Fehler wird die Funktion verlassen

' Artikelname darf nicht leer sein

If txtArtikel.Text = "" Then

MsgBox "Bitte geben Sie einen Artikelnamen ein.", vbExclamation, MsgBoxTitle

txtArtikel.SetFocus

PlausibilitätsprüfungPosition = False

Exit Function

End If

...

Lesen und Schreiben von Daten

34VBA-Schulung 2003-03-27/28

Quellcode...

' Anzahl muss größer als 0 sein

If Val(txtAnzahl.Text) = 0 Then

MsgBox "Anzahl muss größer als 0 sein.", vbExclamation, MsgBoxTitle

txtAnzahl.SetFocus

PlausibilitätsprüfungPosition = False

Exit Function

End If

' Wenn wir hier angelangt sind, dann sind keine Fehler aufgetreten

PlausibilitätsprüfungPosition = True

End Function

Lesen und Schreiben von Daten

35VBA-Schulung 2003-03-27/28

QuellcodeAufruf der Plausibilitätsprüfung

Private Sub cmdNeuePosition_Click()

' Neuen Rechnungsposition anlegen

On Error GoTo ErrHandler

' Plausibilitätsprüfung der Angaben

If Not PlausibilitätsprüfungPosition Then Exit Sub

With mtblPositions

...

Lesen und Schreiben von Daten

36VBA-Schulung 2003-03-27/28

OberflächeWir testen...

Lesen und Schreiben von Daten

37VBA-Schulung 2003-03-27/28

Haben Sie

Fragen?

Lesen und Schreiben von Daten

38VBA-Schulung 2003-03-27/28

Vielen Dank für Ihre Aufmerksamkeit