alguem pode me ajudar?
mto obg
=]
Paty, você ainda não mostrou o que está dentro do seu TableModel. Mas pela imagem que você mandou, você está, para cada linha na tabela, associando várias atividades. Se você quer agrupar os registros por Disciplina/Módulo então é melhor usar combos fora da tabela para disponibilizar essa seleção para o usuário.
Se a idéia é mostrar uma tabela com as notas do usuário por atividade, então no seu modelo você deve ter apenas a atividade e a nota, não a disciplina nem nada disso. O correto seria o usuário selecionar o aluno, a disciplina e obter a tabela com todas as notas das atividades naquela disciplina. Se não for isso que vocẽ quer, então vamos precisar melhorar seu modelo.
O problema está no array “v” que você está usando. Por favor, mostre o código do seu TableModel para que possamos te ajudar. Mas como eu já tinha dito e como o Marky disse, você deveria apenas adicionar a instância do aluno e o modelo fazer o restante.
ok em anexo a esta mensagem estou enviando meu modelo
mas o q eu realmente queria era exibir as atividades,nota referente a qual disciplina e modulo de acordo com o aluno que esta sendo selecionado na pesquisa acima,tipo eu tambem acho que utilizando as combos tudo ficaria bem mais simples mas meu usuario quer ver tudo nesta tabela =[ sem precisar ficar trocando para cada disciplina,há uma outra maneira?
muito obrigada pela ajuda
=]
A não ser que todos os módulos tenham a mesma quantidade de atividades, não. Se eles tiverem exatamente a mesma quantidade, então o nome da atividade poderia aparecer como uma coluna e a nota na linha reference. Aí você poderia fazer do jeito que está fazendo, com um vetor.
Visola tu tens razão é que cada modulo vai ter uma quantidade de disciplinas diferentes de acordo com a carga horaria do modulo
como eu arrumo isso? :shock:
obg pela ajuda
Sua tabela vai ter que ter a quantidade de colunas variável. Por exemplo… se o aluno participou de duas disciplinas e uma delas teve quatro atividades e a outra só duas, então a tabela vai ter seis colunas: módulo, disciplina, atividade 1, 2, 3 e 4. Sendo que na disciplina que teve somente duas atividades, as duas últimas colunas vão estar vazias.
Você tem que tratar isso dentro do seu TableModel. Como fazer, existem várias maneiras… dá uma pensada e qualquer coisa posta aqui.
oi Visola,
eu consegui fazer o controle destas atividades desta maneira que tu disseste,fazendo o seguinte:
[code]int q=0;
String f=null;
resultado=comando.executeQuery("select max(ch_total) from cargahoraria ");
while(resultado.next())
{
f=resultado.getString(1);
}
q=Integer.parseInt(f);
atividades=new String[q];
colunas=new String[q];
colunas[0]="Disciplina";
colunas[1]="Modulo";
colunas[2]="Nota";
for(int i=3;i<atividades.length;i++)
{
atividades[i]="atv";
colunas[i]=atividades[i];
}[/code]
da bem certinho mas meu biggest problem esta em ordenar os resultados da pesquisa do banco nas tabelas.Como eu arrumo estes itens na jtable,tipo como eu faço para os campos ficarem certinhos tipo:
disciplina|modulo|atv|atv|
bio |1 |T |F
se no banco tivesse estas atividades relacionadas a este modulo e disciplina.Como eu arrumo isto?
Obrigada pela ajuda
=]
Usa o ORDER BY do SQL. Isso deve resolver o problema já que você está colocando os registros na ordem que eles vêm do banco.
ola,
tentei usar order by disciplina,modulo,atividade e nota mas não funcionou=[
o problema é que os itens relativos a uma disciplina estão sendo inseridos em todas as outras=[ pelo menos é o que parece
tipo se eu usasse o distinct isto ate poderia resolver parte do problema mas não solucionaria a questão e me causaria problemas maiores ja que se existissem notas iguais apenas uma aparecia …
sera que o problema é na maneira pela qual estou pesquisando?deveria armazenar de maneira diferente?
obrigada pela ajuda
=]
Muitas perguntas sobre o seu próprio código e estrutura de dados.
Eu não tenho seu código aqui, nem seu banco. Não consigo responder nenhuma delas.
Se quiser postar suas tabelas para sabermos como está trabalhando, talvez possamos ajudar.
minha tabela está organizada conforme o print(tabela_nota) em anexo tu podes ver que as atividades estão organizadas uma abaixo da outra e na tabela eu quero colocar uma ao lado da outra e é isto que não estou conseguindo fazer=[
ah ignore [] no campo de observação da tabela,é resultado de outros testes que não estão relacionados a este problema ah e vou mandar de novo um print da minha tabela usando o meu defaulttablemodel
obrigada pela ajuda
Agora ficou um pouco mais claro. Você precisa agrupar os seus dados usando a disciplina e atividade como chave.
Pode usar um HashMap para fazer isso. Ficaria melhor você ter o array com as notas dentro do objeto aluno, ao invés de ser um objeto separado como você está fazendo. Na verdade, dentro do aluno você poderia ter um ArrayList com as notas:
public class Aluno {
// outros campos aqui
private ArrayList<String> notas = new ArrayList<String>();
public void addNota(String nota) {
notas.add(nota);
}
// outros métodos aqui, incluindo getters e setters
Para agrupá-los, use algo como o seguinte:
Map<String, Aluno> notas = new HashMap<String, Aluno>();
while (rs.next()) {
String disciplina = rs.get("disciplina");
String atiividade = rs.get("atividade");
String concat = disciplina.concat(atividade);
Aluno nota = notas.get(concat);
// Primeira nota para essa disciplina/atividade
if (nota == null) {
nota = new Aluno();
nota.setDisciplina(disciplina);
nota.setAtividade(atividade);
notas.put(nota);
}
nota.addNota(rs.get("nota"));
}
Collection<Aluno> notasCollection = notas.values(); // usa isso para montar seu TableModel
Não sei se deu para entender. Eu sugiro você criar outra classe para armazenar esses valores ou mudar o nome da sua classe (Aluno) porque isso está deixando o seu código bastante confuso.
Com base nas informações e explicações que tu me deste fiz algumas alterações na minha classe aluno.
Estou enviando ela em anexo para que tu possas ver como ficou…só uma duvida eu deveria ter feito o agrupamento na classe do meu default ou era na classe aluno?bem na classe que estou enviando este agrupamento esta na classe aluno :oops: bem de qualquer forma vou testar das duas formas e qualquer coisa eu volto a postar!
muitooo obrigada pela ajuda
Vi,
tentei colocar na classe da minha default(estou enviando em anexo),mas acho que fiz algo errado pois quando tento utilizar meu modelo em outra classe para criar a tabela da nullpointerexception
nesta linha model=new Aluno1TableModel();
e se eu uso este codigo na classe aluno tambem da nullpointerexception
nesta linha Aluno1 aluno=new Aluno1();
esqueci de fazer algo?escrevi algo errado no codigo?eu to colocando no lugar errado os itens?
mto obg pela ajuda
Não sei. Não consegui achar nada. Vai ter que investigar mais por aí.
Sei que já falei isso algumas vezes, mas acho que você precisa refazer o seu modelo porque está te deixando confusa na hora de processar os dados.
Seria melhor você ter mais de uma tabela, uma estrutura interessante conteria as seguintes tabelas:
Aluno - somente os dados do aluno
Disciplina - dados da disciplina
Atividade - atividades de cada disciplina, contem um apontamento para a disciplina
Nota - relaciona um alulno com uma atividade e a nota na atividade
Disciplinas_Aluno - relaciona quais as disciplinas que o aluno está matriculado (apontamento para disciplina e aluno)
ok Vi,
vou editar meu defaulttable model ,sei que meus códigos são bastante confusos mas é que a primeira vez que utilizo interface gráfica,ireports,banco de dados e não tenho tanto conhecimento sobre estes assuntos então as vezes faço codigos enormes que poderiam ser substituidos por outros bem menores=[
qualquer coisa eu posto!
e mto obg pela ajuda e dicas
aiin
bah ainda nao consegui arrumar este modelo,o problema é q o modelo ta certinho como é para ser mas a minha tabela no banco que ta muito estranho.
sabe como gerar fk no mysqlfront?
obg
Não sei. Não uso Mysqlfront. Trabalho com MySQL direto na linha de comando.
Mas porque FK são tão importantes para você?
Acho que o mais importante é encaixar os dados do seu modelo nos objetos que têm na sua aplicação.
é que tipo vou mandar um print da tabela onde quero tirar o conteudo e outro de como esta minha tabela é que tipo eu não sei explicar direit :oops:
mtoo obg
É verdade… não deu para entender direito.
Você primeiro precisa entender o seu problema antes de tentar resolvê-lo.
Comece por entender a estrutura dos dados e como eles se relacionam.
Depois você tem que entender o que sua tela faz e quais dados ela precisa.
Por último, tem que descobrir uma maneira de transformar os dados que tem nos dados que precisa.