Olá pessoal! Me perdoe pela amolação, é que eu estou criando um sisteminha de O.S ele consulta cliente, usuário, e O.S porem ele só consulta a O.S pelo Nº, só que quando não se tem o Nº da O.S não dá pra consultar aí criei um método consultar com um inner join mas não funciona, alguem pode me dizer o que está errado no meu código? desde já, eu agradeço!
private void pesquisar_porNome() {
String sql = “select nomecli as Nome, fonecli as Telefone, os as OS, data_os as Data,\n”
+ " aparelho as Aparelho, defeito as Defeito, servico as Serviço\n"
+ " from tbclientes\n"
+ “inner join tbos on tbclientes.idcli = tbos.idcli order by os ?”;
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, txtOs.getText() + "%");
rs = pst.executeQuery();
tblTabela.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
Desculpe, o que você quer trazer como resultado, mesmo que não existe número da OS?
Preciso exibir a ordem de serviço pelo nome do cliente
Ok, mas, essa OS existe? Se não existir ou se não existir o idcli na tabela de OS, não há meios de fazer a associação e você nunca conseguirá recuperar a OS a partir do cliente.
existe a OS e tem a relação entre as tabelas
Vamos lá.
Você só vai conseguir obter um retorno de
SELECT * FROM tbclientes INNER JOIN tbos ON tbclientes.idcli = tbos.idcli
SE E SOMENTE SE você tiver um cliente e uma OS com o ID do cliente presente.
Fora isso, nunca vai retornar.
Agora, se você executa esta query no banco (seja qual a ferramenta que use) e ele retorna, mas, no java não tem retorno, então você precisa rever se tudo está ok com a consulta, se o banco que está conectado é o mesmo ou se a inserção ocorreu e foi feito commit das alterações.
Obrigado!
Para exibir só os campos que eu queria eu fiz assim e deu certo.
String sql = " select nomecli, fonecli, os, data_os, tipo, situacao, aparelho, defeito, servico, tecnico, valor, obs from tbclientes inner join tbos on tbclientes.idcli = tbos.idcli WHERE nomecli=? like os;";