| Kumulierten Umsatz zuordnen, Kundennummer suchen |
| |
| |
| Aufgabe: In der Kundenzeile soll rechts davon die zugehörende ABC-Klasse angezeigt werden (diese ergibt sich |
| durch kumulierte Addition der Umsatzanteile in Prozent). |
| Eine Suchfunktion für eine Kunden-Nummer soll integriert werden, die Fehler meldet, falls es die gesuchte Nummer |
| nicht gibt. |
| |
| Const armax = 99 | |
| |
| Private KdList(0 To armax) As TKunden | |
| Private hilf As TKunden | |
| Private GesUms As Long | |
| Private pos As Integer | |
| |
| Private Type TKunden | |
| KdNr As String * 5 | |
| KdUm As Long | |
| ABC As String | |
| End Type | |
| |
| Private Sub cmdSuchen_Click() | |
| Dim KundSuchNr As String | |
| Dim gef As Boolean, i As Integer | |
| If txtSuchen.Text <> "" Then | |
| KundSuchNr = Trim$(txtSuchen.Text) | Kunden-Nummer soll mit dem Text, der sich im Suchfeld |
| i = 0 | befindet, übereinstimmen. |
| gef = False | |
| While i <= armax And Not gef | |
| If KundSuchNr = Trim$(KdList(i).KdNr) Then | |
| pos = i | |
| gef = True | |
| End If | |
| i = i + 1 | |
| Wend | |
| If gef Then | Die Zeile mit gefundener Kunden-Nummer wird in der |
| Call TabAnzeigen | ersten Ausgabezeile sichtbar gemacht. |
| Call settfokus | |
| lblSuchen.ForeColor = &H80000012 | |
| lblSuchen.Caption = "<-- Suchen" | |
| Else | |
| lblSuchen.ForeColor = &HFF& | |
| lblSuchen.Caption = "gibt's nicht" | Wenn kein Eintrag gefunden wird, gibt’s eine Meldung. |
| Call settfokus | |
| End If | |
| Else | |
| With lblSuchen | |
| .ForeColor = &HFF& | |
| .Caption = "eingeben" | |
| Call settfokus | |
| End With | |
| End If | |
| End Sub | |
| |
| Private Sub settfokus() | |
| With txtSuchen | |
| .SelStart = 0 | |
| .SelLength = Len(.Text) | |
| .SetFocus | |
| End With | |
| End Sub | |
| |
| Private Sub Form_Load() | |
| Me.Move (Screen.Width - Me.Width) / 3, (Screen.Height - Me.Height) / 3 |
| cmdRueck.Enabled = False | |
| Call TabLaden | |
| Call sortieren | |
| Call analyse | |
| Call TabAnzeigen | |
| End Sub | |
| |
| Private Sub TabLaden() | |
| Dim i As Long | |
| GesUms = 0 | |
| Randomize | |
| For i = 0 To armax | |
| KdList(i).KdNr = Int((99999 - 10000 + 1) * Rnd + 10000) | |
| KdList(i).KdUm = Int((500000 - 5000 + 1) * Rnd + 5000) | |
| GesUms = GesUms + KdList(i).KdUm | GesamtUmsatz berechnen. |
| Next i | |
| End Sub | |
| |
| Private Sub TabAnzeigen() | |
| Dim i As Integer | |
| For i = 0 To 9 | |
| If pos + i <= armax Then | |
| lblKdNr(i).Caption = KdList(pos + i).KdNr | |
| txtKdUm(i).Text = KdList(pos + i).KdUm | |
| lblKlasse(i).Caption = KdList(pos + i).ABC | |
| lblNr(i).Caption = pos + i | |
| Else | |
| lblKdNr(i).Caption = "" | |
| txtKdUm(i).Text = "" | |
| lblKlasse(i).Caption = "" | |
| End If | |
| Next i | |
| End Sub | |
| |
| Private Sub sortieren() | |
| Dim i As Integer, k As Integer | |
| For i = 0 To armax - 1 | |
| For k = i + 1 To armax | |
| If KdList(i).KdUm < KdList(k).KdUm Then | |
| hilf = KdList(i) | |
| KdList(i) = KdList(k) | |
| KdList(k) = hilf | |
| End If | |
| Next k | |
| Next i | |
| Call TabAnzeigen | |
| End Sub | |
| |
| Private Sub analyse() | ABC-Klassen bestimmen. |
| Dim i As Long, KumUms As Long | |
| Dim AB_Grenze As Long, BC_Grenze As Long | |
| AB_Grenze = 0.7 * GesUms | 70% = Klasse A, 25% = Klasse B, 5% = Klasse C. |
| BC_Grenze = 0.95 * GesUms | |
| KumUms = 0 | Kumulierter Umsatz. |
| i = 0 | Der GesamtUmsatz wird in TabLaden berechnet. |
| Do | |
| KdList(i).ABC = "A" | |
| KumUms = KumUms + KdList(i).KdUm | |
| i = i + 1 | |
| Loop Until KumUms > AB_Grenze | |
| Do | |
| KdList(i).ABC = "B" | |
| KumUms = KumUms + KdList(i).KdUm | |
| i = i + 1 | |
| Loop Until KumUms > BC_Grenze | |
| Do | |
| KdList(i).ABC = "C" | |
| i = i + 1 | |
| Loop Until i > armax | |
| End Sub | |
| |
| Private Sub cmdVor_Click() | Vorblättern. |
| If pos < 90 Then | |
| pos = pos + 1 | |
| Call TabAnzeigen | |
| cmdRueck.Enabled = True | |
| Else | |
| pos = pos | |
| cmdVor.Enabled = False | |
| End If | |
| End Sub | |
| |
| Private Sub cmdRueck_Click() | Zurückblättern. |
| If pos > 0 Then | |
| pos = pos - 1 | |
| Call TabAnzeigen | |
| cmdVor.Enabled = True | |
| Else | |
| pos = pos | |
| cmdRueck.Enabled = False | |
| cmdVor.SetFocus | |
| End If | |
| End Sub | |
| |
| Private Sub cmdEnde_Click() | Ende des Programms. |
| Unload frmABC | |
| Unload frmAufgabe2 | |
| Unload frmAufgabe3 | |
| End Sub | |
| |