DATABASE.Prior travando
Pessoal, bom dia!
Estou usando o PocketStudio 2.1 Professional.
Estou tendo o seguinte problema:
Quando abro o form de Entrevistados com a chamada abaixo:
No Open do form esta assim:
O código da procedure CarregaDados é este:
Bom. O que esta acontecendo de errado é o seguinte:
Quando a tabela ainda esta vazia, e se abre o form de entrevistados pela primeira vez.
Quando se clika nos botões Primeiro, Anterior, Proximo e Último.
Eles funcionam normal (Não exibem nada cadastrado é claro, e não dá erro na navegação).
Mas, quando se chama um novo registro clickando no botão novo cujo código é esse:
Daí em diante. você pode editar o registro inserido normal.
Pode inserir outro.
Pode até navegar entre os botões.
Porém, um erro acontece:
Quando você vai clickando no botão Anterior ou no Próximo (Obs.: Nos botões Primeiro e Ultimo o erro não ocorre), quando chega no primeiro ou no último registros e você clika novamente no botão, daí ocorre o erro abaixo:
Como corrigir esse erro?
Esse é o código dos Botões:
Grato a quem puder ajudar.
procedure btnEntrevistadosSelect; begin FrmGotoForm(formCadEntrevistados); end;
procedure formCadEntrevistadosOpen; begin PSForm.Draw; CarregaDados; PSForm.SetFocus(FieldID); end;
procedure CarregaDados; Var Buffer: Array[0..9-1]of Char; begin //Se não tiver nenhum registro na tabela nada será feito if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then exit; StrIToA(Buffer, PsDataBase.FieldUInt16(DBEntrevistadosTipo,Entrevistado_ID)); PsField.Settext(FieldId, Buffer); PsField.SetText(FieldNome, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_NOME)); PsField.SetText(FieldIdade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_IDADE)); PsField.SetText(FieldSexo, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_SEXO)); PsField.SetText(FieldProfissao, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_PROFISSAO)); PsField.SetText(FieldCidade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_CIDADE)); PsField.SetText(FieldEstado, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ESTADO)); PsField.SetText(FieldEndereco, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ENDERECO)); PsField.SetText(FieldBairro, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_BAIRRO)); end;
procedure btnNovoSelect;
begin
// create a new record
if not PSDatabase.Append(DBEntrevistadosTipo) then
FrmCustomAlert(AlertError, 'Erro', '', '')
else
begin
DBEntrevistadosInclui:= True;
Limpar;
PSForm.SetFocus(FieldId);
end
end;
Enquetes[1.0] just read from memory location 0x00000000, which is in lkow memory. "Low memory" is defined as he first 256 bites of memory. it should not be directly accessed by applictions under any circunstances.
procedure btnIPrimeiroSelect; begin PsDataBase.First(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnAnteriorSelect; begin PsDataBase.Prior(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnProximoSelect; begin PsDataBase.Next(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnUltimoSelect; begin PsDataBase.Last(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end;
Carlos Rocha
Curtidas 0
Respostas
Carlos Rocha
09/09/2011
Pessoal, bom dia!
Estou usando o PocketStudio 2.1 Professional.
Estou tendo o seguinte problema:
Quando abro o form de Entrevistados com a chamada abaixo:
No Open do form esta assim:
O código da procedure CarregaDados é este:
Bom. O que esta acontecendo de errado é o seguinte:
Quando a tabela ainda esta vazia, e se abre o form de entrevistados pela primeira vez.
Quando se clika nos botões Primeiro, Anterior, Proximo e Último.
Eles funcionam normal (Não exibem nada cadastrado é claro, e não dá erro na navegação).
Mas, quando se chama um novo registro clickando no botão novo cujo código é esse:
Daí em diante. você pode editar o registro inserido normal.
Pode inserir outro.
Pode até navegar entre os botões.
Porém, um erro acontece:
Quando você vai clickando no botão Anterior ou no Próximo (Obs.: Nos botões Primeiro e Ultimo o erro não ocorre), quando chega no primeiro ou no último registros e você clika novamente no botão, daí ocorre o erro abaixo:
Como corrigir esse erro?
Esse é o código dos Botões:
Grato a quem puder ajudar.
procedure btnEntrevistadosSelect; begin FrmGotoForm(formCadEntrevistados); end;
procedure formCadEntrevistadosOpen; begin PSForm.Draw; CarregaDados; PSForm.SetFocus(FieldID); end;
procedure CarregaDados; Var Buffer: Array[0..9-1]of Char; begin //Se não tiver nenhum registro na tabela nada será feito if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then exit; StrIToA(Buffer, PsDataBase.FieldUInt16(DBEntrevistadosTipo,Entrevistado_ID)); PsField.Settext(FieldId, Buffer); PsField.SetText(FieldNome, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_NOME)); PsField.SetText(FieldIdade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_IDADE)); PsField.SetText(FieldSexo, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_SEXO)); PsField.SetText(FieldProfissao, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_PROFISSAO)); PsField.SetText(FieldCidade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_CIDADE)); PsField.SetText(FieldEstado, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ESTADO)); PsField.SetText(FieldEndereco, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ENDERECO)); PsField.SetText(FieldBairro, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_BAIRRO)); end;
procedure btnNovoSelect; begin // create a new record if not PSDatabase.Append(DBEntrevistadosTipo) then FrmCustomAlert(AlertError, 'Erro', '', '') else begin DBEntrevistadosInclui:= True; Limpar; PSForm.SetFocus(FieldId); end end;
Enquetes[1.0] just read from memory location 0x00000000, which is in lkow memory. "Low memory" is defined as he first 256 bites of memory. it should not be directly accessed by applictions under any circunstances.
procedure btnIPrimeiroSelect; begin PsDataBase.First(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnAnteriorSelect; begin PsDataBase.Prior(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnProximoSelect; begin PsDataBase.Next(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end; procedure btnUltimoSelect; begin PsDataBase.Last(DBEntrevistadosTipo); CarregaDados; PSForm.SetFocus(FieldID); end;
GOSTEI 0