Fórum Ajuda em montar código #429711
26/11/2012
0
O código, se possível, seria para reconhecer se vai dar o erro, se sim, pegaria o último valor da tabela e adicionaria 1 e gravaria. Na internet achei esse código e tentei coloca-lo funcional para mim, mas dá erro de compatibilidade entre String e Integer já que o campo de código é alfanumerico.
try dm01.tbl_servico.Post; except on E:EDBEngineError do if E.Errors[0].ErrorCode = 9729 then dm01.tbl_servicoOS_COD.AsInteger := dm01.tbl_servicoOS_COD.AsInteger + 1; end;
Alguém pode me ajudar?
Carlos Magno
Curtir tópico
+ 0Posts
26/11/2012
Luiz Menin
Adicione um TQuery.
SQLQuery.Close;
SQLQuery.SQL.Clear;
SQLQuery.SQL.Add('SELECT MAX(CODIGO) AS TOTAL FROM TABELA');
SQLQuery.ExecSQL();
SQLQuery.Open;
iMaxCod := SQLQuery.FieldByName('TOTAL').AsInteger + 1;
Atribui o valor da variavel criada (iMaxCod) ao campo código.
Espero ter ajudado.
Gostei + 0
26/11/2012
Carlos Magno
var codi:String[6]; begin dm01.tbl_servaux.Last; dm01.tbl_servicoOS_COD.AsString := inttostr(dm01.tbl_servauxOS_COD.AsInteger + 1); while Length(dm01.tbl_servicoOS_COD.AsString) <6 do codi:='0' + dm01.tbl_servicoOS_COD.AsString; dm01.tbl_servico.Post;
Gostei + 0
26/11/2012
Luiz Menin
Gostei + 0
26/11/2012
Luiz Menin
Gostei + 0
26/11/2012
Carlos Magno
Gostei + 0
26/11/2012
Claudia Nogueira
codi := dm01.tbl_servicoOS_COD.AsString; while Length(codi ) <6 do codi:='0' + dm01.tbl_servicoOS_COD.AsString;
var codi:String[6]; begin dm01.tbl_servaux.Last; dm01.tbl_servicoOS_COD.AsString := inttostr(dm01.tbl_servauxOS_COD.AsInteger + 1); while Length(dm01.tbl_servicoOS_COD.AsString) <6 do codi:='0' + dm01.tbl_servicoOS_COD.AsString; dm01.tbl_servico.Post;
Gostei + 0
27/11/2012
Carlos Bernardo
try dm01.tbl_servico.Post; except on E:EDBEngineError do if E.Errors[0].ErrorCode = 9729 then dm01.tbl_servicoOS_COD.AsInteger := dm01.tbl_servicoOS_COD.AsInteger + 1; end;
Amigo vamos tentar assim :
Cria uma funcao que retorne o proximo numero livre...
function retorna_maxCodigo : string;
var
QRY :TQuery;
begin
Qry := TQuery.Create(self);
with qry do
TRY
DatabaseName := SEU_ALIAS;
sql.Add('Select max(OS_COD) as CODMAX from nomedatabela');
Open;
Result := formatfloat('000000',Qry.FieldByName('CODMAX').Asfloat + 1);
FINALLY
QRY.free;
END;
end;antes de dar o POST vc usa assim
dm01.tbl_servicoOS_COD.AsString := retorna_maxCodigo;
dm01.tbl_servicos.POST;
A unit DBTables, tem que estar declarada na clausula Uses
Gostei + 0
27/11/2012
Alisson Santos
Se ele for campo inteiro como creio que seja ele não vai gravar os zeros na frente então ao invés de ficar 000123 ele vai aparecer apenas o 123, para que ele apareça os zeros na frente o campo tem que ser string.
Da maneira que nosso amigo acima está informando não precisa colocar os zeros e sim apenas trazer como resultado o campo adicionando +1.
Gostei + 0
27/11/2012
Carlos Magno
Qry := TQuery.Create(self);
Erro reportado: Undeclared indentifier: 'self';
Gostei + 0
27/11/2012
Carlos Magno
Gostei + 0
27/11/2012
Carlos Magno
Como faço para adicionar os zeros?
Segue o código, favor verificar se esta certo:
dm01.qr_servcodMAXOFOS_COD.AsString; dm01.tbl_servicoOS_COD.AsString := IntToStr(dm01.qr_servcodMAXOFOS_COD.AsInteger + 1); dm01.tbl_servico.Post;
Gostei + 0
27/11/2012
William
dm01.tbl_servicoOS_COD.AsString := FormatFloat('0000', dm01.qr_servcodMAXOFOS_COD.AsInteger + 1);
Gostei + 0
27/11/2012
Carlos Bernardo
troca essa linha Qry := TQuery.Create(self);
por essa Qry := TQuery.Create(nil);
Gostei + 0
28/11/2012
Carlos Magno
Assim que concluir os testes eu retorno para dizer se deu certo ou não.
Gostei + 0
28/11/2012
Carlos Magno
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)