Erro ao abrir tabela

Firebird

13/09/2004

Olá, tenho um IBDataSet, que ao tentar abrir da a seguinte mensagem:
Project ´zzz´ faulted with message: ´access violatiob at 0x77fa5575: write of address 0x00030ea0

Meu codigo eh:

var
Found, i: integer;
begin
ShowProgress(´Processando, por favor espere...´);
Found := -1;
for i := 0 to Screen.FormCount - 1 do
 if Screen.Forms[i] is TFrmCadSubstancias then
  Found := i;
if Found >= 0 then
 Screen.Forms[Found].Show
else
begin
 FrmCadSubstancias := TFrmCadSubstancias.Create(Application);
 with FrmCadSubstancias.IBDataSet1 do
 begin
  Open;
  First;
  FrmCadSubstancias.ComboBox1.Clear;
  FrmCadSubstancias.ComboBox1.Items.Clear;
  FrmCadSubstancias.ComboBox2.Clear;
  FrmCadSubstancias.ComboBox2.Items.Clear;
  while not EOF do
  begin
   FrmCadSubstancias.ComboBox1.Items.Add(TrimRight(FrmCadSubstancias.IBDataSet1DESCRICAO.AsString));
   FrmCadSubstancias.ComboBox2.Items.Add(TrimRight(FrmCadSubstancias.IBDataSet1DCB.AsString));
   Next;
  end;
  First;
  Insert;
 end;
 FrmCadSubstancias.Show;
 FrmCadSubstancias.SetFocus;
end;
HideProgress;
end;


Na linha com o Open, da o erro..

Nota: Usando XP, Firebird 1.5, Delphi 7... e utilizo o mesmo codigo em outras tabelas, e nao acontece o erro.. e ao tentar abrir no proprio delphi, em design ele funciona e abre...

Desde ja agradeco


Titanius

Titanius

Curtidas 0

Respostas

Afarias

Afarias

13/09/2004

Em que linha ocorre o erro?

AVs ocorrem normalmente por operações incorretas com ponteiros (por exemplo, tentar utilizar um objeto não instanciado)


T+


GOSTEI 0
Titanius

Titanius

13/09/2004

o Erro ocorre quando dou o Open.... aih da o erro.. o estranho eh q uso o mesmo codigo para todas as tabelas... e funciona


GOSTEI 0
Titanius

Titanius

13/09/2004

jah tentei criar outro IBDataSet e nada continua com o erro.. o que pode ser...


GOSTEI 0
Titanius

Titanius

13/09/2004

é o seguinte, olha o q eu tentei...

Removi o codigo q da o open, deixei somente:
var
 Found, i: integer;
begin
 ShowProgress(´Processando, por favor espere...´);
 Found := -1;
 for i := 0 to Screen.FormCount - 1 do
  if Screen.Forms[i] is TFrmCadSubstancias then
   Found := i;
 if Found >= 0 then
  Screen.Forms[Found].Show
 else
 begin
  FrmCadSubstancias := TFrmCadSubstancias.Create(Application);
  FrmCadSubstancias.Show;
  FrmCadSubstancias.SetFocus;
 end;
 HideProgress;


deixei aberto pelo proprio delphi... ou seja, acitve:=true no proprio delphi... nos meus componentes dBEdit, aparece os nomes e tals... entao funciona...
rodo o programa... quando abro o form, nada... da o erro... qual o problema.. sera q eh relacionado com a criacao do form?


GOSTEI 0
Afarias

Afarias

13/09/2004

| quando abro o form, nada... da o erro... qual o problema.. sera q eh
|relacionado com a criacao do form?

não entendi... quando abre o form dá o erro ou não??

bom, verifique se há eventos no form como onCreate ou onShow, veja tb se há eventos no IBDataSet e DataSource relacionado a ele o problema pode estar nestes códigos.


T+


GOSTEI 0
Titanius

Titanius

13/09/2004

nao a nenhum codigo no meu form... qnd ignoro as linhas q abre e mexe no ibdataset, o form abre beleza, quando mando abrir o banco da o erro.. estranho demais... quando seleciono active:=true no proprio delphi, osmeus componentes dbedit mostram o primeiro registro (sinal que o banco esta abrindo), mesmo retirando os codigos meus e deixando o active := true pelo delphi, na hora de abrir o form da o erro..


GOSTEI 0
Afarias

Afarias

13/09/2004

O Database e Transaction q o componente IBDataset usa estão em um form inicializado?


T+


GOSTEI 0
Titanius

Titanius

13/09/2004

correto... estao em um DataModule, iniciado no inicio da aplicacao.. e eles sao usados em todo o programa....

Antes dava o erro de memoria... agora sem mais sem menos, esta dando
´Not in edit mode.´ quando mando dar um Open... ve se pode?!?!?!?

Nao estou entendendo mais nada...


GOSTEI 0
Titanius

Titanius

13/09/2004

Desculpe, esse erro foi meu mesmo, estava dando um post sem abrir... mais o erro eh esse agora: ´arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets.´

o que eh isso!??!?!


GOSTEI 0
Gandalf.nho

Gandalf.nho

13/09/2004

Está passando o CHARACTER SET correto ao conectar ao banco de dados?


GOSTEI 0
Titanius

Titanius

13/09/2004

o charset esta none para todas as minhas tabelas..
o que percebi agora eh o seguinte: Tenho um registro de 7850 registros... ele da esse erro, mas abre alguns.. entao parece ser tipo estouro de memoria sei lah... abe uns 30 rimeiros, tem vez q abre uns 150 primeiros.. mais nao finaliza... me retorna este erro.. :(

tah ficando dificil isso aqui.. :oops:


GOSTEI 0
Titanius

Titanius

13/09/2004

Veirifquei que eu abrindo pelo IBExpress, vejo todos os registros... ja no meu projeto da pau quando tento passar do registro 37 :(


GOSTEI 0
Gandalf.nho

Gandalf.nho

13/09/2004

Está tentando usar textos acentuados no banco? Pq o CHARACTER SET NONE não lida bem com isso, principalmente para ordenar registros e usar GROUP BY.


GOSTEI 0
Titanius

Titanius

13/09/2004

isso mesmo... no meio dos meus registros tem acento... qual charset eu uso pra isso?


GOSTEI 0
Titanius

Titanius

13/09/2004

Realmente percebi, que no primeiro registro que contem acentos ele dah erro... como soluciono isso? qual charset uso? :cry:


GOSTEI 0
Afarias

Afarias

13/09/2004

http://www.firebase.com.br/cgi-bin/firebase.cgi/dica?ID=1


T+


GOSTEI 0
Titanius

Titanius

13/09/2004

Beleza galera.. consegui resolver mudando o charset e o callated.. muito obrigado mesmo!!! :lol:


GOSTEI 0
Gandalf.nho

Gandalf.nho

13/09/2004

Eu uso CHARSET WIN1252 com COLLATE PXW_INTL850


GOSTEI 0
POSTAR