Aritmethic excepito

Delphi

26/12/2005

Aritmethic excepiton numeric overflow or string truncation.
Ja cadastrei. quando altero a data numa tabela, so que ja existem datas e ja alterei algumas uso um Datetimerpicker.

como posso solucionar isso


obrigado


Pereiramarcos

Pereiramarcos

Curtidas 0

Respostas

Edilcimar

Edilcimar

26/12/2005

mostre o código, senão não dá para achar o erro


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

mostre o código, senão não dá para achar o erro


DtsPaciente.DataSet.FieldByName(´dt_nasc´).AsDateTime := DateTimePicker1.Date;
Dtspaciente.DataSet.Post;
(Dtspaciente.DataSet as Tclientdataset).ApplyUpdates(-1); <-----
(DtsPaciente.DataSet as TClientDataSet).Refresh ; <-----
desabilitaCampos;


obrigado edilcimar


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

o campo é datetime e vc está mandando só date?


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

o campo é somente Date, no firebird acabei de confirmar, tb achei que fosse isso, mas tem registros que consigo alterar.


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

então troque para
DtsPaciente.DataSet.FieldByName(´dt_nasc´).AsString := DateToStr(DateTimePicker1.Date);


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

Funcionou mas quando vou alterar o sewgundo registro da o mesmo erro.
a impressao e que nao esta commitando, pode ser isso ?

:(


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

este campo e um dominio

CREATE DOMAIN DATA AS
DATE

e o campo e do tipo Date dominio DATA


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

então tente fechar e abrir novamente a tabela após o post


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

acontecewu o que eu imaginava ele nao commita fechando apos o post
e abrindo novamente. . .
o que pode ser isso, pra quem e iniciante no Delphi como eu da maior desespero.


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

tente dar um forcewrite após o comit


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

pode dar um exemplo.


obrigado, pela forca.


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

algum dado interessante, no registros iniciais nao da erro.

estou procurando este maudito erro.

que conversao e esta que so faz apos algum registros.

estou usando SQLTable será que tem algum problema.


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

Será que vc não tem algum campo que deveria ter sido preenchido e não foi? Pode ser o formato da data de americano para brasileiro, só vai acontecer em determinados meses!


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

no registro que gravei 01/09/1968 gravou sem erro, este registro e o numero 1 e o registro 2 tb nao da erro


no outro registro que tentei gravar 04/04/1935 deu este erro, este registro e o registro de numero 233, sera que tem alguma coisa haver.


como verificar o padrao americano ?
estou perdendo a linha de raciocinio. isso e ruim

Valeu cara


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

padrão americano mm-dd-yyyy
nosso padrão dd-mm-yyyy
se grava o registro 1 e 2 e há problema com o 233 então o problema pode ser em algum outro campo pois a data está compatível


GOSTEI 0
Martins

Martins

26/12/2005

no registro que gravei 01/09/1968 gravou sem erro, este registro e o numero 1 e o registro 2 tb nao da erro no outro registro que tentei gravar 04/04/1935 deu este erro, este registro e o registro de numero 233, sera que tem alguma coisa haver. como verificar o padrao americano ? estou perdendo a linha de raciocinio. isso e ruim Valeu cara


Acho q não tem nada a ver, qual o seu banco e o dialeto?

Mostre a estrutura de sua tabela por favor!


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

CLIENTE (
CD_CLIENTE CODIGO NOT NULL /* CODIGO = INTEGER NOT NULL CHECK (VALUE > 0) */,
NM_CLIENTE NOME COLLATE PXW_INTL850 /* NOME = VARCHAR(70) NOT NULL */,
LOGRADOURO DESCRICAO COLLATE PXW_INTL850 /* DESCRICAO = VARCHAR(80) NOT NULL */,
NUMERO VARCHAR(10),
COMPLEMENTO VARCHAR(20) DEFAULT ´ ´,
BAIRRO VARCHAR(30) COLLATE PXW_INTL850,
CIDADE VARCHAR(30) COLLATE PXW_INTL850,
UF UF DEFAULT ´RJ´ NOT NULL /* UF = CHAR(2) NOT NULL CHECK (VALUE = UPPER(VALUE)) */,
CEP CHAR(8),
MALA CHAR(1) DEFAULT ´ ´,
ENDERECO_COMPLETO COMPUTED BY ((LOGRADOURO||´, ´||NUMERO||´ ´||COMPLEMENTO)),
DT_NASC DATA /* DATA = DATE */
);


FIREBIRD 1.5 DIALETO 3


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

agora está explicado, vc está tentando colocar Ç ou acento em um campo nome ou endereço, usando um set de caracteres que não permite isto, portanto o erro não é no campo data


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

ENTEDI E ATE CONCORDO PQ NAO INCLUSAO ISSO NAO OCORRE, COMO ENTAO COLOCO o collate nesta opcao de gravação ??


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

faça a conecção com o bd usandoo win1952 (acho que é este o n°)


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

win1252


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

isso nao e o colate, eu ja uso


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

não é o colate que estão falando e sim a conecção com o bd


GOSTEI 0
Martins

Martins

26/12/2005

não é o colate que estão falando e sim a conecção com o bd


Boa Edilcimar, por isso pedi q ele colocasse a estrutura da tabela dele.

valew!!


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

É, ele estava falando da data e eu fui na onda!


GOSTEI 0
Martins

Martins

26/12/2005

É, ele estava falando da data e eu fui na onda!


Sei como é, dúvidas q envolvam base de dados, deveriam ser especificados o tipo do banco, estrutura da tabela em questão, etc...


GOSTEI 0
Pereiramarcos

Pereiramarcos

26/12/2005

OBRIGADO!!! Edilcimar e Martins

Funcionou perfeitamente, desculpe eu nao sabia que usava o charset TB na conexão com o banco.

Valeu mesmo.

eu chego lá


GOSTEI 0
Martins

Martins

26/12/2005

OBRIGADO!!! Edilcimar e Martins Funcionou perfeitamente, desculpe eu nao sabia que usava o charset TB na conexão com o banco. Valeu mesmo. eu chego lá


Blz, manda ver aí no seu sistema.


GOSTEI 0
Edilcimar

Edilcimar

26/12/2005

Qualquer coisa estamos aí!


GOSTEI 0
POSTAR