Logo
Einfuehrung Beschreibung Beispiel Projektablauf Vorteile Komponenten Architektur Geschichte Download Kontakt

Vergleichendes Code-Beispiel (Small Business-Projekt)

Sie wollen allen Einkäufern Ihrer Kunden einen Bonus zuweisen, bei denen aktuelle Aufträge mit mehr als 3 Bestellpositionen vorliegen. Ein SQL-Programmierer formuliert das in einem Satz:

UPDATE Personen SET Bonus='J'
  WHERE Abteilung='Einkauf'
  AND BeiFirma IN
    (SELECT KundeNr FROM Auftraege WHERE Datum >= Today
      AND 3<
        (SELECT COUNT(*) FROM AuftraegePos AP
          WHERE AP.AuftragNr = Auftraege.AuftragNr
            AND AP.StornoKZ='N'))

Das schreibt sich schnell, aber wie lange brauchen Sie, bis der Fehler in diesem verschachtelten SQL-Statement gefunden ist?
Nun zu Visual-Basic: Das Recordset-Objekt ist ja auch ein Objekt. Aber wie man in folgendem Code-Stück sieht, wird der Gesamtüberblick damit nicht unbedingt verbessert. Insbesondere wenn ein anderer Programmierer oder man selbst nach einiger Zeit das Ganze wieder verstehen möchte:


Dim RS As Recordset
Dim PosRS As Recordset
Set RS = DB.OpenRecordset("SELECT * FROM Auftraege WHERE Datum >= ' " & Today & " ' ")
RS.MoveFirst
While Not RS.EOF
  Set PosRS = DB.OpenRecordset("SELECT COUNT(*) FROM AuftraegePos WHERE AuftragNr= " _
          & RS.Fields("AuftragNr") & " AND StornoKZ='N'")
  If PosRS.Fields(0) > 3 Then
    DB.Execute "UPDATE Personen SET Bonus='J' WHERE Abteilung='Einkauf' AND BeiFirma= "
          & RS.Fields("KundeNr")
  End If
  RS.MoveNext
Wend


Das Ganze nun mit Visual-Basic beim Einsatz von TypeLift:

For Each Auftrag in Auftraege.Auswahl(AbDatum:=Today)
  If Auftrag.Positionen.Count > 3 Then
    Auftrag.Kunde.Einkaeufer.Bonus = True
  End If
Next


Sie können, aber Sie müssen dieses Code-Stück nicht dokumentieren, weil es fast der natürlichen Sprache entspricht. Wenn Sie hier nach Wochen eine weitere Bedingung einfügen, dann geht das mit geringem Fehlerrisiko! Auch die Sprache SQL brauchen Sie fortan nicht mehr zu bemühen. Das macht TypeLift für Sie!