Campos strings que não podem se repetir.

Delphi

25/11/2013

Boa tarde,

Como vocês tratam os campos strings que não podem se repetir? Ex: nome dos clientes, nome dos fornecedores entre outros!

Eu pensei em 2 maneiras:

1º Criar uma query dinamicamente somente com o campo string e fazer uma consulta na tabela comparando os valores.

2º Criar o campo como unique no banco de dados. (uso firebird 2.5)

O que vocês aconselham ou usam?

Nícolas Braz

Nícolas Braz

Curtidas 0

Respostas

Marques

Marques

25/11/2013

Olá lucas não sei resolver seu problema, sera que pode tenta me ajuda no meu ? é sobre fechar forms
[url]https://www.devmedia.com.br/forum/duvidas-verificar-se-ha-forms-filhos-abertos-dentro-do-form-pai-se-houver-nao-encerra-o-programa-quando-o-usuario-clica-no-close-do-form-pai-e-avisa-para-ele-fechar/462032[/url]
GOSTEI 0
Marcos Saffran

Marcos Saffran

25/11/2013

Boa tarde,

Como vocês tratam os campos strings que não podem se repetir? Ex: nome dos clientes, nome dos fornecedores entre outros!

Eu pensei em 2 maneiras:

1º Criar uma query dinamicamente somente com o campo string e fazer uma consulta na tabela comparando os valores.

2º Criar o campo como unique no banco de dados. (uso firebird 2.5)

O que vocês aconselham ou usam?


Boa tarde Nicolaz,

eu prefiro criar o campo como unique, mas em alguns campos tive que retirar essa restrição, pois nomes podem repetir, bem como fornecedores.
GOSTEI 0
Nícolas Braz

Nícolas Braz

25/11/2013

GOSTEI 0
Ricardo Araujo

Ricardo Araujo

25/11/2013

gostaria de saber se você conseguiu fazer o que estava precisando ?
GOSTEI 0
Nícolas Braz

Nícolas Braz

25/11/2013

Estou esperando outras opiniões.
GOSTEI 0
Járabe Emanuel

Járabe Emanuel

25/11/2013

Se vc colocar o campo como key no banco, vc não resolve seu problema?
GOSTEI 0
Nícolas Braz

Nícolas Braz

25/11/2013

Usei uma query com o seguinte código.

 if ds.DataSet.State in [dsInsert] then
  begin
    with sqlConsulta do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT SIGLA FROM UNIDADES WHERE SIGLA LIKE :SIGLA');
      ParamByName('SIGLA').AsString := dbSigla.Text;
      Open;

      if (FieldByName('SIGLA').AsString <> EmptyStr) then
        begin
          ShowMessage('Você não pode cadastrar uma sigla igual.');
          dbSigla.SetFocus;
          Abort;
        end
      else
       inherited;
    end;
  end;
  if ds.DataSet.State in [dsEdit] then
    inherited;
GOSTEI 0
Ricardo

Ricardo

25/11/2013

Não entendi. Como assim? você fala que o cliente não pode ser igual ao fornecedor ou vice-versa? é isso?
GOSTEI 0
Nícolas Braz

Nícolas Braz

25/11/2013

Não Ricardo!

Eu não queria 2 clientes com o mesmo nome e nem 2 fornecedores com o mesmo nome.
GOSTEI 0
Ricardo

Ricardo

25/11/2013

Não Ricardo!

Eu não queria 2 clientes com o mesmo nome e nem 2 fornecedores com o mesmo nome.



Não pode ter nomes repetidos mesmo?
GOSTEI 0
Nícolas Braz

Nícolas Braz

25/11/2013

Essas tabelas podem eu só usei elas como exemplos!

As tabelas que eu não deixei repetir foram:

produtos, tipos de pagamentos, tipos de documentos, contas, setores de funcionarios, usuarios e grupos de usuarios.
GOSTEI 0
Itamar Souza

Itamar Souza

25/11/2013

Essas tabelas podem eu só usei elas como exemplos!

As tabelas que eu não deixei repetir foram:

produtos, tipos de pagamentos, tipos de documentos, contas, setores de funcionarios, usuarios e grupos de usuarios.



Boa tarde
Minha opinião no caso de clientes e fornecedores, você pode consulta o cnpj do mesmo, não deixando que eles sejam repetidos, mais pelo nome fica um pouco complicado pois o cadastro precisa esta exatamente igual, se você abreviar um nome já não vai conseguir identificar a duplicidade. Produtos, tipos de pagamento, tipos de documentos, contas, setores de funcionários, grupo de usuários (neste caso cabe o bom censo do usuário no momento do cadastro), usuários da para controlar pelo número do cpf por exemplo.
Espero ter ajudado
GOSTEI 0
POSTAR