home *** CD-ROM | disk | FTP | other *** search
- * Programm.: FILTER.PRG
- * Autor....: Jörg Rohde
- * Datum....: 03.01.1989
- * Notiz....: Copyright (c) 1989, Jörg Rohde, Alle Rechte vorbehalten
-
- CLEAR all
-
- * Initialisierung der DBASE - Systemvariablen
-
- SET SAFETY OFF
- SET SCOREBOARD OFF
- SET TALK OFF
- SET BELL OFF
- SET STATUS ON
- SET ESCAPE OFF
- SET CONFIRM ON
- SET DELETED OFF
-
- * Grundzustand der geöffneten Dateien einrichten
-
- USE datei INDEX datei && Für datei kann eine beliebige
- SET FORMAT TO datei && DBASE-Datei angegeben werden
-
- * Initialisierung der Programmvariablen
-
- Bedingung = ''
- statzeile = ' alle Daten'
- status = ''
- status1 = ''
- status2 = ''
- status3 = ''
- status4 = ''
- status5 = ''
- Beding1 = ''
- Beding2 = ''
- Beding3 = ''
- Beding4 = ''
- Beding5 = ''
-
- **********************************************************************
-
- * Hauptprogramm-Schleife : Das Hauptmenü wird bis zum Programmende
- * aufgerufen
-
- DO WHILE .T.
-
- CLEAR TYPEAHEAD && Tastaturpuffer leeren
-
- SET FILTER TO &Bedingung && Nur auf bestimmte Daten zugreifen
-
- * --- Zentrierte Anzeige der Menüauswahl auf dem Bildschirm,
- * Rahmen zeichnen und Überschrift ausgeben.
- CLEAR
- CLEAR GETS
- @ 2,0 TO 20,79 DOUBLE
- @ 3,22 SAY [E I G E N E - D A T E I]
- @ 4,1 TO 4,78 DOUBLE
- @ 3,1 SAY [Datum : ]+DTOC(DATE())
- * --- Anzeige der Menü-Punkte
- @ 6,21 SAY [1. Neue Datensätze anhängen]
- @ 7,21 SAY [2. Vorhandene Datensätze ändern]
- @ 8,21 SAY [3. Gelöschte Datensätze entfernen]
- @ 9,21 SAY [4. Filter setzen]
- @ 10,21 SAY [5. Report ausdrucken]
- @ 11,21 SAY [6. ]
- @ 12,21 SAY [7. ]
- @ 13,21 SAY [8. ]
- @ 14,21 SAY [9. ]
- @ 16,21 SAY [0. Ende]
- @ 17, 1 SAY [Im Zugriff : ]
- @ 19, 1 SAY statzeile
- @ 17,45 SAY [ Auswahl :]
- @ 17,56 SAY [0]
- @ 16,18 SAY [->]
-
- * Anzeigen der Zeit im Hauptmenü mit Tastatur-Abfrage
-
- selectnum = 0
- zeichen = INKEY()
- DO WHILE zeichen <> 13 && Bei Eingabe von RETURN wird die
- @ 3,64 SAY [Zeit : ]+TIME() && Schleife verlassen und die
- zeichen = zeichen - 48 && Eingabe bearbeitet
- DO CASE
- CASE zeichen = 0 && Umsetzen der Tastatur-Eingaben
- @ 5+selectnum,18 SAY [ ]
- selectnum = 0
- @ 16,18 SAY [->]
- @ 17,56 SAY [0]
- CASE (zeichen>0) .AND. (zeichen<6) && nur 6 Menü-Punkte ...
- IF selectnum = 0 && auf 10 erweiterbar !
- @ 16,18 SAY [ ]
- ELSE
- @ 5+selectnum,18 SAY [ ]
- ENDIF
- selectnum = zeichen
- @ 5+selectnum,18 SAY [->]
- @ 17,56 SAY STR(selectnum,1,0)
- ENDCASE
- zeichen = INKEY()
- ENDDO
-
- **********************************************************************
-
- DO CASE
- CASE selectnum = 0
- * Programmende
- CLEAR ALL
- QUIT
-
- **********************************************************************
-
- CASE selectnum = 1
- * Neue Datensätze anhängen
- APPEND
-
- **********************************************************************
-
- CASE selectnum = 2
- * Vorhandene Datensätze ändern
- EDIT
-
- **********************************************************************
- CASE selectnum = 3
- * Gelöschte Datensätze entfernen
- SET FORMAT TO
- CLEAR
- ?
- ? 'ALLE GELÖSCHTEN DATENSÄTZE WERDEN ENTFERNT'
- ?
- SET TALK ON
- PACK
- SET TALK OFF
- SET FORMAT TO datei
-
- **********************************************************************
-
- CASE selectnum = 4
- * Filter setzen
-
- SET FORMAT TO
- SET STATUS OFF
- CLEAR
- ?" Aktuelle Filter :"
- x = 1
- DO WHILE x < 6 && Filter-Bedingungen auflisten
- filtbed = "status" + STR(x,1)
- @ 2+2*x,4 SAY STR(x,1,0) + " ... " + &filtbed
- x = x + 1
- ENDDO
-
- auswahl = 0
- @ 16,4 SAY "Welchen Filter auswechseln : " GET auswahl;
- PICTURE "9" RANGE 1,5
- READ
- IF auswahl > 0
- IF statzeile <> " alle Daten" && falls noch keine Bedingung
- && existiert, Abfrage sinnlos
- eing = " "
- DO WHILE eing<>"O" .AND. eing<>"U" .AND. auswahl > 0
- @ 18,4 SAY "Bedingungen mit U nd oder mit O der verknüpfen ? ";
- GET eing PICTURE "!"
- READ
- ENDDO
- IF eing = "O"
- zeilen = ".OR. "
- statzeile = [Oder:]
- ELSE
- zeilen = ".AND."
- statzeile = [Und :]
- ENDIF
- ELSE
- zeilen = "-----"
- statzeile = [--- :]
- ENDIF
-
- IF auswahl > 0
- CLEAR
- TEXT
- Welchen Filter setzen :
-
-
- 1 ... Vertriebsbereich herausfiltern
-
- 2 ... Letzten Kontakt als Filter benutzen
-
- 3 ... Filter zurücksetzen
- ENDTEXT
- frage = 0
- @ 23,5 SAY "Auswahl : " GET frage PICTURE "9" RANGE 1,3
- READ
- DO CASE
- CASE frage = 1
- && D- ist Vorgabe für Deutschland
- eing = "D- "
- @ 21,50 SAY "PLZ - Anfang : " GET eing;
- PICTURE "XXXXXX"
- READ
- eing = TRIM(eing)
- status = "PLZ : " + eing
- Bedingung = [SUBSTR(plz,1,]+STR(LEN(eing),1,0)+[)="]+eing+["]
-
- CASE frage = 2
-
- speicher = -11111
- anzahl = 0
- DO WHILE .T.
- @ 21,50 SAY "Anzahl der Tage : " GET anzahl;
- PICTURE "99999"
- READ
- @ 22,69 SAY DATE() - anzahl
- IF speicher = anzahl && Abbruch der Schleife bei
- EXIT && Eingabe von zweimal
- ENDIF && demselben Datum
- speicher = anzahl
- ENDDO
- @ 22,69 SAY " "
- eing = " "
- DO WHILE eing<>"A" .AND. eing<>"V" .AND. eing<>"N"
- @ 21,45 SAY "V or, A m oder N ach "+DTOC;
- (DATE()-anzahl)+" : " GET eing PICTURE "!"
- READ
- ENDDO
- DO CASE
- CASE eing = "V"
- status = "Vor " + DTOC(DATE()-anzahl)
- Bedingung = [le_kontakt <= DATE()-] + STR(anzahl,5)
- CASE eing = "N"
- status = "Nach " + DTOC(DATE()-anzahl)
- Bedingung = [le_kontakt >= DATE()-] + STR(anzahl,5)
- CASE eing = "A"
- status = "Am " + DTOC(DATE()-anzahl)
- Bedingung = [le_kontakt = DATE()-] + STR(anzahl,5)
- ENDCASE
-
- CASE frage = 3
- status = []
- Bedingung = ''
- ENDCASE
-
- && filtbed ist eine Hilfs-Variable, um den jeweils
- && angewählten Filter zu auszutauschen
-
- filtbed = "status" + STR(auswahl,1)
- &filtbed = status
- filtbed = "Beding" + STR(auswahl,1)
- &filtbed = Bedingung
-
- * Neue Filterbedingung und neue Statuszeile erzeugen
-
- x = 1
- Bedingung = []
- DO WHILE x < 6
- filtbed = "status" + STR(x,1)
- statzeile = statzeile + " " + &filtbed
- filtbed = "Beding" + STR(x,1)
- IF LEN(TRIM(&filtbed)) > 0
- Bedingung = Bedingung + zeilen + &filtbed
- ENDIF
- x = x + 1
- ENDDO
- IF LEN(TRIM(Bedingung)) > 0
- Bedingung = RIGHT(Bedingung, LEN(Bedingung)-5)
- ENDIF
- ENDIF
- IF LEN(TRIM(statzeile)) = 5 && keine Bedingungen aktuell
- statzeile = " alle Daten"
- ENDIF
- ENDIF
- SET STATUS ON
- SET FORMAT TO datei
-
- **********************************************************************
-
- CASE selectnum = 5
- * Report ausdrucken
- CLEAR
- REPORT FORM datei TO PRINT
-
- **********************************************************************
-
- ENDCASE
-
- ENDDO T
-
- RETURN
-