Quando eu em inserir o registro e automaticamente cancelado

Delphi

04/12/2005

Se eu tirar o Repeat funciona normal mais se eu deixar o registro e inserido e cancelado automaticamente... PQ?

IBQuery1.Open;
Repeat
IBQuery1.Insert;
IBQuery1.FieldByName(´NOME´).AsString:= edit16.text;
IBQuery1.FieldByName(´ENDERECO´).AsString:= edit17.text;
IBQuery1.FieldByName(´BAIRRO´).AsString:= edit18.text;
IBQuery1.FieldByName(´CIDADE´).AsString:= edit19.text;
IBQuery1.FieldByName(´ESTADO´).AsString:= edit20.text;
IBQuery1.FieldByName(´CEP´).AsString:= edit21.text;
IBQuery1.Post;
until Sair = ´S´;


Max.sgj

Max.sgj

Curtidas 0

Respostas

Max.sgj

Max.sgj

04/12/2005

Tentei ultilizar esse mesmo comando com outra tabela e deu a seguite mensagem de erro...

: Arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets.
1: Exceção de aritmética, transbordamento numérico, ou mutilação de fio. Não possa transliterar caráter entre jogos de caráter


GOSTEI 0
Edilcimar

Edilcimar

04/12/2005

provavelmente vc está tentando colocar caracter acentuado ou com cedilha em bd com character set errado


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

provavelmente vc está tentando colocar caracter acentuado ou com cedilha em bd com character set errado




Vou utilizar outra tabela...


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

provavelmente vc está tentando colocar caracter acentuado ou com cedilha em bd com character set errado


Veja a minha DLL...


CREATE TABLE ENDERECO_2 (
CODIGO INTEGER NOT NULL,
NOME VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
ENDERECO VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
BAIRRO VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
CIDADE VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
ESTADO VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
CEP CHAR(10) CHARACTER SET ISO8859_1 COLLATE PT_PT


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/12/2005

ou talvez você esteja tentando colocar num campo um valor maior do que ele comporta.
por exemplo: seu campo NOME suporta 50 e caracteres e você está digitando mais que 50 caracteres para o nome.


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

ou talvez você esteja tentando colocar num campo um valor maior do que ele comporta. por exemplo: seu campo NOME suporta 50 e caracteres e você está digitando mais que 50 caracteres para o nome.



Não o tamanho dos dados é inferior aos camposs


GOSTEI 0
Massuda

Massuda

04/12/2005

No seu loop repeat...until não tem nada que faça a condição de saída acontecer: você não atribui nada à variável Sair nem tem como o Windows processar qualquer evento.

Provavelmente você está inserindo registros duplicados. O erro de oveflow deve estar acontecendo por causa do loop infinito.


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

No seu loop repeat...until não tem nada que faça a condição de saída acontecer: você não atribui nada à variável Sair nem tem como o Windows processar qualquer evento. Provavelmente você está inserindo registros duplicados. O erro de oveflow deve estar acontecendo por causa do loop infinito.



Como eu resolvo esse problema...


GOSTEI 0
Wiltonfenix

Wiltonfenix

04/12/2005

Como eu resolvo esse problema...


IBQuery1.Open; 
Repeat 
IBQuery1.Insert; 
IBQuery1.FieldByName(´NOME´).AsString:= edit16.text; 
IBQuery1.FieldByName(´ENDERECO´).AsString:= edit17.text; 
IBQuery1.FieldByName(´BAIRRO´).AsString:= edit18.text; 
IBQuery1.FieldByName(´CIDADE´).AsString:= edit19.text; 
IBQuery1.FieldByName(´ESTADO´).AsString:= edit20.text; 
IBQuery1.FieldByName(´CEP´).AsString:= edit21.text; 
IBQuery1.Post; 
Sair=´S´;
until Sair = ´S´;



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/12/2005

Creio que esteja faltando um Commit após o Post (e esse repeat não me parece necessário).

IBQuery1.Open;
IBQuery1.Insert;
IBQuery1.FieldByName(´NOME´).AsString:= edit16.text;
IBQuery1.FieldByName(´ENDERECO´).AsString:= edit17.text;
IBQuery1.FieldByName(´BAIRRO´).AsString:= edit18.text;
IBQuery1.FieldByName(´CIDADE´).AsString:= edit19.text;
IBQuery1.FieldByName(´ESTADO´).AsString:= edit20.text;
IBQuery1.FieldByName(´CEP´).AsString:= edit21.text;
IBQuery1.Post;


GOSTEI 0
Wiltonfenix

Wiltonfenix

04/12/2005

Pode ser a falta de um Commit tb.

E, aproveitando, tem um erro no código que passei:

IBQuery1.Open; 
Repeat 
IBQuery1.Insert; 
IBQuery1.FieldByName(´NOME´).AsString:= edit16.text; 
IBQuery1.FieldByName(´ENDERECO´).AsString:= edit17.text; 
IBQuery1.FieldByName(´BAIRRO´).AsString:= edit18.text; 
IBQuery1.FieldByName(´CIDADE´).AsString:= edit19.text; 
IBQuery1.FieldByName(´ESTADO´).AsString:= edit20.text; 
IBQuery1.FieldByName(´CEP´).AsString:= edit21.text; 
IBQuery1.Post; 
Sair:=´S´; 
until Sair = ´S´;



GOSTEI 0
Massuda

Massuda

04/12/2005

Como eu resolvo esse problema...
Por que você precisa do loop?


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

[quote:015a4b43e6=´max.sgj´]Como eu resolvo esse problema...
Por que você precisa do loop?[/quote:015a4b43e6]

Eu estou estudando Firebird e para isso estou aumentado o tamanho do banco de dados para depois ver como se faz par reduzi-lo...


GOSTEI 0
Max.sgj

Max.sgj

04/12/2005

Creio que esteja faltando um Commit após o Post (e esse repeat não me parece necessário). IBQuery1.Open; IBQuery1.Insert; IBQuery1.FieldByName(´NOME´).AsString:= edit16.text; IBQuery1.FieldByName(´ENDERECO´).AsString:= edit17.text; IBQuery1.FieldByName(´BAIRRO´).AsString:= edit18.text; IBQuery1.FieldByName(´CIDADE´).AsString:= edit19.text; IBQuery1.FieldByName(´ESTADO´).AsString:= edit20.text; IBQuery1.FieldByName(´CEP´).AsString:= edit21.text; IBQuery1.Post;


Obrigado funcionou...


GOSTEI 0
POSTAR