home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1990
/
06
/
dtp
/
filter.prg
< prev
next >
Wrap
Text File
|
1989-01-05
|
9KB
|
286 lines
* 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