Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) erro ao cadastrar dados


Pablo Polícia

Pergunta

Ola pessoal.

estou criando um jogo em delphi. Neste jogo, há a pontuação do jogador.

Depois que dar Game Over, coloquei um Panel para aparecer a pontuação do jogador.

Essa pontuação eu estou querendo cadastrar no banco de dados, mas sempre dar erro.

e se não dar erro, elenão consegue cadastrar de jeito nenhum. O que está acontecendo?

coloquei um dbedit1 que armazena a pontuação vinda de uma label. O valor é vindo da label para o dbedit1 para poder cadastrar esse valor no banco de dados.

fiz assim


dbedit1.text:=label1.caption;
[/CODEBOX]

outro erro é: Quando eu clico dentro do dbedit1 com o valor, esse valor apaga sozinho.

alguém pode ajudar

obs: uso o banco de dados paradox

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá amigo, bom dia.

Poste o código que está usando para salvar os dados?

E qual o erro lhe é apresentado?

P.S: sobre ao clicar no DBEdit e a informação é apagada, se não me engano isto é comum, pelo menos no PARADOX.

Editado por ZueRa
Link para o comentário
Compartilhar em outros sites

  • 0

Já testei de várias formas:

a primeira forma eu coloquei um botão para cadastrar o valor da dbedit no banco de dados.

fiz assim:


dm.pontuacao.post;
[/CODEBOX]

Este modo acima não cadastra, mas não aparece erro. Ele só cadastra se eu digitar alguma coisa nessa dbedit, ou seja, não cadastra dados vindos de uma label para essa dbedit.

Outro modo, mas esse deu erro.

fiz assim:

[CODEBOX]
dm.tbpontuacao.fieldbyname('pontos').asstring:=dbedit1.text;

e deu esse erro:

tbpontuacao: Dataset not in edit or insert mode

Outro modo e tambem com erro foi esse:


dm.tbpontuacaopontos.value:=strtoint(label1.caption);
[/CODEBOX]

Nesse modo anterior deu o mesmo erro:

tbpontuacao: Dataset not in edit or insert mode

Já tentei três formas de cadastrar, uma delas não cadastra e não dar erro. As outras duas dar erro e não cadastra.

A primeira só cadastra se eu digitar um valor na dbedit.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, sobre o primeiro método qual é o nome da tabela?

Observe:

dm.pontuacao.post;
não seria:
dm.tbpontuacao.post;

Não seria assim?

Outra coisa por talvez ele não estar salvando nada no primeiro source:

você está inicializando este método (dbedit1.text:=label1.caption;) em algum lugar? Por exemplo: onKeyPress, PressButton algo assim.

Sobre o erro: DataSet not in edit or insert mode.

Ele está informando que seu DataSet não está em modo de inserção ou edição.

Coloque o código completo da sua Unit amigo.

Abraço.

Editado por ZueRa
Link para o comentário
Compartilhar em outros sites

  • 0

O comando (dbedit1.text:=label1.caption) eu coloquei no evento onclick de um botão, ou seja, quando clico no botão, automaticamente o valor da label1 vai para a a dbedit1.

por que não cadastra quando a dbedit recebe um valor de outro objeto no caso label1?

por que só cadastra quando eu digito alguma coisa na dbedit1?

é ahi que está o problema.


procedure TForm1.Button1Click(Sender: TObject);
begin
if (pontos=40) then
begin
label5.caption:='Parabens';
label5.Font.Size:=14;
label5.Font.color:=clblack;
pnlpontos.Visible:=true;
dbedit1.Text:=label1.Caption;
dm.tbpontuacao.FieldByName('pontos').AsString:=dbedit1.Text; {esse modo eu improvisei para ver se conseguia cadastrar}
end
else
if (pontos=30) then
begin
label5.Caption:='GAME OVER';
label5.Font.Size:=14;
label5.Font.color:=clblack;
pnlpontos.Visible:=true;
dbedit1.Text:=label1.Caption;
dm.tbpontuacao.FieldByName('pontos').AsString:=dbedit1.Text; {esse modo eu improvisei para ver se conseguia cadastrar}
end
else
if (pontos<30) then
begin
label5.Caption:='GAME OVER';
label5.Font.Size:=14;
label5.Font.color:=clred;
pnlpontos.Visible:=true;
dbedit1.Text:=llabel1.Caption;
dm.tbpontuacao.FieldByName('pontos').AsString:=dbedit1.Text; {esse modo eu improvisei para ver se conseguia cadastrar}
end
end;

[/CODEBOX]

Link para o comentário
Compartilhar em outros sites

  • 0

Ao utilizar o DBEdit, não é necessário utilizar o dm.tbpontuacao.fieldbyname('pontos').asstring:=dbedit1.text. Este só seria necessário ao utilizar um Edit.

Para resolver o problema, antes de dar o post, é necessário ativar o registro.

- Se o registro já existe, é ativado utilizando o comando dm.tbpontuacao.Edit; ( edita o registro já existente )

- Se não existe, utilizar o comando dm.tbpontuacao.Append; ( inclui um novo registro )

Depois disso é só dar o dm.tbpontuacao.Post;

José Luiz.

Link para o comentário
Compartilhar em outros sites

  • 0
Ao utilizar o DBEdit, não é necessário utilizar o dm.tbpontuacao.fieldbyname('pontos').asstring:=dbedit1.text. Este só seria necessário ao utilizar um Edit.

Para resolver o problema, antes de dar o post, é necessário ativar o registro.

- Se o registro já existe, é ativado utilizando o comando dm.tbpontuacao.Edit; ( edita o registro já existente )

- Se não existe, utilizar o comando dm.tbpontuacao.Append; ( inclui um novo registro )

Depois disso é só dar o dm.tbpontuacao.Post;

José Luiz.

Olá Pablo.

Analizando o seu código eu não percebi o uso de algum método para ativar a tabela. É como o amigo acima disse:

Table.Edit (para edição dos dados)

Table.Open (para inserção dos dados)

na verdade José o Append só vai direcionar o ponteiro no último registro da tabela. Só que, para tabelas indexadas isto não faz muita diferença.

Tente assim caso use o Append:

Table1.Open;

Table1.Append;

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

obrigado José Luis e Zoeira

consegui. tirei a dbedit e coloquei uma label no lugar dela.

fiz assim: no botão cadastrar

procedure TForm1.Button2Click(Sender: TObject);

begin

dm.tbpontuacao.insert;

dm.tbpontuacao.FieldByName('pontos').AsString:=label1.Caption;

dm.tbpontuacao.post;

end;

Este label1 armazena a pontuação do jogador

obrigado pelas dicas

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...