Archive for the 'coldfusion' Category

25
มี.ค.
10

ใช้ Jasper Reports ออกรายงานเป็นไฟล์ PDF ผ่าน Railo Coldfusion

ความก่อนเขียน java ตรงๆคราวนี้จะใช้ coldfusion ให้เรียกคลาส java เพื่อเรียกใช้ jasper reports ให้สร้างรายงานเป็น pdf

โดยใช้ Railo ซึ่งเป็น opensource coldfusion application server และ ใช้ javaloader ซึ่งเป็น library ที่ช่วยใช้ coldfusion โหลดคลาสจาวา โดยไม่ต้องเอา jar ไฟล์ไปไว้ใน coldfusion classpath และไม่จำเป็นต้อง restart server ใหม่

ตัวอย่างโค้ด

                <cfscript>
                        // กำหนด path ของ jar ไฟล์ที่จะโหลด
                        paths = arrayNew(1);
                        paths[1] = expandPath("/jassperreports-lib/commons-digester-1.7.jar");
                        paths[2] = expandPath("/jassperreports-lib/jasperreports-3.7.1.jar");
                        paths[3] = expandPath("/jassperreports-lib/groovy-all.jar");
      
                        //create the loader
                        loader = createObject("component", "javaloader.JavaLoader").init(paths);


                        // getConnection ที่จำเป็นต้องใช้ผ่าน coldfusion datasource
                        datasourceService = createObject("java","coldfusion.server.ServiceFactory").getDataSourceService();
                        connection = datasourceService.getDatasource("qualinet").getConnection();

                        // hashMap ไว้เก็บค่า Property ต่างๆ ที่จะส่งไป fill ให้ jasper report
                        hashMap = createObject("java","java.util.HashMap").init();
                        hashMap.put("QUOTATION_ID",toString(url.qid));
                        // โหลดคลาส แต่ยังไม่ได้ทำการสร้าง instance
                        JasperFillManager = loader.create("net.sf.jasperreports.engine.JasperFillManager");
                        JasperExportManager = loader.create("net.sf.jasperreports.engine.JasperExportManager");
                        // โหลดแล้วสร้าง instance เลย
                        jrEmptyDataSource = loader.create("net.sf.jasperreports.engine.JREmptyDataSource").init();
                        
                        // ทำการ fill report โดยส่ง path ของ file jasper , hashMap และ connection 
                        jasperPrint = JasperFillManager.fillReport("/home/iporsut/railo/webapps/ROOT/example-0.6/quotation.jasper",hashMap,connection);

                        // export report ไปเป็นไฟล์ pdf
                        JasperExportManager.exportReportToPdfFile(jasperPrint,"/home/iporsut/railo/webapps/ROOT/quotation.pdf");
                </cfscript>
25
ส.ค.
08

Coldfusion cfloop readline from file

ตอนแรกตั้งใจอ่านไฟล์ โดยใช้ cffile ปกติ แล้วค่อยมาวนลูปค่าในไฟล์ที่ละบรรทัด
แล้วค้นไปเจอว่า CF8 มันสามารถใช้ cfloop กับ file ได้เลยลองใช้ดู ง่ายดีจริงๆ
ตัวอย่างเช่น

<cfloop file="#Expandpath('nqi/cfcservice/')#data.txt" index="line">
    <cfscript>
        data = listtoarray(line,"|");
    </cfscript>
    <cfquery datasource="AisNQG">
        insert into nqi_presentation values
        (<cfqueryparam cfsqltype="cf_sql_date" value="#data&#91;1&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_varchar" value="#data&#91;2&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_varchar" value="#data&#91;3&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_varchar" value="#data&#91;4&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_varchar" value="#data&#91;5&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_varchar" value="#data&#91;6&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_numeric" value="#data&#91;7&#93;#">,
         <cfqueryparam cfsqltype="cf_sql_numeric" value="#data&#91;8&#93;#">
         )
    </cfquery>
</cfloop>

แค่ใส่ attribute file เป็นพาธของไฟล์ ที่จะอ่าน แล้ว ใส่ตัวแปรให้กับ attribute index 
โดย เช่น line โดยตัวแปรนี้จะเก็บข้อมูลของแต่ละบรรทัดในไฟล์ที่กำลังอ่าน