Fórum Delphi 2009 x dbExpress x SQL Server 2005 -erro ApplyUpdates #371432
19/06/2009
0
Gente, estou desenvolvendo um sistema, usando os componentes abaixo (pela primeira vez), mas com problema no ApplyUpdates..
Uso o SQLDataSet+DataSetProvider+ClientDataSet+DataSource...
SQLDataSet:
-CommandType=ctQuery;
-CommandType=´SELECT * FROM PACIENTES ORDER BY NOME´;
Bom, quando eu vou salvar alguma inserção/alteração de registro:
SQLDataSet.Insert;
SQLDataSet.FieldByName(´teste´).asString:=´lalalalala´;
SQLDataSet.Post;
SQLDataSet.ApplyUpdates(0); <<----- dá o erro aqi
Diz ´Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída´.
Então já mandaram eu colocar um SQLConnection.CloseDataSet em BeforeApplyUpdates do SQLDataSet. Aí ele salva, mas ele fechou o dataset, dando a mensagem de que ´Não pode executar esta operação porque o DataSet está fechado´, porque o sistema vai fazer outra coisa depois que salva.
Aí eu li que era pra eu colocar um tal de Transaction, iniciar a transação antes de salvar a alteração/inserção, e depois dá o commit:
if SQLConnection.DSPacientes.State in [dsInsert,dsEdit] then
begin
TD.TransactionID := 1;
TD.IsolationLevel:=xilReadCommitted;
SQLConnection.StartTransaction(TD);
.
. (uso DBEdits para serem preenchidos)
.
try
CDSPacientes.Post;
CDSPacientes.ApplyUpdates(0); <<---- dá erro aqui tb
SQLConnection.Commit(TD);
except
SQLConection.Rollback(TD);
end;
Aí dá a mesma msg de erro que deu no ApplyUpdates:
´Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída´.
E se eu tirar o ApplyUpdates, ele não vai salvar nada no banco..
E agora, quem poderá me ajudar??? :cry:
Polyannawenze
Curtir tópico
+ 0Posts
19/06/2009
Uasan
Posso estar enganado mas tente.
CDSPacientes.ApplyUpdates(-1);
[]´s
Gostei + 0
19/06/2009
Polyannawenze
´Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída´.
:cry:
Gostei + 0
22/06/2009
Emerson Nascimento
quando você trabalha com dbExpress, na maioria dos casos não se deve manipular diretamente os SQLdatasets, somente os CLIENTdatasets.
Gostei + 0
22/06/2009
Polyannawenze
Vou tentar aqui..
Obrigada.. :P
Gostei + 0
22/06/2009
Polyannawenze
Era isso mesmo.. Eu coloquei no evento BeforeApplyUpdates de cada ClientDataSet: SQLDataSet.Close;
Valeu Emerson e UaSan.. :wink:
Eu já estava há tempos com esse erro.. :-)
Brigadão mesmo.. Qualquer erro, vou atentar vcs d novo.. :P
Gostei + 0
22/06/2009
Uasan
Nossa essa eu já não sabia, vlw pela dica sempre dei post applyupdates com sqldataset aberto =/. Mas engraçado que nunca apresento erro.
Isso é alguma alteração no delphi 2009?
[]´s
Gostei + 0
22/06/2009
Emerson Nascimento
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)