Author Archive pitt phunsanit

Bypitt phunsanit

joget:Form Options Binder

ตัวอย่างการดึงฐานข้อมูลมาแสดงเป็น select box โดยใช้ Bean Shell

  1. ใน Form Binder คลิก selectbox ที่ต้องการ
  2. Or Choose Options Binder เลือกเป็น Bean Shell Form Binder
  3. คลิก next จะเปลี่ยนไปหน้า Edit Select Box > Configure Bean Shell Form Binder > Advanced Options ให้นำ code ไปใส่ไว้
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import javax.sql.DataSource;
    import org.joget.apps.app.service.AppUtil;
    import org.joget.apps.form.model.Element;
    import org.joget.apps.form.model.FormData;
    import org.joget.apps.form.model.FormRow;
    import org.joget.apps.form.model.FormRowSet;
    import org.joget.apps.form.service.FormUtil;
    import org.joget.commons.util.LogUtil;
    
    public FormRowSet load(Element element, String primaryKey, FormData formData) {
    FormRowSet rows = new FormRowSet();
    Connection con = null;
    try {
    /*retrieve connection from the default datasource*/
    DataSource ds = (DataSource) AppUtil.getApplicationContext().getBean("setupDataSource");
    con = ds.getConnection();
    /*execute SQL query*/
    if (!con.isClosed()) {
    String sql = "SELECT PROVINCE_ID AS value, TRIM(PROVINCE_NAME) AS label FROM province ORDER BY PROVINCE_NAME ASC";
    PreparedStatement stmt = con.prepareStatement(sql);
    ResultSet rs = stmt.executeQuery();
    
    FormRow option = new FormRow();
    
    option.setProperty(FormUtil.PROPERTY_LABEL, "please select");
    //option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject("value").toString());
    
    rows.add(option);
    
    while (rs.next()) {
    FormRow option = new FormRow();
    
    option.setProperty(FormUtil.PROPERTY_LABEL, (String) rs.getObject("label"));
    option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject("value").toString());
    
    rows.add(option);
    }
    }
    } catch (Exception e) {
    LogUtil.error("Sample app - Form 1", e, "Form Options Binder");
    } finally {
    /*always close the connection after used*/
    try {
    if (con != null) {
    con.close();
    }
    } catch (SQLException e) { /*ignored*/ }
    }
    return rows;
    }
    
    /*call load method with injected variable*/
    return load(element, primaryKey, formData);

การเซ็ต value ของ option บางครั้งต้องแปลง integer เป็น string ด้วยเช่น option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject(“value”).toString());

Bypitt phunsanit

Cannot connect to \SQLEXPRESS.

เห็นมีถามกันเป็นระยะกับเรื่อง

TITLE: Connect to Server
——————————

Cannot connect to \SQLEXPRESS.

——————————
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

——————————

Database ‘mssqlsystemresource’ is being recovered. Waiting until recovery is finished. (Microsoft SQL Server, Error: 922)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.2000&EvtSrc=MSSQLServer&EvtID=922&LinkId=20476

——————————
BUTTONS:

OK
——————————

อ่านซะงงจริงๆ แล้วปัญหาคือ service SQLAgent$SQLEXPRESS หรือ SQL Server Agent (SQLEXPRESS) มัน start ไม่สำเหร็จ ที่เจอบ่อยๆคือ MSSQL$SQLEXPRESS หรือ SQL Server (SQLEXPRESS) มัน start ขึ้นมาก่อน วิธีแก้

  • ไปที่ run พิมพ์ services.msc เอ็นเทอร์
  • แล้วเลื่อนไปหา พวก SQL xxx คลิกขวา Stop ให้หมด
  • แล้วคลิก SQL Server Agent (SQLEXPRESS) คลิกขวา start
  • ทดลอง connect ดูใหม่อีกครั้ง น่าจะ connect ได้แล้ว
  • ถ้าใช้เครื่องเป็น web server ด้วย SQL Server Reporting Services (SQLEXPRESS) ก็ให้ stop และเลือก property เปลี่ยน startup type เป็น manual เพราะว่ามันใช้ port 80 เหมือนกับพวกเว็บเซิร์ฟเวอร์ เป็นสาเหตุที่ทำให้ apache start ไม่สำเร็จได้

จริงๆ ถ้า ms ใส่ใจอีกซักหน่อย หรือเขียน error message ให้ดีกว่านี้ซะหน่อยก็คงไม่มีคนเข้ามาถามกันบ่อยๆ

อีกจุดที่ ต้องดูถ้ายัง connect ไม่ได้คือ ไปที่ เมนู > Microsoft SQL Server 20xx > SQL Server Configuration Manager ดูพวก TCP/IP (มีหลายที่) ให้เปลี่ยนเป็น enable แล้ว restart SQL Server Agent ใหม่