Jacob, na verdade não sei muito bem usar esse conceito, pois tambem acredito que terei que fazer uma AbstractModel para este tipo de exemplo, não?
- Quanto a quantidade de dados acredito q nunca passe de 20 linhas na Fila.
Segue o código do meu Jtable atualizar para ver qual a melhor forma que posso solucionar meu problema. Desde já agradeço sua ajuda.
private void AtualizaFila (){
//INICIO DE CAST DE DATA*********
String dia = dt_ini.getText().substring(0, 2);
String mes = dt_ini.getText().substring(3, 5);
String ano = dt_ini.getText().substring(6);
String dia1 = dt_final.getText().substring(0, 2);
String mes1 = dt_final.getText().substring(3, 5);
String ano1 = dt_final.getText().substring(6);
//*********FIM DE CAST DE DATA*********************
//Conecta ao DB e preenche com o retorno da consulta da Query na Table Fila
//Faz uma busca no Table de Manipulação e Table Finalizado, e valida se não há registro duplicado
//Caso houver remove a linha da Table FILA
if (tb_fila.getRowCount() == 0){ //Preenche a tabela somente se a linha for = a 0
try {
conn = conexao.getConnection();
//Titulos das Colunas da Tabela
String[]titulos =new String[]{"Reg","Pront","Nome", "Esquema", "Medicamento", "Dose","User_Solic", "Psc_Num","Data_Solic","MNP", "Psc_APM", "Cod_Barra"};
//Query de consulta
String SQL;
SQL = "SELECT pac.pac_reg, pac.pac_pront, pac.pac_nome, bul.bul_nome, adp.adp_nome, apl.apl_dose,sma.sma_usr_login_sol, sma.sma_data, apl.apl_psc_num, psc.psc_apm, "
+ " (CAST (psc.psc_pac AS VARCHAR(10)) + CAST (psc.psc_num AS VARCHAR(10)) + CAST (psc.psc_apm AS VARCHAR(10))) as Cod_Barra "
+ " FROM psc"
+ " join pac on "
+ " ( pac.pac_reg = psc.psc_pac )"
+ " join apl on"
+ " ( apl.apl_psc_hsp = psc.psc_hsp ) and"
+ " ( apl.apl_psc_num = psc.psc_num ) and"
+ " ( apl.apl_psc_pac = psc.psc_pac )"
+ " join apm on"
+ " ( apm.apm_pac = psc.psc_pac ) and"
+ " ( apm.apm_hsp = psc.psc_hsp ) and"
+ " ( apm.apm_num = psc.psc_apm )"
+ " join sma on"
+ " (sma.sma_serie = apm.apm_sma_serie) and"
+ " (sma.sma_num = apm.apm_sma_num)"
+ " join bul on"
+ " (bul.bul_med = psc.psc_cod)"
+ " join adp on"
+ " (adp.adp_cod = psc.psc_adp)"
+ " join cnv on"
+ " ( cnv.cnv_cod = pac.pac_cnv )"
+ " join psv on"
+ " ( psc.psc_med = psv.psv_cod )"
+ " FULL join psv ps on"
+ " ( psc.psc_med2 = ps.psv_cod )"
+ " WHERE"
// Retornar as prescrições (Aplicações) do dia
+ " apl.apl_dthr_aplic >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
+ " apl.apl_dthr_aplic <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
// Retornar as Solicações (Enfermagem) do dia
+ " sma.sma_data >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
+ " sma.sma_data <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
+ " pac.pac_nome not like 'xxx%' and"
+ " apl.apl_status in('A','N') And"
+ " bul.bul_farm2 = 2 AND bul.bul_farm1 = 62"
+ " ORDER BY sma.sma_data DESC ";
model =new DefaultTableModel(null, titulos);
sent = conn.createStatement();
ResultSet rs = sent.executeQuery(SQL);
String []fila = new String[12];
while (rs.next()){
fila [0]=rs.getString("pac_reg");
fila [1]=rs.getString("pac_pront");
fila [2]=rs.getString("pac_nome");
fila [3]=rs.getString("adp_nome");
fila [4]=rs.getString("bul_nome");
fila [5]=rs.getString("apl_dose");
fila [6]=rs.getString("sma_usr_login_sol");
fila [7]=rs.getString("apl_psc_num");
fila [8]=rs.getString("sma_data");
fila [9]=null;//Inicia a variavel vazia
fila [10] =rs.getString("psc_apm");
fila [11] =rs.getString("Cod_Barra");
//For para validar registro FILA igual a tabela Em Manipulação
for ( int m = 0; m < tb_manip.getRowCount() ; m++)
{
if (fila [0].equals(tb_manip.getValueAt(m, 0)) && fila [7].equals(tb_manip.getValueAt(m, 11))&& fila [10].equals(tb_manip.getValueAt(m, 12)))
{
fila [9]="EMNP";
}
}
//For para validar registro FILA igual a tabela Finalizado
for ( int f = 0; f < tb_fim.getRowCount() ; f++)
{
if (fila [0].equals(tb_fim.getValueAt(f, 0)) && fila [7].equals(tb_fim.getValueAt(f, 12)) && fila [10].equals(tb_fim.getValueAt(f, 13)))
{
fila [9]="MNP";
}
}
model.addRow(fila);
}
conn.close();
tb_fila.setModel(model);
tb_fila.setDefaultEditor(Object.class, null);
//Colunas que deverão ser ocultadas e ajustadas o tamanho
tb_fila.setAutoResizeMode(javax.swing.JTable.WIDTH );
tb_fila.getColumnModel().getColumn(0).setMinWidth(0);
tb_fila.getColumnModel().getColumn(0).setMaxWidth(0);
tb_fila.getColumnModel().getColumn(1).setMinWidth(60);
tb_fila.getColumnModel().getColumn(1).setMaxWidth(60);
tb_fila.getColumnModel().getColumn(2).setMinWidth(200);
tb_fila.getColumnModel().getColumn(2).setMaxWidth(200);
tb_fila.getColumnModel().getColumn(5).setMinWidth(60);
tb_fila.getColumnModel().getColumn(5).setMaxWidth(60);
tb_fila.getColumnModel().getColumn(6).setMinWidth(80);
tb_fila.getColumnModel().getColumn(6).setMaxWidth(80);
tb_fila.getColumnModel().getColumn(7).setMinWidth(0);
tb_fila.getColumnModel().getColumn(7).setMaxWidth(0);
tb_fila.getColumnModel().getColumn(8).setMinWidth(150);
tb_fila.getColumnModel().getColumn(8).setMaxWidth(150);
tb_fila.getColumnModel().getColumn(9).setMinWidth(0);
tb_fila.getColumnModel().getColumn(9).setMaxWidth(0);
tb_fila.getColumnModel().getColumn(10).setMinWidth(0);
tb_fila.getColumnModel().getColumn(10).setMaxWidth(0);
//Selecionar somente uma linha por vez
tb_fila.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}catch (SQLException ex){
JOptionPane.showMessageDialog(this, "Erro na Consulta ao Banco Smart!", "Erro",JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(this, ex);
}catch (Exception e){
JOptionPane.showMessageDialog(this, e);
}
//Valida se o valor adicionado já existe na Tabela Finalizado
//Se existe, remove da Tabela linha, para não gerar duplicidade
for ( int f = tb_fila.getRowCount()-1; f >=0; f--)//Decrementa contador devido ao Array iniciar com 0
{
if (tb_fila.getValueAt(f, 9) == ("MNP") || tb_fila.getValueAt(f, 9) == ("EMNP"))//Remove da FILA os já Manipulados
{
model.removeRow(f);
}
}//Finaliza o FOR para Tabela Finalizado
}//Finaliza o IF para Tabela Finalizado
}//Encerra Classe Atualiza();
Este é meu código, consegue me ajudar?