Consulta e comparação de Strings

10 respostas
M

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?

10 Respostas

Alchemist

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

xandevieira

Como vc fez para informação do CNPJ ou CFP? mesmo campo? obrigatorio?

M

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???

M

nada?!?

xandevieira

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.

xandevieira

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)
fabim

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 ) 
}
M

Na verdade eu carrego a combo com 1 vector, funciona tb?

P

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é+

renatocustodio

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…

Criado 7 de abril de 2008
Ultima resposta 10 de abr. de 2008
Respostas 10
Participantes 6