Fórum Problema com dataset e datas e inclusão com query #371889

02/07/2009

0

Bom dia, estou precisando da ajuda de voces.

Sempre usei o componente query para consultas, para cadastro sempre usei o componente Table, mas agora nesse sistema de caixa a coisa complicou.

Mas se eu faço inserção:

qy_lancamento.Append;


da a seguinte mensagem de erro.

´qy_lancamento: Cannot modify a read-only dataset´.

Preciso fazer seleção com datas, como faço inclusao, alteração, exclusão com querys?


Crawler

Crawler

Responder

Posts

02/07/2009

Lightshine

Crawler,

Pelo erro não acredito que a falha tenha haver com as datas, mas sim pela forma que você configurou os componentes de acesso aos dados.

Quais componentes você está utilizando?
Com essa informação fica mais fácil ajudá-lo.

Lightshine.


Responder

Gostei + 0

02/07/2009

Crawler

Entao Lightshine, estou utilizando o componente TIBQuery da paleta interbase como dataset.

Fiquei sabendo que o uso da query é apenas para consulta e para utiliza-la para outro fim seria necessario colocar um componente TIBUpdateSQL, entao eu fiz isso.

Mas não sei como aplicar isso no formulario, eu tentei usar no botao salvar:
qy_lancamento.ApplyUpdates e travou o programa.


Responder

Gostei + 0

02/07/2009

Lightshine

Crawler,

Como você utiliza a paleta Interbase eu lhe aconselho a usar o componente TIBDataSet. Este componente é uma ´junção´ dos componentes TIBUpdateSQL e TIBQuery.

Com ele você vai fazer o seguinte:

Coloca o TIBDataset no formulario (ou data module) e altera as seguintes propriedades:
-> DataBaseName: Seta para o componente TIBDataBase
-> SelectSQL: Clica na reticencias e insere o código SQL (para consulta), exemplo: Select * from SuaTabela

A parte de consultas está pronta, agora vem o grande diferencial desse componentes sobre o TIBQuery.

Clique com o botão direito sobre o TIBDataset e clique em Dataset Editor.

Estará definido na opção TableName a tabela referente a esse dataset conforme você codificou na propriedade selectSQL.

Em Key Fields deixe selecionado apenas o campo que é chave primária na sua tabela.

Em Update Fields todos os campos devem ficar selecionados.

Clique agora no botão ´Generate SQL´. Neste momento será codificado automaticamente os codigos Insert Into, Update, Edit e Delete no seu dataset.

Clique em OK.

Agora para incluir, salvar, deletar, cancelar uma alteração ou editar um registro basta usar os comandos:

Dataset.append ou Dataset.insert;
Dataset.edit;
Dataset.post;
Dataset.delete;
Dataset.cancel;

Espero ter ajudado.

Lightshine


Responder

Gostei + 0

02/07/2009

Lightshine

Há, esqueci de mencionar.

Ao trabalhar com os componentes Interbase você deve utilizar sempre um componente TIBTransaction que será responsável por controlar as transações no seu banco de dados.

Assim, todas as vezes que salvar uma alteração na sua tabela você devera commitar a transação

TIBTransaction.commit ou TIBTranscation.CommitRetaining

e após cancelar uma possivel alteração você deve fazê-la tambem na transação

TIBTRansaction.Rollback ou TIBTransaction.RollbackRetaining

Algumas considerações:

commit e Rollback salvam ou cancelam a alteração no banco, encerra a transação e não atualiza os dados na estação.

CommitRetaining e RollbackRetaining salvam ou cancelam a alteração no banco, atualiza os dados da estação e encerra a transação.

Lembrando que utilizar CommitRetaining e RollbackRetaining pode acarretar em perda de performance no seu sistema se as tabelas tiverem muitos registros.

Lightshine.


Responder

Gostei + 0

02/07/2009

Crawler

Dica fantastica voce me passou Lightshine. Ficou muito bom, valeu..


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar