Gabriel Cabral Postado Setembro 1, 2008 Denunciar Share Postado Setembro 1, 2008 Em uma tabela dbf, tenho um campo chamado PROCOD.....que armazena o codigo dos registros...como essa tabela não tem campo autoincremento, eu adiciono +1 via código mesmo....mas esse campo é string ¬¬logo, não consigo somar....como eu posso fazer pra converte-lo pra inteiro, somar +1 e depois converte-lo pra string???Procurei em varios lugares mas não encontrei....até tem um tópico com um problema parecido.....mas não foi resolvidoalguém saberia ae???Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 1, 2008 Denunciar Share Postado Setembro 1, 2008 Em uma tabela dbf, tenho um campo chamado PROCOD.....que armazena o codigo dos registros...como essa tabela não tem campo autoincremento, eu adiciono +1 via código mesmo....mas esse campo é string ¬¬logo, não consigo somar....como eu posso fazer pra converte-lo pra inteiro, somar +1 e depois converte-lo pra string???var Reg : integer; begin Reg := strtoint(Table1.PROCOD.Value); Reg := Reg + 1; Table1.Edit; Table1.PROCOD.Value := inttostr(Reg); end;Procurei em varios lugares mas não encontrei....Porque voce não procurou no Help do Delphi ?É so teclar F1.Converts an integer to a string.UnitSysutilsCategorynumeric formatting routinesfunction IntToStr(Value: Integer): string; overload;function IntToStr(Value: Int64): string; overload;DescriptionIntToStr converts an integer into a string containing the decimal representation of that number.===============================================Converts a string that represents an integer (decimal or hex notation) to a number.UnitSysutilsCategorytype conversion routinesfunction StrToInt(const S: string): Integer;DescriptionStrToInt converts the string S, which represents an integer-type number in either decimal or hexadecimal notation, into a number. If S does not represent a valid number, StrToInt raises an EConvertError exception.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Setembro 4, 2008 Autor Denunciar Share Postado Setembro 4, 2008 (editado) então, Jhonas....não deu certo da forma que você indicou..olha só como estou fazendo....consegue ver algum erro?? ou alguma coisa faltando?? ou sobrando???procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; dm.Query1 := dm.Query1.Create(nil); try dm.Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); dm.Query1.Open; try tblCadPro.FieldByName('PROCOD').AsString := (IntToStr(StrToInt(dm.Query1.Fields[0].AsString)+1)); finally dm.Query1.Close; end; finally dm.Query1.Free; end; end; end.Aí o programa dá erro, dizendo que o campo de numero tal [o campo max], não é um inteiro válido, devido a tentativa da soma. Editado Setembro 4, 2008 por Gabriel Cabral Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 4, 2008 Denunciar Share Postado Setembro 4, 2008 dm.Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf');Aí o programa dá erro, dizendo que o campo de numero tal [o campo max], não é um inteiro válido, devido a tentativa da soma. O erro ( não é um inteiro válido ) é porque o seu campo PROCOD está definido como string.A instrução SQL deveria ser: dm.Query1.SQL.Add(select MAX( CAST(PROCOD AS INTEGER) ) FROM ESTAPRO.dbf');e o campo PROCOD deve ser integer.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Setembro 5, 2008 Autor Denunciar Share Postado Setembro 5, 2008 então, Jhonas.....o problema era simples demais e pura falta de atenção da minha parte..o numero que estava como string no campo PROCOD e eu queria converter pra inteiro pra fazer a soma era muito grande, então era preciso converter pra float, não pra int....então converti pra float e deu tudo certo....muito obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gabriel Cabral
Em uma tabela dbf, tenho um campo chamado PROCOD.....que armazena o codigo dos registros...
como essa tabela não tem campo autoincremento, eu adiciono +1 via código mesmo....
mas esse campo é string ¬¬
logo, não consigo somar....
como eu posso fazer pra converte-lo pra inteiro, somar +1 e depois converte-lo pra string???
Procurei em varios lugares mas não encontrei....até tem um tópico com um problema parecido.....mas não foi resolvido
alguém saberia ae???
Obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.