Visual FoxPro'da rapor alanlarını program aracılığıyla değiştirme

Bu makalede, bir alanın yazı tipi rengini değiştirmek için rapor dosyasının program aracılığıyla nasıl değiştirileceği anlat kullanılmaktadır.

Orijinal ürün sürümü: Visual FoxPro
Özgün KB numarası: 188403

Özet

Değerleri ayırt etmek veya bir koşula bağlı olarak biçimi değiştirmek için rapor alanlarını program aracılığıyla değiştirmek tercih edilebilir. Bu makalede, tek bir satış temsilcisinin satış toplamlarına göre rapor alanının yazı tipi renginin nasıl değiştireceği gösterilmektedir. Bu teknik Microsoft Visual FoxPro 9.0 Professional Edition'da çalışsa da Rapor Dinleyicisi'ni ve olay odaklı yazdırmayı kullanarak aynı sonuçları elde edebilirsiniz.

Daha fazla bilgi

Aşağıda bir tablo oluşturulur, tablo doldurulur ve satış raporu çalıştırılır ve yazı tipi rengi satış toplamlarını yansıtacak şekilde değiştirilir. Rapor alanının rengini değiştirmek için rapor alanının kaydının PenRed, PenGreen ve PenBlue alanları değiştirilir. Bu yöntem yazı tipi stilini, yazı tipi boyutunu ve hatta alanı yeniden konumlandırmak için de kullanılabilir. Buna ek olarak, tüm nesne sınıfı değiştirilebilir; örneğin, REPLACE ALL <özellik alanı> FOR objtype = 8 özellik değeriyle <> değiştirilebilir.

  1. Aşağıdaki kodu Maketabs.prg adlı bir program dosyasına kaydedin ve tabloyu oluşturup doldurmak için programı çalıştırın.

    Örnek Kod

     *-- Code begins here.
     CREATE TABLE sales (ID c(10), invamt N(8,2))
     INSERT INTO sales (ID, invamt) VALUES ("JOE", 1000)
     INSERT INTO sales (ID, invamt) VALUES ("MARY", 2000)
     INSERT INTO sales (ID, invamt) VALUES ("HARRY", 500)
     INSERT INTO sales (ID, invamt) VALUES ("JOE", 1001)
     INSERT INTO sales (ID, invamt) VALUES ("MARY", 2001)
     INSERT INTO sales (ID, invamt) VALUES ("HARRY", 501)
     INSERT INTO sales (ID, invamt) VALUES ("JOE", 1002)
     INSERT INTO sales (ID, invamt) VALUES ("MARY", 2002)
     INSERT INTO sales (ID, invamt) VALUES ("HARRY", 502)
     *-- Code ends here
    
  2. Rapor oluşturma. Sayfa Üst Bilgisi bandında bir rapor alanı ekleyin ve ifadeyi salestot.id. Ayrıntı bandında bir rapor alanı ekleyin ve salestot.invamt ifadesini oluşturun. Sayfa Alt Bilgisi bandında bir rapor alanı ekleyin ve salestot.invamt ifadesini oluşturun. Rapor İfadesi iletişim kutusunda Hesaplamalar düğmesine tıklayın. Topla'yı seçin, Tamam'a tıklayın ve sonra yeniden Tamam'a tıklayın. Raporu Sales.frx olarak kaydedin.

  3. Aşağıdaki kodu Sales.prg adlı bir program dosyasına kaydedin ve programı çalıştırın:

     *-- Code begins here.
     SET TALK OFF
     *-- Get a list of salespersons.
     SELECT DISTINCT id FROM sales INTO CURSOR list
    
     *-- Step through the list and print sales results for each
     *-- salesperson.
     SCAN
     SELECT * FROM sales WHERE id = list.id INTO CURSOR salestot
    
    *-- Get the total sales for this person.
     SUM invamt TO lnTotal
     SELECT 0
    
    *-- Open the report file as a table.
     USE sales.frx
    
     *-- We're looking for a field (objtype) that is
     *-- calculated (totaltype) and whose expression
     *-- (expr) is equal to table field we're calculating.
     LOCATE FOR objtype = 8 AND totaltype = 2 AND ;
     ATC("salestot.invamt", expr) > 0
    
    *-- Save the values for the pen and fill fields.
     lnPenRed = penred
     lnPenGreen = pengreen
     lnPenBlue = penblue
    
    *-- Modify the font color for the sales total.
     DO CASE
     CASE lnTotal > 3000 AND lnTotal < 6000 && Print green
     REPLACE penred WITH 0, pengreen WITH 255, penblue WITH 0
     CASE lnTotal > 6000 && Print blue
     REPLACE penred WITH 0, pengreen WITH 0, penblue WITH 255
     OTHERWISE && Print dark red on white
     REPLACE penred WITH 128, pengreen WITH 0, penblue WITH 0
     ENDCASE
     USE
     SELECT salestot
    
    *-- Change PREVIEW to TO PRINTER to print the report.
     REPORT FORM sales PREVIEW
     ENDSCAN()
    
    *-- Restore the original values.
     USE sales.frx
     LOCATE FOR objtype = 8 AND totaltype = 2 AND ;
     ATC("sales.invamt", expr) > 0
     REPLACE penred WITH lnPenRed, pengreen WITH lnPenGreen,;
     penblue WITH lnPenBlue
     USE
     CLOSE DATA
     *-- Code ends here.
    
  4. Her raporun önizlemesi görüntülendiğinden, özeti görmek ve her satış temsilcisi için rengin nasıl değiştiğini görmek için en alta kaydırın.