У меня есть метод в классе dao с именем "getDetails" . В этом методе я объединяю два оператора select из двух таблиц с почти таким же названием под "главным магазином и " подкатегориями и помещаю эти запросы в готовое состояние. Затем я помещаю подготовленное состояние в resultSet.
Этот метод "getDetials" возвращает "подробности" , и я буду использовать его в другом методе в медиаторе с именем "writefile" , чтобы для печати значений в слове microsoft, например "файл записи (подробности)" . В методе "writefile" существуют строки значений и помещаются значения "details" в соответствующую строку. И добавьте "outputString" для каждого значения.
На экране ввода пользователь может проверить флажок "вспомогательных магазинов и заполнить данные " подкатегорий после проверки. Если они не проверяют, им нужно заполнить только "основные данные, а не " подкатегории ". Если они проверяют " главный магазин ", мне нужно напечатать только одну букву. Если они проверяют " вспомогательные магазины " и заполняют количество суб-магазинов" , мне нужно напечатать буквы, в которых число букв равно ", количество подмагазины" + один (основная буква). Формат букв полностью таков, но только измените значение полей "название магазина" (основной или вспомогательный магазин), "код банка магазина" (основной или вспомогательный магазин ) в соответствии с выбором пользователя.
В медиаторе я запишу "файл записи (подробности)" в соответствии с количеством "подкатегорий" .
Проблема заключается в том, что данные в разных письмах одинаковы (только показать основной файл "), хотя правильность буквы правильна (например, если есть два " подмагазина ", он печатает три буквы). Как сделать, чтобы получить значение "подкатегорий" в последующих письмах после печати "основного магазина".
Это метод "writefile"
if(flag){
this.getHeading();
StringBuffer outputString = new StringBuffer();
Date date = new Date();
SimpleDateFormat formatter=new SimpleDateFormat("dd MMMMM,yyyy");
String dateString=formatter.format(date);
details.sysDate =dateString;
String date1=(String)details.getSysDate();
if(details.getNo() != null){
no=details.getNo();
}else {no=" ";}
if(details.bankName() != null){
bname=details.getBankName();
}else {bname = " ";}
outputString.append('\"');
outputString.append(date1);
outputString.append('\"');
outputString.append(",");
outputString.append('\"');
outputString.append(no);
outputString.append('\"');
outputString.append(",");
outputString.append('\"');
outputString.append(bname);
outputString.append('\"');
outputString.append(",");
outputString.append('\"');
dos.writeBytes(outputString.toString());
dos.flush();
dos.close();
fos.close();
}
Образец запроса
public Details getDetails (String No, String LoginID, String LetterID)
{
connection = DBConnection.getConnection();
StringBuffer query = new StringBuffer();
query.append("select TO_CHAR(TRUNC(SYSDATE),'DD MONTH,YYYY'),a.no, b.bank_name");
query.append("from t_newappl a,t_newappl_bank b where b.no = a.no and a.no=(select no from t_newappl whereno=?) and rownum=1 and status = 'PEND'");
query.append(" union all ");
query.append("select TO_CHAR(TRUNC(SYSDATE),'DD MONTH,YYYY'),a.no,b.bank_name");
query.append("from t_newappl a,t_newappl_bank b, newappl_sub c, t_newappl_sub_bank d where a.no = c.no and c.sub_id= d.sub_id and a.no=(select no from t_newappl where no=?) and rownum=1 and d.status = 'SPEND'");
PreparedStatement preparedStatement = connection.prepareStatement(query.toString());
preparedStatement.setString(1,ApplicationNo);
preparedStatement.setString(2,ApplicationNo);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
Details = new BankDetails();
Details.No= Util.Trim(resultSet.getString("NO"));
Details.BankName= Util.Trim(resultSet.getString("BANK_NAME"));
}
resultSet.close();
preparedStatement.close();
return Details;
}
Цикл для печати означает
int retail = Outletht.size();
int ctr = 0;
for (int i = 1; i <= subshop.size ; i++ ){
ctr++;
Letter Letter = new Letter(lmediator);
BankDetails Details = Letter.printLetter(applicationNumber);
if (Details!=null){
if (ctr == 1) {
if ((Details.getNo() == null)
&& (Details.getLetterID() == null)
&& ((Details.getLoginID() == null) || (Details.getLoginID().equals("")))) {
} else {
Letter.databaseUpdate(Details);
}
}
Letter.writefile(Details);
Letter.callfile(Details);
context.showMessage("I01015");
}
else
{
context.showMessage("I04004");
}
}
Твой вопрос немного сложно понять. Некоторые примеры запросов могут помочь уточнить.
Если у вас возникли проблемы с различием между основными и вспомогательными записями, я бы предложил вам добавить столбец к вашему запросу перед объединением.
выберите A, B, 'main' как xtype из T1 союз все выберите A, B, 'sub' как xtype из T2
A B xtype
--- --- ---
aaa bbb main
bbb ccc sub
writefile
...