Mong các bạn giúp mình về Search textbox combobox cung luc .....

lephu109

New Member
18/3/10
16
1
3
Mình có bài tập search nhân viên gồm có: textbox Name ,combobox Sex ,textbox birthdayTo ,textbox birthdayFrom.
Mình search được textbox Name ,combobox Sex nhưng viết thêm Search textbox birthdayTo ,textbox birthdayFrom thì báo sai index value.Còn đây là code mình mong các bạn giúp dum mình .Cám ơn :

public List<CustomerForm> searchCustomer(CustomerCondition customerCondition) {
List<CustomerForm> listCustomer = null ;
CustomerForm customerForm = null;

Connection conn = ODBC_Connection.getDBConnection();
String sql = "SELECT CUSTOMER_ID,CUSTOMER_NAME,SEX,BIRTHDAY,ADDRESS FROM MSTCUSTOMER WHERE ";

if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
sql += "CUSTOMER_NAME like ?";
}
if (!customerCondition.getSex().equals("")){
sql += "AND SEX = ?";
}
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() !=""){
sql += "AND BIRTHDAY >= ?";
}

try {

PreparedStatement st = conn.prepareStatement(sql);

if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
st.setString(1, "%" + customerCondition.getCusName() + "%" );
}
if (!customerCondition.getSex().equals("")){
st.setString(2, customerCondition.getSex());
}
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() != ""){
st.setString(3, customerCondition.getBirthday());
}


ResultSet rs = st.executeQuery();

listCustomer = new ArrayList<CustomerForm>();

while (rs.next()) {
String sex = "";
if (rs.getString("SEX").equals("0")) {
sex = "Male";
} else if (rs.getString("SEX").equals("1")) {
sex = "Female";
} else {
sex = rs.getString("SEX");
}

customerForm = new CustomerForm();
customerForm.setCusName(rs.getString("CUSTOMER_NAME"));
customerForm.setCusID(rs.getInt("CUSTOMER_ID"));
customerForm.setSex(sex);
customerForm.setBirthday(rs.getString("BIRTHDAY"));
customerForm.setAddress(rs.getString("ADDRESS"));

listCustomer.add(customerForm);
}

rs.close();
conn.close();

} catch (SQLException e) {
System.out.println("Exception is :" +e);
}

return listCustomer;
}
 

thanht2pro

Member
13/9/11
92
12
8
Mình có bài tập search nhân viên gồm có: textbox Name ,combobox Sex ,textbox birthdayTo ,textbox birthdayFrom.
Mình search được textbox Name ,combobox Sex nhưng viết thêm Search textbox birthdayTo ,textbox birthdayFrom thì báo sai index value.Còn đây là code mình mong các bạn giúp dum mình .Cám ơn :

public List<CustomerForm> searchCustomer(CustomerCondition customerCondition) {
List<CustomerForm> listCustomer = null ;
CustomerForm customerForm = null;

Connection conn = ODBC_Connection.getDBConnection();
String sql = "SELECT CUSTOMER_ID,CUSTOMER_NAME,SEX,BIRTHDAY,ADDRESS FROM MSTCUSTOMER WHERE ";

if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
sql += "CUSTOMER_NAME like ?";
}
if (!customerCondition.getSex().equals("")){
sql += "AND SEX = ?";
}
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() !=""){
sql += "AND BIRTHDAY >= ?";
}

try {

PreparedStatement st = conn.prepareStatement(sql);

if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
st.setString(1, "%" + customerCondition.getCusName() + "%" );
}
if (!customerCondition.getSex().equals("")){
st.setString(2, customerCondition.getSex());
}
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() != ""){
st.setString(3, customerCondition.getBirthday());
}


ResultSet rs = st.executeQuery();

listCustomer = new ArrayList<CustomerForm>();

while (rs.next()) {
String sex = "";
if (rs.getString("SEX").equals("0")) {
sex = "Male";
} else if (rs.getString("SEX").equals("1")) {
sex = "Female";
} else {
sex = rs.getString("SEX");
}

customerForm = new CustomerForm();
customerForm.setCusName(rs.getString("CUSTOMER_NAME"));
customerForm.setCusID(rs.getInt("CUSTOMER_ID"));
customerForm.setSex(sex);
customerForm.setBirthday(rs.getString("BIRTHDAY"));
customerForm.setAddress(rs.getString("ADDRESS"));

listCustomer.add(customerForm);
}

rs.close();
conn.close();

} catch (SQLException e) {
System.out.println("Exception is :" +e);
}

return listCustomer;
}
Tớ nhìn vào bài của bạn thì cho tớ hỏi cái này tí nha.
Nếu tớ ko muốn tìm theo CUSTOMER_NAME mà tớ chỉ muốn tìm theo SEX thôi thì cậu nghỉ câu sql của bạn có chạy dc ko?
Chắc chắn ko được luôn nhé.
Bạn bảo bạn tìm cả CUSTOMER_NAME và SEX mà câu sql chạy được thì có vẽ hơi lại tí, vi tớ thấy giữa các lần nối chuổi điều kiện của cậu chả thấy cậu có dấu cách vào giữa thì nó nối liền nhau thế mà chạy dc thì khó hiểu. Góp ý bạn nên bỏ thêm dấu cách ở mỗi lần cậu cộng chuỗi điều kiện vào nha.
Còn cái so sánh ngày tháng đó thì cậu check xem cậu có phải để kiểu date trong database ko nha.
Trước khi thực hiện câu này cậu in ra màn hình xem câu sql của bạn như thế nào rùi check xem nha:
Code:
System.out.println(sql);
PreparedStatement st = conn.prepareStatement(sql);
 

lephu109

New Member
18/3/10
16
1
3
Mình viết 2 đoạn code này:
String sql = "SELECT CUSTOMER_ID,CUSTOMER_NAME,SEX,BIRTHDAY,ADDRESS FROM MSTCUSTOMER WHERE ";
if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
sql += "CUSTOMER_NAME like ? ";
}
if (!customerCondition.getSex().equals("")){
sql += " AND SEX = ? ";
}

thì Search textbox CusName hay chọn cobobox Sex vẫn hiên thị data nhưng viết thêm đoạn code search BIRTHDAY nay :
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() !=""){
sql += " AND BIRTHDAY >= ? ";
} thì báo lỗi này
SELECT CUSTOMER_ID,CUSTOMER_NAME,SEX,BIRTHDAY,ADDRESS FROM MSTCUSTOMER WHERE CUSTOMER_NAME like ? AND BIRTHDAY >= ?
Exception is :java.sql.SQLException: Invalid column index
Khong co du lieu !
mính không hiểu sai Invalid column index chỗ nào :
try {
System.out.println(sql);
PreparedStatement st = conn.prepareStatement(sql);
if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
st.setString(1, "%" + customerCondition.getCusName() + "%" ); }
if (!customerCondition.getSex().equals("")){
st.setString(2, customerCondition.getSex());
}
if (customerCondition.getBirthday() != null || customerCondition.getBirthday() != ""){
st.setString(3, customerCondition.getBirthday());
}
Mong các bạn giúp dùm .Cám ơn rất nhiều .
 
Sửa lần cuối:

lephu109

New Member
18/3/10
16
1
3
các bạn trong diễn đàn ai biết xin giúp mình .........cám ơn
 

thanht2pro

Member
13/9/11
92
12
8
Bạn để lại cái yahoo hay skype gì đó cũng dc. Tối mình rãnh mình teamview xem thử xem sao.
Chứ đọc trên này cũng khó giải quyết quá
 

Joe

Thành viên VIP
21/1/13
2,736
1,256
113
Lephu
think more about your following codes and tell me what is the outcome?
PHP:
if (customerCondition.getCusName()!=null || customerCondition.getCusName() !=""){
...
}
An empty String is a string that's UNEQUAL null, right? Coding and programming are child's play. Good logic must be learned, thoroughly pondered and trained...