Array-Verarbeitung: ABC-Analyse III

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



 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info