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

Registro Em Branco


4njo

Pergunta

Salve a todos....

.. sou iniciante em programação e estou fazendo um sisteminha simples de controle de gastos.

Estou usando tabelas do banco Paradox. Porem , gostaria de saber como fazer para que toda vez que eu for gravar um novo registro , os DBedits apareçam em branco. No momento , todas as vezes que acesso o form de cadastro de gastos, aparece o último registro gravado. . gostaria que aparecesse pronto para nova inserção , em branco.

PS: Não estou utilizando DBNavigator, criei meus proprios botões de inserção e gravação.

Imagino que eu tenha que inserir uma procedure no form e não no button. Mas não sei como fazer isso.

se alguém puder dar um help....valeu..

abraço a todos.

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

13 respostass a esta questão

Posts Recomendados

  • 0
Guest --felipe --
Salve a todos....

.. sou iniciante em programação e estou fazendo um sisteminha simples de controle de gastos.

Estou usando tabelas do banco Paradox. Porem , gostaria de saber como fazer para que toda vez que eu for gravar um novo registro , os DBedits apareçam em branco. No momento , todas as vezes que acesso o form de cadastro de gastos, aparece o último registro gravado. . gostaria que aparecesse pronto para nova inserção , em branco.

PS: Não estou utilizando DBNavigator, criei meus proprios botões de inserção e gravação.

Imagino que eu tenha que inserir uma procedure no form e não no button. Mas não sei como fazer isso.

se alguém puder dar um help....valeu..

abraço a todos.

você tem que inserir esses comandos:

//no evento OnShow do form de cadastro:

Query1.Open;
Query1.Append;
//no botão de cadastro
Query1.ApplyUpdates;
//no evento OnClose do form de cadastro:
Query1.cancel;
Query1.close;

basicamente é isso

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

4njo, a idéia é mais ou menos esta que o felipe postou.

Apenas algumas observações:

1) Para inclusão de um novo registro, você pode utilizar os métodos Insert ou Append do dataset;

2) O botão cadastro ao qual o colega felipe se refere, só para ficar claro, é aquele em que você programa para executar a gravação dos seus dados (seja um Ok, Gravar, Salvar,...);

3) Eu não recomendaria o ApplyUpdates, a menos que você esteja trabalhando com transações (pouco provável ao utilizar tabelas Paradox), além de que seu uso está associado a propriedade CachedUpdates estar habilitada. Se não for este o caso, simplesmente utilize o método Post do dataset;

Só para constar, sobre ApplayUpdates no help:

"Call ApplyUpdates to write a dataset’s pending cached updates to a database. This method passes cached data to the database for storage, but the changes are not committed to the database. An application must explicitly call the database component’s Commit method to commit the changes to the database if the write is successful, or call the database’s Rollback method to undo the changes if there is an error."

Ou seja, se estiver utilizando cachedupdates, após o ApplyUpdates, ainda terá que ser chamado o método Commit do database, conforme exemplo também no help:

procedure ApplyButtonClick(Sender: TObject);
begin
  with CustomerQuery do
  begin
  Database1.StartTransaction;
    try
      ApplyUpdates; {try to write the updates to the database};
      Database1.Commit; {on success, commit the changes};
    except
      Database1.Rollback; {on failure, undo the changes};
    raise; {raise the exception to prevent a call to CommitUpdates!}
    end;
  CommitUpdates; {on success, clear the cache}
  end;
end;

4) Se você tiver um botão para cancelar o processo (ou seja, desistir do cadastramento), é nele que você implementa o uso do método Cancel do dataset;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

opa Felipe. rapaz... resolvi aqui. poxa....valeu mesmo brother. só uma coisa:

eu não estou usando Query...aí o codigo deu um erro, então troquei Query1 por Table1, assim:

procedure TFormCadastro.FormCreate(Sender: TObject);

begin

Table1.Open;

Table1.Append;

coloquei para rodar e já zerou . então eu não inseri os eventos no botão Sair e nem em outros buttons. deixei assim e esta dando certo.

valeu meu velho.

forte abraço.

caramba...Micheus...obrigado mesmo.... agora clareou mais ainda.... bom contar com voces....

Grande abraço ..

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

  • 0
eu não estou usando Query...aí o codigo deu um erro, então troquei Query1 por Table1
4njo, este foi mais uma observação que esqueci de mensionar. No caso do uso do componente TQuery, a princípio esse dataset é apenas somente leitura (consulta). No uso de alguns bancos, é possível habilitar a propriedade RequestLive de modo que, neste caso, são permitidas alterações no dataset. Então, como você utiliza Paradox, tenha como parâmetro que se vai editar a tabela - utilize um TTable, se vai apenas fazer consultas - utilize um TQuery.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus....eu não estou usando dataset... estou somente com os componentes DataSource e Table e os registros estao sendo efetuados normalmente. Isso ta correto?

Pois eu coloquei os codigos que o felipe descreveu ; direto no botão...e deu certo.....

de qualquer forma agradeço ...vou testar aqui para ver....

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus....eu não estou usando dataset... estou somente com os componentes DataSource e Table e os registros estao sendo efetuados normalmente. Isso ta correto?
Está correto sim.

Já mencionei isto antes, mas vou colocar aqui também. Sempre que não for citado que componentes estão sendo utilizados, vou me referir a eles pela classe base de todos - TDataSet (do qual todos os componentes de acesso são descendentes). Veja este post

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

caramba.... ta clareando ...hehe... rapaz....acho que entendi. O TDataSet é a classe que controla todos os componentes que dela descendem..certo? ... Isso quer dizer que cada grupo de componentes (ADO,DATACONTROL,DATAACESS) vai ter uma classe diferente..? ... ou não necessariamente..

ps: na proxima eu descrevo melhor a dúvida.

grande abraço...obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
//no evento OnClose do form de cadastro:

CODE

Query1.cancel;

Query1.close;

o motivo de ter "Query1.cancel;" no evento OnClose, é porque se ele escrever algo nos campos de registro e fechar o form ele cancela o "query1.Append" e não registra nada. Se não tivesse provavelmente daria um erro ao fechar o form, ou na proxima vez que fosse aberta, portanto eu recomendo que ele seja usado.

micheus, sobre eu não ser cadastrado, eu sou sim, só não uso ele porque o unico site que eu tenho acesso no trabalho é este

e eu não lembro minha senha, portanto não adianta eu requisitar uma nova senha, esse post que você mencionou por sinal, é meu

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

opa Felipe....beleza... eu não inseri nada no botao sair. só tem formCadastro.close; e notei que os registros estão sendo feitos normalmente....

meu procedimento foi clicar duas vezes no form e inserir o evento diretamente no form e não no botão..... sera que fiz m....?

mas obrigado de qualquer forma

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
caramba.... ta clareando ...hehe... rapaz....acho que entendi. O TDataSet é a classe que controla todos os componentes que dela descendem..certo? ... Isso quer dizer que cada grupo de componentes (ADO,DATACONTROL,DATAACESS) vai ter uma classe diferente..? ... ou não necessariamente..

ps: na proxima eu descrevo melhor a dúvida.

grande abraço...obrigado.

só para exemplificar: TTable, TQuery, TADOQuery, TIBQuery

são todos tipos de dataset

você escolhe qual deseja usar de acordo com suas necessidades...

eu particulamente prefiro usar os componentes da paleta InterBase, e faço uma sugestão que você tambem use

pois se você precisar apenas visualizar a(s) tabela(s) do banco de dados

é preciso criar uma TIBQuery

se você precisar editar, cadastrar, deletar, apenas crie um IBUpdateSQL, de 2 cliques, selecione os campos primarios na primeira janela, e na segunda selecione os campos modificaveis, e então clique em GenerateSQL.

não esqueça de relacionar as 2 tabelas atravez da propriedade UpdateSQL da TIBQuery.

não sei se me expressei bem mas é isso ai.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
opa Felipe....beleza... eu não inseri nada no botao sair. só tem formCadastro.close; e notei que os registros estão sendo feitos normalmente....

meu procedimento foi clicar duas vezes no form e inserir o evento diretamente no form e não no botão..... sera que fiz m....?

mas obrigado de qualquer forma

abraço

no botão sair não precisa, pois quando voce executa o comando "formCadastro.close;" ele automaticamente executa o evento OnClose

não sei se voce inseriu certinho, então vou explicar

de um clique no form e aperte F11 para mostrar o object inspector

então, ali tem 2 abas, Properties e Events

clique na Events, ache o evento OnClose e de 2 cliques

e ali insira o que eu mencionei antes

=)

Link para o comentário
Compartilhar em outros sites

  • 0
//no evento OnClose do form de cadastro:

CODE

Query1.cancel;

Query1.close;

o motivo de ter "Query1.cancel;" no evento OnClose, é porque se ele escrever algo nos campos de registro e fechar o form ele cancela o "query1.Append" e não registra nada. Se não tivesse provavelmente daria um erro ao fechar o form, ou na proxima vez que fosse aberta, portanto eu recomendo que ele seja usado.

Tudo bem, nunca é demais. Mas, se não me engano, ao fechar o dataset sem gravar os dados (ao utilizar o Post), a edição é automaticamente cancelada - e sem erro (é só testar para conferir).

Não fiz qualquer menção ao seu procedimento. O que quiz salientar é que se o 4njo tiver um botão Cancelar, ele deve ter em mente que este é um lugar onde o comando deve ser implementado (vai que ele resolve não chamar no OnClose) - foi só para chamar atenção a sequência de procedimentos (afinal, ele é iniciante - não sei até onde ele já possui conhecimento dos critérios básicos ;))

micheus, sobre eu não ser cadastrado, eu sou sim,(...)
já tinha conhecimento disto.

(...) só não uso ele porque o unico site que eu tenho acesso no trabalho é este e eu não lembro minha senha, portanto não adianta eu requisitar uma nova senha, esse post que você mencionou por sinal, é meu
Eu preferia que requisitasse sim. Afinal, assuntos deste e de outros tipos similares deveria ser tratados por MP!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, tinha perdido esta parte do post.

só para exemplificar: TTable, TQuery, TADOQuery, TIBQuery

são todos tipos de dataset você escolhe qual deseja usar de acordo com suas necessidades...

É isto mesmo, mas vamos utilizar o termo correto. Em se tratando de orientação de objetos, estamos falando de herança. Assim, o mais apropriado é dizer que: TTable, TQuery, TADOQuery, TIBQuery são classes descendentes de TDataSet, ou seja, que herdam todas as características de TDataSet e possivelmente acrescentam novas.

eu particulamente prefiro usar os componentes da paleta InterBase, e faço uma sugestão que você tambem use

pois se você precisar apenas visualizar a(s) tabela(s) do banco de dados é preciso criar uma TIBQuery

se você precisar editar, cadastrar, deletar, apenas crie um IBUpdateSQL, de 2 cliques, selecione os campos primarios na primeira janela, e na segunda selecione os campos modificaveis, e então clique em GenerateSQL.

não esqueça de relacionar as 2 tabelas atravez da propriedade UpdateSQL da TIBQuery.

Bom, esta não é uma boa recomendação (eu grifei no texto).

Os componentes da paleta InterBase (e já está claro no nome), dizem respeito a acesso a banco de dados InterBase e também pode ser utilizado para o FireBird (mas não recomendo).

De um modo geral, cada componente de acesso a banco de dados tem aplicação apenas a alguns tipos - não podem ser utilizados para qualquer um banco - e este é um caso.

Os componentes da paleta ADO, normalmente são utilizados para acesso ao MSAccess;

Eu, utilizo componentes MDO para aceso ao FireBird - e só serve para ele.

Os componentes da paleta Zeos (não vem com o Delphi), possibilitam acesso para: MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle and SQLite (você seleciona que banco vai utilizar);

Captou?! Não dá para utilizá-lo para acessar Paradox, por exemplo.

Opinião minha: o importante é você saber com qual banco vai trabalhar para saber que componente utilizar. Quando você tem vários componentes que viabilizam acesso a um mesmo tipo de banco, então outros critérios podem ser utilizados:

- performance: um componente desenhado para determinado banco, provavelmente terá melhor desempenho do que um que é genérico;

- portabilidade: se você puder trocar de banco, não precisará trocar os componentes;

- etc.

Abraços

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...