29
Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger H:\CDBrennen1\Buch\Buch\Einkauf.doc 1 Einkaufsprogramm Inhaltsverzeichnis Einkaufsprogramm ...................................................................................................... 1 Inhaltsverzeichnis .................................................................................................... 1 Teil 1 Grundaufbau .................................................................................................... 2 Beschreibung........................................................................................................... 2 Das Projekt .............................................................................................................. 2 Tabelle PARALOKA / für lokale Speicherungen .................................................. 4 Artikeleingabe.......................................................................................................... 7 Neueingabe starten ................................................................................................. 8 Vorgang speichern .................................................................................................. 9 Adressenzuordnung .............................................................................................. 11 Adressenauswahl............................................................................................... 12 Weiterbearbeitung ................................................................................................. 14 Bearbeitung fortsetzen ....................................................................................... 14 Teil 2 / Erweiterungen .............................................................................................. 18 Artikeldatei ............................................................................................................. 18 Systemtabelle ........................................................................................................ 21 Bestellnummernvergabe........................................................................................ 23 Tabelle mit den Bestelldaten ................................................................................. 24 Formular Bestellwesen....................................................................................... 24 Zum Formular-Aufbau .................................................................................... 24 Bestellnummer suchen....................................................................................... 25 Lieferanten suchen ............................................................................................ 26 Lieferdatum............................................................................................................ 27 Artikelsuche ........................................................................................................... 28 Artikelsuche ....................................................................................................... 28 Nachselektion allgemein .................................................................................... 28 Nachselektion nicht geliefert .................................................................................. 29 Nachselektion geliefert .......................................................................................... 29 Nachselektion nicht geliefert .............................................................................. 29

Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Embed Size (px)

Citation preview

Page 1: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 1

Einkaufsprogramm

Inhaltsverzeichnis Einkaufsprogramm......................................................................................................1

Inhaltsverzeichnis ....................................................................................................1 Teil 1 Grundaufbau ....................................................................................................2

Beschreibung...........................................................................................................2 Das Projekt ..............................................................................................................2

Tabelle PARALOKA / für lokale Speicherungen ..................................................4 Artikeleingabe..........................................................................................................7 Neueingabe starten .................................................................................................8 Vorgang speichern ..................................................................................................9 Adressenzuordnung ..............................................................................................11

Adressenauswahl...............................................................................................12 Weiterbearbeitung .................................................................................................14

Bearbeitung fortsetzen.......................................................................................14 Teil 2 / Erweiterungen ..............................................................................................18

Artikeldatei.............................................................................................................18 Systemtabelle........................................................................................................21 Bestellnummernvergabe........................................................................................23 Tabelle mit den Bestelldaten .................................................................................24

Formular Bestellwesen.......................................................................................24 Zum Formular-Aufbau ....................................................................................24

Bestellnummer suchen.......................................................................................25 Lieferanten suchen ............................................................................................26

Lieferdatum............................................................................................................27 Artikelsuche...........................................................................................................28

Artikelsuche .......................................................................................................28 Nachselektion allgemein ....................................................................................28

Nachselektion nicht geliefert..................................................................................29 Nachselektion geliefert ..........................................................................................29

Nachselektion nicht geliefert ..............................................................................29

Page 2: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 2

Teil 1 Grundaufbau Beschreibung Diese Beschreibung erklärt den Grund-Aufbau eines Einkaufsprogramms. Zunächst möchte man eine Bestellung erstellen, und zu einem Lieferanten senden. Dieses wäre nicht schwer und könnte auch mit einem Word-Dokument erstellt werden. Nur würde dann schnell der Überblick verloren gehen. Also muss ein Einkaufsprogramm her, welches wir nun Schritt für Schritt aufbauen werden. Was muss ein Programm für den Einkauf können? Welche Abläufe sind zu beachten? Ein Einkäufer bestellt nicht nur Waren, sondern überwacht und optimiert den gesamten Warenbedarf in einem Betrieb. Funktionen des Programms: Preisanfragen Bestellungen Lieferterminüberwachung Projektzuordnungen Projektaufbau Adressendatei Bestelldatei Stammartikeldatei Erstellungsdatei Eine Adressendatei ist für eine schnelle Adressenübernahme erforderlich, das ist klar. Der weitere Aufbau bietet bereits mehrere Möglichkeit. Arbeite ich mit nur einer Tabelle zur Aufnahme der Artikel, oder verwende ich eine Tabelle für die Kopfdaten und eine zweite Tabelle für die Artikeldaten? Im Gegensatz zu einem Rechnungsprogramm arbeite ich mit nur einer Tabelle. Für die Neueingabe verwende ich eine Erstellungstabelle. Hier wird ein Vorgang komplett erstellt. Dieser Vorgang kann bis zu seiner Speicherung immer wieder verändert werden. Warum ändern? mögen Sie Fragen. Die Änderungsmöglichkeit wird benötigt z. B. bei Preisanfragen. Hier bekommen mehrere Lieferanten einen Vorgang, nur die Anschrift ist anders. Bei einer Bestellung erfolgt jedoch eine sofortige Speicherung

Das Projekt Nun beginnen wir mit dem Aufbau. Die erste Tabelle ist unsere Adressendatei für die ich folgenden Aufbau vorschlage, der aber auch anders gestaltet werden kann.

Page 3: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 3

Tabellenname:Adressen.dat Felder (46) Name (Datentyp:String Groesse:50 ) Vorname (Datentyp:String Groesse:25 ) Zusatz (Datentyp:String Groesse:30 ) Straße (Datentyp:String Groesse:30 ) PLZ (Datentyp:String Groesse:6 ) Ort (Datentyp:String Groesse:30 ) PLZPF (Datentyp:String Groesse:6 ) Postfach (Datentyp:String Groesse:15 ) Vorwahl (Datentyp:String Groesse:8 ) Telefon (Datentyp:String Groesse:15 ) Fax (Datentyp:String Groesse:15 ) Funk (Datentyp:String Groesse:15 ) E-Mail (Datentyp:String Groesse:30 ) Internet (Datentyp:String Groesse:50 ) Alternativkontakt (Datentyp:String Groesse:100 ) Zone (Datentyp:String Groesse:5 ) Anfahrtspauschale (Datentyp:String Groesse:10 ) Entfernung (Datentyp:String Groesse:10 ) Kundennummer (Datentyp:String Groesse:15 ) Einsatzdatum (Datentyp:Date ) KWoche (Datentyp:String Groesse:4 ) LogDat (Datentyp:Date ) Terminart (Datentyp:Enum Groesse:20

Spezifikation:Fixtermin,Eventualtermin,Terminplanung ) Anrede (Datentyp:String Groesse:30 ) Suchwort (Datentyp:String Groesse:100 ) Adresse (Datentyp:Enum Groesse:20 Spezifikation:Kunde,Lieferant,Sonstige ) Anlagenbezeichnung (Datentyp:String Groesse:50 ) Anlagenkennummer (Datentyp:String Groesse:10 ) Verkäufer (Datentyp:String Groesse:25 ) Prüfzyklus (Datentyp:String Groesse:30 ) Techniker (Datentyp:String Groesse:25 ) Termingrund (Datentyp:String Groesse:250 ) Fahrzeit (Datentyp:String Groesse:50 ) Rechnungsanschrift (Datentyp:String Groesse:50 ) Info (Datentyp:Memo ) Kurzinfo (Datentyp:String Groesse:250 ) Bestellinfo (Datentyp:String Groesse:250 ) Wegbeschreibung (Datentyp:Blob ) Detailweg (Datentyp:Blob ) Änderungsdatum (Datentyp:Date Ausdruck:TODAY ) Uhrzeit (Datentyp:Time ) Zahlungsziel (Datentyp:String Groesse:70 ) Lieferbedingung (Datentyp:String Groesse:50 ) Krankenkasse (Datentyp:String Groesse:40 ) Versicherungsnummer (Datentyp:String Groesse:20 ) Kennzahl (Datentyp:AutoInc Spezifikation:$Name:30 ) Anschließend erstellen wir auch gleich ein Formular für diese Tabelle. Die zweite Tabelle nennen wir ERSTELLUNG. Diese Tabelle ist eine Sekundärtabelle zur Eingabe von Bestellungen, Preisanfragen und sonstigen Vorgängen. Nach der Eingabe eines Vorgangs wird der Inhalt dieser Tabelle wieder gelöscht, nachdem die Datensätze in die Haupttabelle der Bestellungen eingetragen wurden. Die Struktur der Tabelle ERSTELLUNG sieht folgendermaßen aus: Tabellenname:Erstellung.dat Felder (53) Artikel (Datentyp:String Groesse:200 ) Anzahl (Datentyp:Float Beschreibung:2 ) Artikelnummer (Datentyp:String Groesse:50 ) Einkaufspreis (Datentyp:Float Beschreibung:2 ) Preisdatum (Datentyp:Date ) Kommission (Datentyp:String Groesse:50 ) Lieferant (Datentyp:String Groesse:50 ) LSnummer (Datentyp:String Groesse:15 ) Geliefert (Datentyp:Boolean Muß-Feld ) Lieferdatum (Datentyp:Date ) Liefertermin (Datentyp:String Groesse:10 ) Kalenderwoche (Datentyp:String Groesse:5 )

Page 4: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 4

Bemerkung (Datentyp:String Groesse:200 ) Bestellnummer (Datentyp:String Groesse:10 ) BDatum (Datentyp:Date ) Beschreibung (Datentyp:String Groesse:250 ) Einheit (Datentyp:String Groesse:6 ) Gesamtpreis (Datentyp:Float Beschreibung:2 ) Kurzinfo (Datentyp:String Groesse:250 ) AB-Nummer (Datentyp:String Groesse:25 ) Eingabedatum (Datentyp:Date ) Ausgabe (Datentyp:Enum Groesse:20 Spezifikation:Preisanfrage,Bestellung,Info-Zeile ) LTwar (Datentyp:Date ) Fax (Datentyp:String Groesse:15 ) Informationen (Datentyp:Memo ) Anschrift (Datentyp:String Groesse:250 ) Sachbearbeiter(Datentyp:String Groesse:50 ) Währung (Datentyp:String Groesse:5 ) Terminüberwachung (Datentyp:Boolean Muß-Feld ) Ansicht (Datentyp:Blob ) Europreis (Datentyp:Float Beschreibung:2 ) Eurogesamtpreis (Datentyp:Float Beschreibung:2 ) NrIntern (Datentyp:Float ) Abschlusstext (Datentyp:Boolean Muß-Feld ) Artikelgruppe (Datentyp:String Groesse:25 ) ListenNr (Datentyp:String Groesse:6 ) Listendatum (Datentyp:Date ) Fertigungsteil (Datentyp:Boolean Muß-Feld ) Sonderinfo (Datentyp:String Groesse:250 ) Besteller (Datentyp:String Groesse:20 ) AllgemeinPreis (Datentyp:Float Beschreibung:2 ) Bestellmarkierung (Datentyp:Boolean Muß-Feld ) Baugruppe (Datentyp:String Groesse:20 ) UnterNr (Datentyp:String Groesse:50 ) VSTermin (Datentyp:Date ) Kundennummer (Datentyp:String Groesse:15 ) Name (Datentyp:String Groesse:50 ) Vorname (Datentyp:String Groesse:25 ) Straße (Datentyp:String Groesse:30 ) PLZ (Datentyp:String Groesse:6 ) Ort (Datentyp:String Groesse:30 ) Telefon (Datentyp:String Groesse:15 ) Laufende_Nummer (Datentyp:AutoInc Spezifikation:$Artikel:200 ) Diese Tabelle enthält Feldbezeichnungen die für einige nicht sofort verständlich sind. Es handelt sich hierbei um Bezeichnungen die für meinen Einsatzzweck erforderlich wurden und daher nicht für jeden zu gebrauchen sind. Für diese Tabelle erstellen wir gleich ein Formular, welches zur Neuanlage von unseren Vorgängen wird. Der Formularaufbau wird beschrieben, nachdem wir noch eine Parameter- oder System-Tabelle erstellt haben. Inhaltsverzeichnis

Tabelle PARALOKA / für lokale Speicherungen Diese Tabelle nenne ich PARALOK (in der Netzversion liegt sie auf dem Arbeitsplatzrechner) und hat folgende Struktur und wird nur einen einzigen Datensatz enthalten, aber sehr viele Felder. Also werden unter den Tabellenrechten die Rechte für Neueingabe deaktiviert.

Page 5: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 5

Tabellenname:Paraloka.dat Positionsnummer (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Faxnummer (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Lieferant (Datentyp:Boolean Muß-Feld ) Anschrift (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Spaltentitel (Datentyp:Boolean Muß-Feld ) LinksBeginn (Datentyp:Boolean Muß-Feld ) PapierBogen (Datentyp:Enum Groesse:20 Spezifikation:Blankopapier,Formpapier ) Lieferbedingung (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Berichte (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) AbschlussText (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Komponente (Datentyp:String Groesse:30 ) Baujahr (Datentyp:Float ) abDatum (Datentyp:Date ) bisDatum (Datentyp:Date ) abWartungsdatum (Datentyp:Date ) Messdaten (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) AltTage (Datentyp:SmallInt ) DetailBericht (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Info-Text (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) PLZ (Datentyp:String Groesse:6 )

Name (Datentyp:String Groesse:30 ) Vorname (Datentyp:String Groesse:20 )

Ort (Datentyp:String Groesse:30 ) Straße (Datentyp:String Groesse:30 ) Gebiet (Datentyp:String Groesse:6 ) Standortinfo (Datentyp:Enum Groesse:20 Spezifikation:ja,nein ) Artikel (Datentyp:String Groesse:200 ) Anzahl (Datentyp:Float Beschreibung:2 ) Einheit (Datentyp:String Groesse:10 ) Artikelnummer (Datentyp:String Groesse:50 ) Einkaufspreis (Datentyp:Float Beschreibung:2 ) Kommission (Datentyp:String Groesse:50 ) Lieferdatum (Datentyp:Date ) Liefertermin (Datentyp:String Groesse:10 ) Kalenderwoche (Datentyp:String Groesse:5 ) Bestellmenge (Datentyp: Float Beschreibung:2 ) Bestellnummer (Datentyp:String Groesse:15 ) Laufende_Nummer (Datentyp:AutoInc Spezifikation:$Positionsnummer:1 ) Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient.

Page 6: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 6

Da dieses Formular über den Befehl Execdialog aufgerufen wird, müssen wir die Schalter ok und Abbruch einbauen Der OK-Schalter enthält folgende Einstellung und Anweisung

Der Abbruch-Schalter enthält folgende Einstellung und Anweisung

Nun kommen wir zurück auf die Tabelle ERSTELLUNG und erstellen das Formular für unsere zukünftigen geplanten Bestellungen. Wir nennen das Formular BestellNeuanlage. Formularinhalt BestellNeuanlage Für den ersten Versuch platzieren wir einen Schalter für die Artikel-Eingabe ins noch leere Formular und zusätzlich die Tabelle Erstellung, damit wir auch sehen können, welche Artikel bereits eingegeben wurden.

Page 7: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 7

Nun noch schnell ein erstes Modul für unsere Proceduren zur Tabelle ERSTELLUNG hinzufügen, damit wir nun die ersten Erfolge unseres neuen Einkaufsprogramm sehen können. Unser Einkaufsprojekt dürfte nun wie folgt aussehen

Artikeleingabe Im Formular befindet sich nun ein Schalter für die Artikeleingabe. Dieser Schalter ruft, wie sollte es anders auch sein, die Procedur „Artikeleingabe“ auf. ..01 Procedure Artikeleingabe; If Execdialog("PARALOKA.Artikeleingabe") =1 ReadRec(ERSTELLUNG,0) Artikel := PARALOKA.Artikel Anzahl := PARALOKA.Anzahl Einheit := PARALOKA.Einheit Kommission := PARALOKA.Kommission Einkaufspreis := PARALOKA.Einkaufspreis Lieferdatum := PARALOKA.Lieferdatum Artikelnummer := PARALOKA.Artikelnummer WriteRec(ERSTELLUNG,FileSize(ERSTELLUNG)+1); Replace PARALOKA.Artikel := "" Replace PARALOKA.Anzahl := 0 Replace PARALOKA.Einheit := "" Replace PARALOKA.Kommission := "" Replace PARALOKA.Einkaufspreis := 0 Replace PARALOKA.Lieferdatum := Today+1 Für eine Liefervorgabe am nächsten Tag, kann aber auch entfallen Replace PARALOKA.Artikelnummer := ""

Page 8: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 8

AnfangderTabelle ..Endedertabelle attach; Refresh; else return end endproc; Nach der Eingabe dieser Procedur können wir die erste Funktion testen. Wir betätigen den Schalter „Artikeleingabe“, die Dialogbox aus der Tabelle PARALOKA wird geöffnet, wir tragen hier nun unseren ersten Artikel ein. Dann betätigen wir den Schalter ok und sehen im Formular unseren Artikel. Dieses können wir nun beliebig oft wiederholen. In der Tabelle sehen wir alle unsere eingetragenen Artikel.

Neueingabe starten Die Dateneingabe klappt, das haben wir nun feststellen könne. Vor einer Neueingabe müssen wir aber sicher sein, das die Tabelle wirklich leer ist. Hierfür, also als Schritt 1, definieren wir einen Schalter „Neueingabe starten“ der diese Löschfunktion durch den Aufruf einer entsprechenden Procedur, übernimmt. Diese Startfunktion ist zunächst noch recht einfach und wird später erst erweitert. ..02 Schritt 1 Procedure EingabeAnfang; If getmode = 0 ClearDat(ERSTELLUNG); regenall (ERSTELLUNG) attach; Refresh; DATENSÄTZEÄNDERN; Elsif Getmode = 1 Setsortorder ("ERSTELLUNG.ID") If Message("Sie befinden sich im Eingabemodus möchten Sie die Eingabe verwerfen und neu starten?,","Info",3) = 7 return else ClearDat(ERSTELLUNG); regenall (ERSTELLUNG) attach; Refresh; end end endproc; Ist die Tabelle nicht leer, erfolgt eine Sicherheitsabfrage, denn es könnte ja sein, dass Sie diesen Vorgang weiter bearbeiten möchten indem Sie nur eine andere Anschrift wählen für eine weitere Preisanfrage an einen anderen Lieferanten.

Page 9: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 9

Bis jetzt können wir nun Vorgänge erstellen aber nicht speichern oder drucken. Für die Speicherung benötigen wir eine weitere Tabelle in unserem Projekt, die Tabelle BESTELL. Hier werden unsere Bestellungen gespeichert und dient also der Archivierung und hat weitere später beschriebene Funktionen.

Vorgang speichern Für den Fall, dass alle Artikel eingegeben wurden, setzen wir einen weiteren Schalter in unser über den unsere Eingabe in der BESTELL-Tabelle gespeichert wird. Diesen Schalter nennen wir „Fertigstellung/speichern“

Die hierzu notwendige Procedur ist schon etwas größer. Es werden hierbei schon einige Fehlerbehandlungen berücksichtigt. Wenn Sie nun über den Fertigstellungsschalter die Procedur aufrufen, werden Sie folgendes Feststellen Können

1. Alle Artikel in der Tabelle ERSTELLUNG sind gelöscht 2. Alle Artikel aus der Tabelle Erstellung befinden sich in der Tabelle BESTELL

und sind dort gespeichert ..03.Erstellte Liste in die Bestellliste übertragen Procedure Tabelleninhaltzuordnen: real; If Filesize(ERSTELLUNG) = 0 Message("Es ist noch kein Artikel eingetragen worden") return end If Getmode = 2

Page 10: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 10

NeueDatensätzeEingeben; end If Getmode = 1 Datensätzeändern; end AlleMarkierungenEntfernen(1) DelMarks(ERSTELLUNG); VARDEF NRNo : REAL NRNo:=FirstRec(ERSTELLUNG) VARDEF RNo : REAL RNo:=FirstRec(ERSTELLUNG) if RNo >0 WHILE RNo > 0 ReadRec(ERSTELLUNG,RNo); BESTELL.Artikel := ERSTELLUNG.Artikel; BESTELL.Anzahl := ERSTELLUNG.Anzahl; BESTELL.Einkaufspreis := ERSTELLUNG.Einkaufspreis; BESTELL.Einheit := ERSTELLUNG.Einheit; BESTELL.Lieferant := ERSTELLUNG.Name; BESTELL.Lieferdatum := ERSTELLUNG.Lieferdatum; BESTELL.Kommission := ERSTELLUNG.Kommission; WriteRec(BESTELL,FileSize(BESTELL)+1); RNo := NextRec(ERSTELLUNG); END Else Message("nichts markiert") end If Message("Möchten Sie eine Weitere Ausgabe erstellen?","Einkaufsprofi",3)= 7 ..damit Vorhandene Anschrift nicht mehr erscheint closeWnd; ClearDat(ERSTELLUNG); attach; Refresh; closewnd return else ..... If Message("Soll die vorhandene Ausgabeliste erhalten bleiben?","Einkaufsprofi",3)= 7 ClearDat(ERSTELLUNG); closewnd; Activateform("ERSTELLUNG.BestellNeuanlage") Attach; Refresh; Else Attach; Refresh; Activateform("ERSTELLUNG.BestellNeuanlage") end end Endproc; Inhaltsverzeichnis

Page 11: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 11

Adressenzuordnung Ganz am Anfang unseres Projektes wurde gesagt, dass eine Adressendatei notwendig ist. Diese Adressendatei wollen wir uns nun für eine Adressenübernahme in unseren aktuellen Vorgang zu Nutze machen. Für eine Adressenübernahme müssen wir jedoch das Zubehör dieser Tabelle wieder erweitern. Wir benötigen ein Adressen-Auswahlformular und ein Adressen-Modul. Das Adressen-Auswahlformular nennen wir Adrexpo mit ähnlichen Aussehen wie

und folgenden Formulareigenschaften

Die Formulareigenschaften haben Such und Speicheraufgaben. Die aufgerufene Procedur Suchnamenexpo startet beim Formular öffnen eine Dialogbox zur Eingabe des Zuordnungsnamen. Beim Schließen bzw. beim Verlassen des Formulars wird mit der Procedur Adressespeichern(0) wie der Name es schon sagt, die Anschrift in der Tabelle PARALOKA gespeichert.

Page 12: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 12

Die beiden Proceduren wurden ins Adressen-Modul geschrieben und haben folgenden Inhalt. ..01 Aufruf beim Öffnen ADREXPO PROCEDURE Suchnamenexpo; ?Getmode =0/ T-Eingabe :="" If Input ("Name eingeben....")=1 SetSortOrder("ADRESSEN.ID") Suchen("ADRESSEN.ID",T-Eingabe) If Bestellinfo <> "" Message("...." + ADRESSEN.Bestellinfo,"Wichtige Information") End End ENDPROC; ..02 Adresse in PARALOKA speichern PROCEDURE Adressespeichern(DUMMY: real); ReadRec(PARALOKA,1); PARALOKA.Name := ADRESSEN.Name; PARALOKA.Vorname := ADRESSEN.Vorname; PARALOKA.Straße := ADRESSEN.Straße PARALOKA.PLZ := ADRESSEN.PLZ PARALOKA.Ort := ADRESSEN.Ort WriteRec(PARALOKA,1); ENDPROC; Wie wir nun bei unseren ersten Tests gesehen haben, wird die Anschrift erst bei der Fertigstellung gewählt. Schöner und auch in bestimmten Fällen notwendig, wäre es, wenn wir die Anschrift bereits bei der Erstellung festlegen könnten. Diese Möglichkeit programmieren mir nun im nächsten Schritt.

Adressenauswahl Damit wir immer die gewählte Anschrift kontrollieren und eventuell auch ändern können, benötigen wir die Adressenfelder und einen weiteren Schalter in unererem Neuanlageformular.

Der Schalter ruft die Procedur Namezuordnen auf die folgenden Inhalt hat

Page 13: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 13

Procedure Namezuordnen: real; If Filesize(ERSTELLUNG) = 0 Message("Es ist noch kein Artikel eingegeben worden") return end AlleMarkierungenEntfernen(1) Openform("ADRESSEN.Adrexpo"); DatensatzAuswählen("Name bitte auswählen"); closewnd; DelMarks(ERSTELLUNG); VARDEF NRNo : REAL ..SetSortOrder("Markierung"); NRNo:=FirstRec(ERSTELLUNG) if NRNo >0 WHILE NRNo > 0 ReadRec(ERSTELLUNG,NRNo); Replace ERSTELLUNG.Name = PARALOKA.Name; Replace ERSTELLUNG.Vorname = PARALOKA.Vorname Replace ERSTELLUNG.Straße = PARALOKA.Straße Replace ERSTELLUNG.PLZ = PARALOKA.PLZ Replace ERSTELLUNG.Ort = PARALOKA.Ort NRNo := NextRec(ERSTELLUNG); ..Sortierung("GRUNDAUSSTATTUNG.ID",2) END Else Message("nichts markiert") end AnfangderTabelle; attach; refresh; Endproc; Nun bekommt unsere Anwendung langsam Gestalt. Nun können wir zu unserer Entspannung mal etwas leichtes machen. Wir gestallten unser Formular „BestellAnlage“, damit die Optik etwas ansprechender wird.

Page 14: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 14

Funktionsstand: Neuanlage in einer Sekundärdatei Speichern in einer Hauptdatei Anschrift aus Adressendatei übernehmen Artikel mit Hilfe von Execdialog eintragen Dokumentbeginn

Weiterbearbeitung Nicht alle Vorgänge werden zusammenhängend eingetragen. Beispiel: Es ist Feierabend wir machen morgen weiter. Für diese Funktion benötigen wir nun zwei (ein) weitere Schalter. Ein Schalter der beim Neustart oder der Fertigstellung den Inhalt nicht löscht. Ein Schalter für das Beenden ohne Speicherung ist nicht unbedingt erforderlich, da ein Verlassen des Fensters auch über den Systemschalter Fenster schließen möglich ist.

Möchten Sie jedoch trotzdem einen derartigen Schalter der Vollständigkeit wegen einbauen, dann wird hiermit keine Procedur aufgerufen, lediglich der Befehl zu Fenster schließen.

Bearbeitung fortsetzen Soll eine abgebrochene Bearbeitung fortgesetzt werden, ist auch hierfür kein weiterer Schalter notwenig, denn man könnte auch den VDP-Schalter „Datensätze ändern“ betätigen und eine weitere Artikeleingabe ist möglich. Ich gehe aber davon aus, das die Standars-Schalter später entfernt werden und eigene Menüschalter eingebaut werden. Daher verwende ich einen neuen Schalter mit einer Procedur, die bereits einige Fehlerroutienen enthält und weiter ausbaufähig ist.

Page 15: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 15

Der Schalter „Bearbeitung fortsetzen“ ruft die Procedur „Weitermachen“ auf.

Procedure Weitermachen; If Filesize(ERSTELLUNG) = 0 Message("Es ist noch kein Artikel eingegeben worden, bitte Schalter --Neu-- wählen") return end If Getmode = 0 DATENSÄTZEÄNDERN; else Message("Sie befinden sich bereits im Bearbeitungsmodus","Info") end endproc; Einer funktionierenden Ausgabe einer Bestellung steht nun nicht mehr viel entgegen. Wir benötigen nur noch einen weiteren Schalter der den noch zu erstellenden Job über eine weitere Procedur aufruft.

procedure Bestellungdrucken; If getmode = 1 Datensätzeändern end If getmode = 2 NeueDatensätzeEingeben end Drucken("ERSTELLUNG.Bestellausgabe") endproc; Den neuen Job zur Tabelle ERSTELLUNG nennen wir Bestellausgabe. Der aufrufende Schalter bekommt die Aufschrift „drucken“ und ruft zunächst den Job direkt auf. Später wird eine Procedur aufgerufen, aber nun wollen wir ja erst mal Ergebnisse sehen.

Der Jobinhalt .REPORT .HF 0 .PO 8, MT 4, MR 6 .FONT Üs1=Arial,12,f .FONT Üs2=Arial,16,f .FONT Üs3=Arial,10,f

Page 16: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 16

.FONT Std=Arial,10,n

.FONT Stkl=Arial,8,n

.PROLOG

.Setfont Std Hanno Kniebel Von-Menzel-Str.12 49201 Dissen $(" ":42 "Datum: "+BDatum) .If Kundennummer $(" ":42 "Kundennummer"+Kundennummer) .end .Setfont Stkl Lieferant .Setfont Üs3 $(Lieferant:30) $(Name+" " +Vorname) $(Straße) $(PLZ+" "+Ort) .Setfont Stkl $(Fax:10) .Setfont Std .If Baugruppe $(@Stkl"Bestellnummer. "+@Üs3 Bestellnummer+" - "+(Kommission+"."+Baugruppe:35) "Liefertermin: "+Lieferdatum) .else $(@Stkl"Bestellnummer. "+@Üs3 Bestellnummer+" - "+Kommission:35 "Liefertermin: "+Lieferdatum) .end .HL .Setfont Üs2 $("Bestellung"C_Form ToMargin) .HL .Setfont Stkl $(" ":3 "Anzahl":5 "Einh.":5 "Artikel":20) $(" ":15 "Kommission":25"Artikelnr.":10 "Preis/Einheit":8 ) .HL .KOPF .SETFONT Stkl $(" ":3 "Anzahl":5 "Einh.":5 "Artikel":20) $(" ":17 "Kommission":23 "Artikelnr.":10 "Preis/Einheit":8) .HL .. .Fuß .HL .SETFONT Stkl

Page 17: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 17

$("Seite "+Seite C_Form ToMargin) .DATEN .SETFONT Std $(Anzahl:6 " ":2 Einheit:6 Artikel:47:0) .SETFONT Stkl $(" ":16 (Kommission + ". " + Baugruppe:20) " ":4 Artikelnummer:8 Europreis:6) .EPILOG .SETFONT Stkl .SETFONT Üs3 Mit freundlichen Grüßen Hanno Kniebel GmbH Gedruckt sieht das dann so aus:

Projektdateien:

Page 18: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 18

Funktionsstand: Neuanlage in einer Sekundärdatei Speichern in einer Hauptdatei Anschrift aus Adressendatei übernehmen Artikel mit Hilfe von Execdialog eintragen Druckausgabe über einen Job Ende Teil 1 Inhaltsverzeichnis

Teil 2 / Erweiterungen Unser neues Einkaufsprogramm hat nun die ersten Schritte gehen gelernt. Vom Säugling bis zum erwachsen sein ist nun mal ein langer Weg. Als nächsten Schritt lernen wir die Artikelübernahme aus einer Stammdatei

Artikeldatei Zunächst müssen wir nun unser Projekt um eine Tabelle erweitern, in welche wir unsere Stammartikel hinterlegen. Die folgende Tabellenstruktur zeigt ihnen wieder einen Möglichen Aufbau. Auch hier ist es möglich das hier Felder vorhanden sind, die Sie nicht benötigen und von daher nicht übernehmen. Die Tabellenstruktur ist auf meinen persönlichen Bedarf zugeschnitten und von daher nicht verbindlich. Struktur ARTIKEL-Tabelle Tabellenname:Artikel.dat Artikel (Datentyp:String Groesse:240 ) Artikelnummer (Datentyp:String Groesse:50 ) Verkaufstext (Datentyp:String Groesse:250 ) Verkaufspreis (Datentyp:Float Beschreibung:2 ) Lieferant (Datentyp:String Groesse:30 ) Einkaufspreis (Datentyp:Float Beschreibung:2 ) Datum (Datentyp:Date ) Beschreibung (Datentyp:String Groesse:250 ) Bemerkung (Datentyp:String Groesse:255 ) Lagernummer (Datentyp:String Groesse:15 ) Bestellmenge (Datentyp:Float Beschreibung:2 ) Einheit (Datentyp:String Groesse:7 ) Minimalmenge (Datentyp:Float Beschreibung:2 ) Bild (Datentyp:Blob ) Prozent (Datentyp:Float Beschreibung:2 ) Rabatt (Datentyp:String Groesse:12 ) Währung (Datentyp:String Groesse:5 ) Standardartikel(Datentyp:Boolean Muß-Feld ) Gruppen (Datentyp:String Groesse:20 ) Hinweis (Datentyp:String Groesse:250 ) ArtNrIntern (Datentyp:String Groesse:12 ) NrIntern (Datentyp:Float ) Präfix (Datentyp:String Groesse:5 ) Suchwort (Datentyp:String Groesse:120 ) Inventurtext (Datentyp:String Groesse:50 ) Inventurliste (Datentyp:Boolean Muß-Feld ) Anzahl (Datentyp:Float Beschreibung:2 ) InventPreis (Datentyp:Float Beschreibung:2 ) Inventleer (Datentyp:String Groesse:5 ) Europreis (Datentyp:Float Beschreibung:2 ) Laufende_Nummer(Datentyp:AutoInc Spezifikation:$Artikel:80 )

Page 19: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 19

Nun fehlen noch zur Artikel-Tabelle ein Formular für die Artikelauswahl und ein Modul für die Proceduren. Das Formular bekommt den Namen ARTEXPO von Artikel-Export hergeleitet. Das Formular kann in etwa wie folgt aussehen:

Nun aber erst wieder zurück zu unserem Erstellungsformular. Hier platzieren wir einen Weiteren Schalter mit der Aufschrift „Stammartikel“ der dann eine neue Procedur für die Artikelauswahl aufruft.

Die Procedur: Procedure ArtikelAuswahl; If Getmode <> 0 Activateform("ARTIKEL.ARTEXPO") DatensatzAuswählen("Name bitte auswählen"); ExecMacro(ARTIKEL,MarkierteKopieren) closewnd attach AnfangderTabelle ..endedertabelle Refresh; else Message("Sie befinden Sich nicht im Bearbeitungsmodus, Bitte Button unter Schritt 1 betätigen","Info") end endproc;

Page 20: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 20

Jetzt mag wieder einer meckern und sagen, ExecMacro wird nicht im Modul verwendet. Stimmt, wem es stört, der kann natürlich auch mit „uses“ das Artikelmodul einbinden, ich lasse es aber mal stehen, der besseren Übersicht wegen. Schon sind wir ganz nebenbei zu einer Procedur gekommen die im Artikelmodul aufgerufen wird. Dort erstellen wir folgende Procedur: .... Kopiert und überträgt alle die mit Sternchen markiert wurden ....Aufruf aus der Erstellungsliste ..02 Procedure MarkierteKopieren: real; If Starnum >0 .. Message(STR(Starnum)+ " Artikel werden übernommen") VARDEF RNo : REAL SetSortOrder("Markierung"); RNo:=FirstRec(ARTIKEL) if RNo >0 WHILE RNo > 0 ReadRec(ARTIKEL,RNo); ERSTELLUNG.Artikel := ARTIKEL.Artikel; .............Anzahleingabe T-Eingabe := "" Input("Anzahl für:..... "+ARTIKEL.Artikel, " Mengenangabe zum Wahl-Artikel") ERSTELLUNG.Anzahl := Val(T-Eingabe) ............ WriteRec(ERSTELLUNG,FileSize(ERSTELLUNG)+1); RNo := NextRec(ARTIKEL); Sortierung("ARTIKEL.ID",2) END Else Message("nichts markiert") end End Endproc; Funktion dieser Procedur: Es wird ein Auswahlformular für unsere Artikel geöffnet. Alle gewünschten Artikel markieren wir mit einem Sternchen durch ein Doppelklick im entsprechenden Feld links in der Tabelle. Dann schließen wir die Artikelauswahl über den Schalter OK. Da wir nur den Artikelmarkiert haben fehlt noch die gewünschte Anzahl. Für jeden markierten Artikel erfolgt eine direkte Abfrage in welche wir die gewünsche Anzahl eintragen.

Page 21: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 21

Hier die Eingabebox für die gewünschte Anzahl für den bestimmten Artikel

Stand Projektdateien

Funktionsstand: Neuanlage in einer Sekundärdatei Speichern in einer Hauptdatei Anschrift aus Adressendatei übernehmen Artikel mit Hilfe von Execdialog eintragen Druckausgabe über einen Job Artikelübernahme aus einer Stammartikeldatei Inhaltsverzeichnis

Systemtabelle Langsam wird es nun Zeit, eine Systemtabelle in unser Projekt zu integrieren. Diese Tabelle bekommt im Laufe der Erweiterungen immer mehr Aufgaben. Die Erste Aufgabe wird sein, für einen besseren optischen Programmstart zu sorgen, und uns die Möglichkeit zur Adressenauswahl oder Bestellungserstellung zu geben.

Page 22: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 22

Auch müssen wir langsam dafür sorgen, dass unsere Bestellungen eine Bestellnummer bekommen. Also nun zunächst die Tabelle SYSTEM mit dem Formular Startseite und einem Modul Struktur der Tabelle SYSTEM Tabellenname:System.dat Bestellnummer (Datentyp:String Groesse:15 ) Die Tabelle SYSTEM hat nicht viele Felder. Hier werden nur die Felder platziert, die in einer Netzversion für alle Anwender relevant sind wie z. B eine Bestellnummer. Diese Nummer wird nach vergabe einer Nummer immer neu berechnet. Die anderen Zwischenspeicherungen erfolgen ja in der lokalen Tabele PARALOKA Jetzt beginnen wir mit der Gestaltung des Formulars „Startseite“. Zugriff benötigen wir zunächst auf die Adressendatei, die Artikeldatei und das Bestellwesen. Die Artikeldatei und das Bestellwesen werden wieder mehrere Möglichkeiten zur Auswahl bekommen, also müssen hierzu noch weitere Auswahlmöglichkeiten erst noch geschaffen werden. Die Startseite habe ich so gestaltet, dass beim Start die Auswahlmöglichkeit für die Neuanlage einer Bestellung oder die Bearbeitung der Bestelldatei bestehen.

Da es sich bei dieser Seite um die Startseite handelt, die nicht geschlossen werden darf, also beim Start und nach dem Schließen anderer Formulare sichtbar bleiben muss, verändern wir noch die Eigenschaften hierzu. Für die Veränderung klicken wir mit der rechten Maustaste im Projektfenster das Formular an. Das Formulareigenschaftsfenster wir geöffnet. Dort deaktivieren den Schalte „schließen zulassen“

Page 23: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 23

Bestellnummernvergabe Die Vergabe der Bestellnummer/Vorgangsnummer erfolgt automatisch. Die Tabelle SYSTEM ist hierfür nur bedingt zuständig. Sie speichert lediglich die zuletzt vergebene Nummer. Die Berechnung einer neuen Bestellnummer erfolgt in der Tabelle/Modul ERSTELLUNG. Funktion: Eine Bestellnummer befindet sich in der Tabelle SYSTEM im Feld Bestellnummer. Wird eine neue Bestellung angelegt, wird diese Nummer aus der Systemtabelle gelesen. Zu dieser Nr wird eine +1 hinzugezählt. Dieses ist dann die neue Bestellnummer. Die soeben berechnete Bestellnummer wird nun in der Systemtabelle und in der Tabelle PARALOKA gespeichert. Eine sofortige Speicherung ist notwendig, damit auch an anderen Arbeitsplätzen im Netz, die zuletzt vergebene Nr bekannt ist und als Grundlage weiterer Bestellungen von anderen Arbeitsplätzen möglich ist. Eine Speicherung in PARALOKA ist notwendig, damit alle Artikel einer Bestellung die gleiche Bestellnummer bekommen. Für diese Bestellnummernautomatik ist die Procedur EingabeAnfang etwas zu erweitern. ..02 Schritt 1 für Schalter Neueingabe starten und Bestellnummernvergabe zuständig Procedure EingabeAnfang; If getmode = 0 ClearDat(ERSTELLUNG); regenall (ERSTELLUNG) attach; Refresh; DATENSÄTZEÄNDERN; Replace PARALOKA.Bestellnummer := Str(Val(SYSTEM.Bestellnummer)+1) SYSTEM.Bestellnummer := PARALOKA.Bestellnummer; Refresh; Elsif Getmode = 1 Setsortorder ("ERSTELLUNG.ID") If Message("Sie befinden sich im Eingabemodus möchten Sie die Eingabe verwerfen und neu starten?,","Info",3) = 7 return else ClearDat(ERSTELLUNG); regenall (ERSTELLUNG) attach; Refresh; end end endproc;

Page 24: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 24

Tabelle mit den Bestelldaten Wir können bereits Bestellungen schreiben und deren Inhalt in der Tabelle BESTELL speichern. Diese Tabelle wird aber eines Tages zu unserer Haupttabelle werden. Die Daten dieser Tabelle benötigen wir für alle unsere Anforderungen an das Einkaufswesen. Auf Grundlage dieser Daten können Liefertermine überprüft werden, ist Grundlage für die Kostenkalkulation von Projekten, wir können feststellen ob bestimmte Bestellungen geliefert sind usw.

Formular Bestellwesen Also benötigen wir zunächst ein Formular zu dieser Tabelle. Wir nennen es Bestellungen. Nach der Fertigstellung dieses Projektes könnte dieses Formular sehr umfangreich sein und sollte daher zweiseitig erstellt werden

Dieses Formular wird viele Schalter für die diversen Abfragen bekommen. Natürlich bleibt es Ihnen überlassen ob Sie Schalter im Formular platzieren oder lieber mit Menüschaltern arbeiten. Für dieses Formular halte ich die direkte Schalterplatzierung für sinnvoll um einen schnelleren Überblick der Möglichkeiten zu bekommen. Inhaltsverzeichnis

Zum Formular-Aufbau Zunächst sollten Sie das Formular, so wie es oben abgebildet ist, gestalten. Als sehr praktisch hat sich die gleichzeitige Verwendung der Schalter als Überschrift erwiesen, das spart Platz, wie in folgendem Bild zu sehen ist.

Page 25: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 25

Hier sind alle Überschriften bis auf „Best-Dat“ Schalter. Betätigen Sie z. B. Den Schalter/Überschrift „Best-Nr“ wird die Procedur zur Suche einer Bestellnummer aufgerufen usw.

Für die notwendigen Proceduren fügen wir noch schnell ein Modul zur Tabelle BESTELL in unser Projekt und schreiben gleich die erste Procedur, mit deren Hilfe wir die Tabelle nach bestimmten Bestellnummern durchsuchen.

Bestellnummer suchen Der Aufruf erfolgt von dem Überschrift/Schalter „Best-Nr“ ..01 Procedure BestellNr; Vardef cSuch : STRING Vardef nRec : REAL IF getmode = 1 DatensätzeÄndern; end T-Eingabe := "" SetSortOrder("BestellNr.IND") diesen Index erstellen nicht vergessen! AlleMarkierungenEntfernen(1) IF Input("Suchanweisung eingeben")=1 T-Eingabe := Upper(T-Eingabe) cSuch := T-Eingabe DelMarks(BESTELL); end Access(BESTELL, "BestNr.IND") nRec := FindREC(BESTELL,cSuch,"BestellNr.IND",1) While nRec > 0 ReadRec(BESTELL,nRec) if BESTELL.Bestellnummer = cSuch setmark(BESTELL,RecNo(BESTELL)) nRec := NextRec(BESTELL) else attach; Setsortorder("Markierung") Anfangdertabelle AlleMarkierungenEntfernen(1) attach; Refresh; return end end attach; Refresh; Message("nichts gefunden") endproc; Da die Tabelle sehr groß werden kann und später dann eventuell viele tausend Datensätze enthält, erfolgt hier keine Suche mit Byselction, sondern über den Index.

Page 26: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 26

Auch wenn eine Bestellung aus vielen zig Artikel besteht, ist das Ergebnis sofort da.

Lieferanten suchen Z. B. für Jahresauswertungen kann es sinnvoll sein alle Artikel aus allen Bestellungen an einen Lieferanten gelistet zu bekommen. Hier für verwende ich zwei unterschiedliche Proceduren, wie auch an der geteilten Form des/der Überschrift „Lieferant“ zu erkennen ist. Mit einer Procedur suche ich über einen Teilstring mit ..enthält.. „Meyer“. Hier würde Wefelmeyer oder auch Meyer gefunden. Um aber auch einen genauen Suchbegriff suchen zu können mit „ist“... wird die zweite Procedur notwendig. Procedure Lieferantensuche1; IF getmode = 1 DatensätzeÄndern; end T-Eingabe := "" IF Input("Den Gewünschten Lieferanten bitte eingeben...","Lieferant... suchen")=1 SetSortOrder("BESTLIEF.IND") diesen Index erstellen nicht vergessen! AlleMarkierungenEntfernen(1) T-Eingabe := Upper(T-Eingabe) If MitBedingung("Upper(Lieferant) hat T-Eingabe",1,1)>0 SetSortOrder("Markierung"); Elsif Message("Lieferant nicht gefunden","HKN-Info") End Attach; end ENDPROC; Die Procedur für eine genaue Suche Procedure Lieferant_ist(DUMMY: real); IF getmode = 1 DatensätzeÄndern; end T-Eingabe := "" IF Input("Den Gewünschten Lieferanten bitte eingeben...","Lieferant... suchen")=1 SetSortOrder("BESTLIEF.IND") AlleMarkierungenEntfernen(1) T-Eingabe := Upper(T-Eingabe) If MitBedingung("Upper(Lieferant) = T-Eingabe",1,1)>0 SetSortOrder("Markierung"); Elsif Message("Lieferant nicht gefunden","HKN-Info") End Attach; end ENDPROC; Stand Projektdateien

Page 27: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 27

Funktionsstand: Neuanlage in einer Sekundärdatei Speichern in einer Hauptdatei Anschrift aus Adressendatei übernehmen Artikel mit Hilfe von Execdialog eintragen Druckausgabe über einen Job Artikelübernahme aus einer Stammartikeldatei Automatische Vergabe von Bestellnummern Selektionsmöglichkeiten in der Bestelldatei Suche nach einer Bestellnummer Suche nach einen Lieferanten (zwei Möglichkeiten)

Lieferdatum Hinter dem Schalter/Überschrift Lieferdatum verbirgt sich die Pocedur Lieferung_faellig.

PROCEDURE Lieferung_faellig(DUMMY: real); VARDEF tRec : Real; tRec := RecNr(BESTELL); SetSortOrder("BESTELL.ID") T-Eingabe := "" AlleMarkierungenEntfernen(1) IF Input("Suchdatum eingeben")=1 T-Eingabe := VAL(T-Eingabe) MitBedingung("Lieferdatum <= T-Eingabe und Lieferdatum >0 und Geliefert = 0 ",1,1) END SetMark(BESTELL,tRec); SetSortOrder("BESTELL.ID") Attach; setSortOrder("Markierung"); ENDPROC;

Page 28: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 28

Verwendung: Bei Materialbestellungen für Projekte werden bestimmte Artikel bis zu einen bestimmten Liefertermin benötigt. Deshalb haben wir auch ein Feld zur Vorgabe des Liefertermins. Es ist nicht sinnvoll bis zum Liefertermin abzuwarten ob der Artikel auch geliefert wurde, denn dann könnten wir eine böse Überraschung erleben. Der Artikel wird nicht geliefert, oder wurde von unseren Vorlieferanten vergessen zu bestellen. Nun haben wir ein Problem, unser Projekt kann nicht begonnen werden. Was das bedeuten kann ist für jeden nachvollziehbar. Also Fragen wir rechtzeitig bei unserem Lieferanten nach, ob der entsprechende Artikel auch wirklich am gewünschten Termin geliefert wird. Für diese Nachfrage ist nun unsere Procedur. Wir geben den Liefertermin vor und alle zu liefernde Artikel für dieses Datum werden uns gezeigt.

Artikelsuche Auch die Überschrift über dem Feld „Artikel“ besteht aus zwei Schaltern. Ein Artikel kann über den Artikeltext „Schalter Artikel“ oder über den Schalter „Multisuche“ gesucht werden. Bei der Multisuche wird zusätzlich der Suchbegriff im Feld Artikelnummer gesucht.

Artikelsuche

Nachselektion allgemein Die Ergebnis der Selektionen befriedigt uns noch nicht ganz. Eventuell möchten wir nur die bereits gelieferten Artikel oder die noch nicht gelieferten Artikel gelistet bekommen. Für diese Fälle benötigen wir weitere Schalter und Proceduren. Eine Nachselektion ist eine weitere Eingrenzung unseres Suchbegriffs. Die Hauptselektion ist z.B ein bestimmtes Lieferdatum. Die Nachselektion ist die Eingrenzung der vorhandenen Selektion auf entweder „nur gelieferte“ oder „ nur nicht gelieferte“ Schalter, welche eine Nachselektion aufrufen habe ich in der Aufschrift mit (NS) gekennzeichnet. In diesem neuen Einkaufsprogramm sind die Nachselektionen „nicht geliefert“ und „geliefert“ sehr wichtig und werden sehr oft benötigt. Denn sie geben wir die notwendigen Informationen zu Lieferanten ,Lieferungen usw. Daher gestalte ich diese Schalter für Nachselektionen etwas auffälliger und setze einen zusätzlichen Rahmen.

Page 29: Einkaufsprogramm · Artikeldatei ... Für diese Tabelle erstellen wir sofort ein Formular, welches zur Eingabe unserer Artikel dient. Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

Hanno Kniebel Start 2 die Hilfe Für VDP-Anfänger

H:\CDBrennen1\Buch\Buch\Einkauf.doc 29

Nachselektion nicht geliefert .. Nur für Nachselektion nicht geliefert Procedure NS_nicht_geliefert; If MitBedingung("Geliefert = 0 und Ausgabe = 2" ,1,1)>0 SetSortOrder("Markierung"); Attach; Elsif Message("Keine Datensätze zum markieren gefunden","Status nicht geliefert..") END ENDPROC;

Nachselektion geliefert .. Nur für Nachselektion geliefert Procedure NS_geliefert; If MitBedingung("Geliefert = 1 und Ausgabe = 2",1,1)>0 SetSortOrder("Markierung"); Attach; Elsif Message("Keine Datensätze zum markieren gefunden","Status geliefert..") END ENDPROC;

Nachselektion nicht geliefert