Как извлечь значение из результирующего набора двух операторов, которые являются объединением

0

У меня есть метод в классе 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");
                                                }
                        }
  • 0
    Можете ли вы также привести пример кода ... это будет легче увидеть ... скорее всего, вы передаете неправильные данные в метод writefile ...
Теги:
resultset

1 ответ

0

Твой вопрос немного сложно понять. Некоторые примеры запросов могут помочь уточнить.

Если у вас возникли проблемы с различием между основными и вспомогательными записями, я бы предложил вам добавить столбец к вашему запросу перед объединением.

выберите A, B, 'main' как xtype из T1 союз все выберите A, B, 'sub' как xtype из T2

A    B    xtype
---  ---  ---
aaa  bbb  main
bbb  ccc  sub

Ещё вопросы

Сообщество Overcoder
Наверх
Меню