E ae galera??
Bom, meu problema é o seguinte:
Eu carrego um JComboBox com nomes de clientes, que podem ser pessoas físicas ou jurídicas, até ai sem problemas, mas quando o nome do cliente é selecionado na combo e o evento ActionPerformed do botão “consultar” é startado, caso o nome selecionado for de uma pessoa jurídica abre-se um JForm com dados de pessoas jurídicas preenchido com os dados do cliente selecionado na combo, e caso é uma pessoa física, abre um JForm com dados de pessoa física e do cliente selecionado na combo? Como eu posso distinguir qual JForm abrir(o de pessoa física ou pessoa Jurídica)? Através do Java ou através do SQL Server? E como fazê-lo?
Consulta e comparação de Strings
10 Respostas
Hum na sua tabela clientes n tem um campo informando se é juridica ou n ?
Pq ai vc pegaria deste campo para ver se ela é juricica ou n…
e depois disto vc só difere os forms
Como vc fez para informação do CNPJ ou CFP? mesmo campo? obrigatorio?
Entendam melhor:
No BD há 2 tabelas Fisica e Juridica que herdam da tabela Pessoas:
ex.:
create table pessoas(
pes_codigo int not null primary key identity,
pes_nome varchar(50) not null,
pes_email varchar(30) not null
)
create table fisica(
pes_codigo int not null primary key,
pes_cpf varchar(12) not null unique,
pes_rg varchar(12) not null,
pes_tipo int not null, //---> se for cliente tipo=1, se for funcionario tipo=3
foreign key(pes_codigo) references pessoas(pes_codigo)
)
create table juridica(
pes_codigo int not null,
pes_cnpj varchar(18)not null unique,
pes_ie varchar(18) not null,
pes_tipo int //---> se for cliente tipo=1, se for funcionario tipo=2
foreign key(pes_codigo) references pessoas(pes_codigo)
)
eis um exemplo de como estão as tabelas no banco.
No Sistema(JAVA). a tela de consulta de clientes tem uma combo carregada com todos os nomes de pessoas
que são clientes, selecionadas através do pes_tipo de suas tabelas (fisica e juridica). Há 2 telas de cadastro diferentes, para pessoas físicas e para pessoas jurídicas, onde 1 delas é aberta a partir do evento do botão Consutar da tela de consulta, meu problema é saber distinguir se o nome, que está carregado na combo e vai ser chamado da tela de consulta para a tela de cadastro, é uma pessoa fisica(portanto abriria a tela de cadastro para pessoas fisicas) ou uma pessoa juridica(tela de pessoas juridicas)?? como eu posso fazer essa distinção, via java, ou via bd, e como???
nada?!?
Tenho ums situação parecida a sua (mas minha aplicação é web) no meu casao tenho as três tabelas, mas na tabela cliente tenho ainda um campo flTpCliente, que me diz se é fisica ou juridica.
Acho q falta somente isso para vc.
me ocorreu agora, vc pode fazer um select mais ou menos assim:
select pes_codigo from pessoas where not in (select pes_codigo from fisica)
Se vc trabalha com objetos, é a coisa mais facil do mundo.
Vc esta adicionando os objetos na combo? Se sim, pegue o objeto com o metodo getSelectedItem(), e verifique o tipo dele com o
operador instanceof.
Object pessoa = combo.getSelectedItem();
if ( pessoa instanceof PessoaFisica ) {
// assumindo que o constructor da sua UI de PF recebe um objeto
// nesse costructor vc pode tb ja preencher os campos da tela
new PessoaFisicaView( pessoa ).setVisible( true )
}
if ( pessoa instanceof PessoaJuridica ) {
// idem acima
new PessoaJuridicaView( pessoa ).setVisible( true )
}
Na verdade eu carrego a combo com 1 vector, funciona tb?
Olá
Pode-se fazer uma pesquisa nas duas tabelas (assumo aqui que vc não tem nomes repetidos, claro) e ver o campo nulo resultante:
SELECT pes_codigo, pes_cpf, "" FROM fisica WHERE nome = <param>
UNION
SELECT pes_codigo, "", pes_cnpj FROM juridica WHERE nome = <param>
Usar um OUTER JOIN aqui seria masi bonito também, claro
Considerando que apenas um desses selects irá trazer um resultado, vc pode fazer a checagem pelo campo pes_cpf. Assume-se que, se a pessoa for física, o CPF constará no resultado.Senão, é o CNPJ
Espero que ajude.
Até+
Outra coisa que costumam fazer é checar a quantidade de dígitos, se for 11 é pessoa física, se for 14 é jurídica. No caso se no banco fosse apenas uma tabela para física e júridica, claro…