progress-4gl
प्रश्नों
खोज…
परिचय
उदाहरण प्रगति की स्थापना के साथ प्रदत्त डेमो डेटाबेस Sports 2000
की एक प्रति पर आधारित होंगे।
प्रगति में प्रश्नों के साथ काम करते समय आपको निम्न की आवश्यकता होती है:
DEFINE
क्वेरी और सेट क्या बफ़र्स (टेबल्स) और खेतों इसके खिलाफ काम करता है।
विशिष्ट WHERE
-clause के साथ क्वेरी को OPEN
जो रिकॉर्ड्स को पुनः प्राप्त करने के तरीके को परिभाषित करता है। संभवतः छँटाई भी ( BY
/ BREAK BY
)
वास्तविक डेटा GET
- जो FIRST
, NEXT
, PREV
(पिछले के लिए) या LAST
मिलान रिकॉर्ड हो सकता है।
वाक्य - विन्यास
- बफर-नाम के लिए क्वेरी क्वेरी नाम। // एक बफर के लिए सामान्य क्वेरी परिभाषा
- बफर-नेम 1, बफर-नेम 2 के लिए क्वेरी क्वेरी नाम। // दो बफर्स में शामिल होना
- बफर के नाम के लिए DEFINE QUERY क्वेरी-नाम (फ़ील्ड 1 फ़ील्ड 2)। // केवल रिट्रेक्टिव फ़ील्ड 1 और फ़ील्ड 2
- बफर के नाम के लिए DEFINE QUERY क्वेरी-नाम EXCEPT (फ़ील्ड 3)। // फ़ील्ड 3 को छोड़कर सभी फ़ील्ड पुनर्प्राप्त करें।
मूल प्रश्न
/* Define a query named q1 for the Customer table */
DEFINE QUERY q1 FOR Customer.
/* Open the query for all Customer records where the state is "tx" */
OPEN QUERY q1 FOR EACH Customer WHERE Customer.state ='TX'.
/* Get the first result of query q1 */
GET FIRST q1.
/* Repeat as long as query q1 has a result */
DO WHILE NOT QUERY-OFF-END('q1'):
/* Display Customer.Name in a frame called frame1 with 10 rows */
DISPLAY Customer.Name WITH FRAME frame1 10 DOWN.
/* Move down the target line where to display the next record */
DOWN WITH FRAME frame1.
/* Get the next result of query q1 */
GET NEXT q1.
END.
/* Display how many results query q1 had. */
DISPLAY NUM-RESULTS('q1') LABEL "Number of records".
/* Close the query */
CLOSE QUERY q1.
आउटपुट (विंडोज गुजरात में तीसरी स्क्रीन):
मल्टी-टेबल्स क्वेरी
यह क्वेरी तीन तालिकाओं में शामिल होगी: ग्राहक, ऑर्डर और ऑर्डरलाइन।
के उपयोग OF
रूप में बयान childtable OF parenttable
मानता है कि अनुक्रमित एक विशिष्ट तरीके से निर्माण कर रहे हैं। यही कारण है कि sports2000-database में मामला है।
DEFINE QUERY q1 FOR Customer, Order, Orderline.
OPEN QUERY q1 FOR EACH Customer WHERE Customer.state = 'TX'
, EACH Order OF customer WHERE order.custnum < 1000
, EACH orderline OF order.
GET FIRST q1.
DO WHILE NOT QUERY-OFF-END('q1'):
DISPLAY Customer.Name Order.OrderNum OrderLine.LineNum
WITH FRAME frameA 20 DOWN.
DOWN WITH FRAME frameA.
GET NEXT q1.
END.
CLOSE QUERY q1.
परिणाम: Windows GUI में:
अगले, पहले, प्रचलित और अंतिम का उपयोग करके एक क्वेरी के साथ चलती कविता
DEFINE QUERY q1 FOR Customer.
OPEN QUERY q1 FOR EACH Customer.
GET FIRST q1.
loop:
REPEAT:
IF AVAILABLE Customer THEN DO:
DISPLAY Customer.NAME CustNum WITH FRAME frClient TITLE "Client data".
DISPLAY
"(P)revious" SKIP
"(N)ext" SKIP
"(F)irst" SKIP
"(L)ast" SKIP
"(Q)uit" SKIP
WITH FRAME frInstr
TITLE "Instructions".
END.
READKEY.
IF LASTKEY = ASC("q") THEN LEAVE loop.
ELSE IF LASTKEY = ASC("n") THEN
GET NEXT q1.
ELSE IF LASTKEY = ASC("p") THEN
GET PREV q1.
ELSE IF LASTKEY = ASC("l") THEN
GET LAST q1.
ELSE IF LASTKEY = ASC("f") THEN
GET FIRST q1.
END.
MESSAGE "Bye" VIEW-AS ALERT-BOX.