Интегрирование подсистем "Деканат" и "Финансы" на программном и информационном уровне, организация передачи данных по личным делам студентов из подсистемы «Деканат» в подсистему «Финансы», страница 2

                        + "INNER JOIN  facultet F ON C.K_FAK = F.KOD "

                        + "INNER join  spec S ON C.KOD_SPEC = S.KOD_SPEC "

                        + "INNER join group G ON C.K_GRUP = G.KOD and G.NAIM='" + choise + "'";

                str2 = "select C.NUM_ZACH, C.FAM, C.IMJA, C.OT, C.DATA_ROJD, "

                            + "C.NAL_KOD, C.K_FAK, C.KOD_SPEC, "

                            + "G.NAIM, C.K_KURS from contingent C "

                            + "JOIN  facultet F ON C.K_FAK = F.KOD "

                            + "join  spec S ON C.KOD_SPEC = S.KOD_SPEC "

                            + "join group G ON C.K_GRUP = G.KOD and G.NAIM='" + choise + "'";

            }

            ResultSet rs = DBFReader.executeQuery(conn, str2);

            ResultSetMetaData rsmd = rs.getMetaData();

            int colums = rsmd.getColumnCount();

            String[][] arr = DBFReader.getTable(rs);

            db = arr.clone();

            String[] names = new String[colums];

            for (int i = 0; i < colums; i++) {

                names[i] = rsmd.getColumnName(i + 1);

            }

            TableModel model = new DefaultTableModel(arr, names);

            jTable1.setModel(model);

        } catch (SQLException ex) {

            Logger.getLogger(DBViewer.class.getName()).log(Level.SEVERE, null, ex);

        }

2 зАПИСЬ ДАННЫХ В подСИСТЕМУ «фИНАНСЫ»

2.1 Создание подключения к подсистеме

Для подключения к системе финансы необходима специальная библиотека, которую можно скачать с официального сайта СУБД. В строке соединения необходимо указать логин, пароль, адрес сервера, кодировку, путь к базе данных и тип сервера.

Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();

            Properties conProperties = new Properties();

            conProperties.put("user", "SERG");

            conProperties.put("password", "278107");

            conProperties.put("charSet", "Cp1251");

            connection =

                    DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/D://JavaDB//finance.gdb",

                    conProperties);

2.2 Хранимые процедуры

Для записи личного дела необходимо внести некоторые изменения в отобранные данные, такие как: получить новый код отдела, профессии, а также оставить только первую букву заглавной в фамилии, имени и отчестве.

Процедура для переформатирования ФИО:

SET TERM ^ ;

CREATE PROCEDURE DECODE_TEXT (

    A Char(30) )

RETURNS (

    RES Char(30) )

AS

declare variable buf char(30);

declare variable buf2 char(30);

declare variable buf3 char(30);

begin

  buf = substring(A from 2);

  buf3 = substring(A from 1 for 1);

  buf2 = lower(buf);

  RES = overlay(buf3 PLACING buf2 FROM 2);

  RES = replace(RES,'i','і');

  RES = replace(RES,'I','І');

  suspend;

end^

SET TERM ; ^

Процедура, которая добавляет нового студента в базу или возвращает номер его зачетной книжки в случае некорректности данных:

SET TERM ^ ;

CREATE PROCEDURE NEW_STUDENT (

    ID_ZACH Char(8),    F_FIO1 Char(30),    I_FIO1 Char(30),

    O_FIO1 Char(30),    D_O_B1 Date,    ID_CODE1 Char(15),

    ID_DIV1 Integer,    ID_PROF1 Integer,    NAME_GROUP1 Char(20),

    COURSE1 Integer )

RETURNS (

    ID Integer,    NUM_ZACH Char(8) )

AS

BEGIN

IF (F_FIO1 IS NULL) then

Begin

   NUM_ZACH = ID_ZACH;

End

Else

IF (I_FIO1 IS NULL) then

Begin

   NUM_ZACH = ID_ZACH;

End

Else

IF (O_FIO1 IS NULL) then

Begin