Olá a todos.
Tenho uma tabela Produtos e nesta, um campo alfanumérico de tamanho 20. Preciso que quando de uma inclusão, o aplicativo me sugere automaticamente o próximo número de registro. Acontece que quando é a primeira inclusão e por estar usando o RetornaAutoIncremento, recebo uma mensagem de erro. Consegui resolver esta questão, usando "TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo := StrZero(1, 6);"; porém quando se trata da segunda inclusão para frente, continuo recebendo a mesma sugestão, ou seja, "000001", quando na verdade deveria ser, "000002". Não estou conseguindo fazer o aplicativo pegar o último registro e a partir daí, continuar sequencialmente me sugerir os números.
Escrevi uma rotina, conforme segue abaixo e gostaria de que alguém pudesse me ajudar a resolver esta questão.
If TabelaPrincipal.Inclusao then
begin
if Vazio(TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo) then
begin
TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo := StrZero(1, 6);
end
else
begin
TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo := LFill(RetornaAutoIncremento(TabGlobal.DPRODUTO, 'PRO_CODIGO', '', 1), '0', 6);
end;
end;
Desde já agradeço.
Pedro Gomes.
Verificar e validar campo vazio
-
- Mensagens: 38
- Registrado em: Dezembro 28th, 2011, 11:30 am
- Contato:
-
- Mensagens: 22
- Registrado em: Fevereiro 12th, 2011, 3:14 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Verificar e validar campo vazio
Caro Pedro se estou entendendo sua dúvida, no autoincremento podemos usar apenas campos do tipo: Número inteiro, Fracionário e data, então mude o campo para número inteiro, marque 1 em autoincremento e funcionará direitinho.
espero ter ajudado, um abraço!
espero ter ajudado, um abraço!
-
- Mensagens: 38
- Registrado em: Dezembro 28th, 2011, 11:30 am
- Contato:
Re: Verificar e validar campo vazio
Olá a todos.
Ligeirinho, obrigado pelo teu esforço em me ajudar, porém, preciso lhe informar que a função trabalha tb com string, pois já testei e funcionou normalmente. O meu problema está relacionado exatamente quando se trata da primeira inclusão, ou seja, não existe nenhum registro e aí sim a função retorna uma mensagem de erro pois não existe nenhum registro na tabela para que a função incremente + 1. Este problema, como citei acima eu consegui resolver, a minha dúvida agora está em como proceder para que na minha segunda inclusão em diante, o aplicativo busque o último registro, armazene este registro em uma variável e a partir deste registro nesta variável possa então fazer o incremento dos próximos registros, pois como está agora, sempre me retorna com o primeiro número, ou seja, 000001 ao invés de ser 000002.
Continuo então aguardando a ajuda de alguém para esta questão.
Pedro Gomes
Ligeirinho, obrigado pelo teu esforço em me ajudar, porém, preciso lhe informar que a função trabalha tb com string, pois já testei e funcionou normalmente. O meu problema está relacionado exatamente quando se trata da primeira inclusão, ou seja, não existe nenhum registro e aí sim a função retorna uma mensagem de erro pois não existe nenhum registro na tabela para que a função incremente + 1. Este problema, como citei acima eu consegui resolver, a minha dúvida agora está em como proceder para que na minha segunda inclusão em diante, o aplicativo busque o último registro, armazene este registro em uma variável e a partir deste registro nesta variável possa então fazer o incremento dos próximos registros, pois como está agora, sempre me retorna com o primeiro número, ou seja, 000001 ao invés de ser 000002.
Continuo então aguardando a ajuda de alguém para esta questão.
Pedro Gomes
-
- Mensagens: 22
- Registrado em: Fevereiro 12th, 2011, 3:14 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Verificar e validar campo vazio
Desculpe Pedro, eu retirei esta informação do manual do Xmaker, e também estou estudando apostilas do Delphi, e pude ver que os exemplos de autoincremento são em números inteiros, poderíamos usar um Select max ou min, achar o maior valor do campo na tabela e converter para números e fazer a soma, mas como estou engatinhando ainda em Delphi não sei se é possível e os resultados, peço desculpas mas eu pelo menos tentei te ajudar uma abraço!
-
- Mensagens: 244
- Registrado em: Dezembro 22nd, 2010, 1:05 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Verificar e validar campo vazio
Olá,
Não existe a necessidade de utilizar um campo alfanumérico nem usar a rotina mencionada, afinal o campo só recebe números e vai sendo incrementado.
O que o usuário Ligeirinho disse está correto e concerteza atende a sua necessidade.
Mas se você quiser usar o campo alfanumérico, poderia usar um select.
Coloque o seguinte código na procedure AtribuiValoresPadrao do seu form e mude conforme a sua necessidade.
procedure TFormProdutos.AtribuiValoresPadrao;
Var
Query: TTabela;
begin
ExecutaPreValidacoes(TabelaPrincipal, Self, ListaCamposEd, True);
TabelaPrincipal.AtribuiRelacionamentos;
begin
Query := TTabela.Create(Application);
with Query do
begin
DataBase := TabelaPrincipal.DataBase;
Transaction := TabelaPrincipal.Transaction;
SQL.Clear;
SQL.Add('Select MAX(cast(PRO_CODIGO as int))');
SQL.Add(' From '+TabelaPrincipal.NomeTabela);
Conexao;
Active := True;
First;
TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo := StrZero(StrToIntDef(Fields[0].AsString,0)+1);
Active := False;
Free;
end;
end;
pro_codigo.SelectAll;
end;
Não existe a necessidade de utilizar um campo alfanumérico nem usar a rotina mencionada, afinal o campo só recebe números e vai sendo incrementado.
O que o usuário Ligeirinho disse está correto e concerteza atende a sua necessidade.
Mas se você quiser usar o campo alfanumérico, poderia usar um select.
Coloque o seguinte código na procedure AtribuiValoresPadrao do seu form e mude conforme a sua necessidade.
procedure TFormProdutos.AtribuiValoresPadrao;
Var
Query: TTabela;
begin
ExecutaPreValidacoes(TabelaPrincipal, Self, ListaCamposEd, True);
TabelaPrincipal.AtribuiRelacionamentos;
begin
Query := TTabela.Create(Application);
with Query do
begin
DataBase := TabelaPrincipal.DataBase;
Transaction := TabelaPrincipal.Transaction;
SQL.Clear;
SQL.Add('Select MAX(cast(PRO_CODIGO as int))');
SQL.Add(' From '+TabelaPrincipal.NomeTabela);
Conexao;
Active := True;
First;
TabGlobal.DPRODUTO.PRO_CODIGO.Conteudo := StrZero(StrToIntDef(Fields[0].AsString,0)+1);
Active := False;
Free;
end;
end;
pro_codigo.SelectAll;
end;
Att,
Gustavo Barreto
Gustavo Barreto
-
- Mensagens: 38
- Registrado em: Dezembro 28th, 2011, 11:30 am
- Contato:
Re: Verificar e validar campo vazio
Olá Ligeirinho e Gustavo.
Obrigado à ambos pelas in formações, porém, consegui o meu objetivo colocando o código na procedure antesdeincluir e no OnEnter do campo, continuei com o código, conforme citei no início e embora o meu campo ser alfanumérico e a variável criada tb ser string, eu consigo que a função RetornaAutoIncremento me atribua o sequencial correto.
De qualquer forma, mais uma vez obrigado.
Pedro Gomes.
Obrigado à ambos pelas in formações, porém, consegui o meu objetivo colocando o código na procedure antesdeincluir e no OnEnter do campo, continuei com o código, conforme citei no início e embora o meu campo ser alfanumérico e a variável criada tb ser string, eu consigo que a função RetornaAutoIncremento me atribua o sequencial correto.
De qualquer forma, mais uma vez obrigado.
Pedro Gomes.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes