Newsgroup: it.comp.lang.delphi
Titolo: ClientDataset e edit

Salve ragazzi,
da un paio di giorni ho problema strano, mi spiego,
ho una tabella legata ad un clientdataset finchï¿œ faccio degli 
inserimenti va tutto bene l'inserimento va a buon fine e viene 
ricaricato all'open del cds, invece se vado in edit dopo aver salvato il 
tutto le modifiche vengono annullate, tutto torna come prima
codice per il salvataggio:
  if cdsarticoli.ChangeCount > 0 then
                 cdsArticoli.ApplyUpdates(-1);
  try
	transdefault.commitretaining;	
  excpet
  end	
  cdsarticoli.close;
  cdsarticoli.open;
nell'ordine ho provato:
form nuova,
Datamodule Nuovo,
query, Updatesql, DSP, CDS nuovi,
non so piï¿œ che pesci pigliare,
grazie in anticipo

prima di portare modifiche al record devi portare in edit il dataset
cdsarticoli.edit;
modifichi i campi
cdsarticoli.field[0].value := ....
...
poi chiudi e confermi le variazioni con
cdsarticoli.post
;
con l'inserimento il dataset va automaticamente in edit
guarda questo 
http://edn.embarcadero.com/article/29122
ciao Brunello

Brunello ha scritto:

Grazie brunello, so come editare i cds ma in questo progetto stranamente 
  dopo l'edit, faccio il post, faccio applyupdates, commit ma alla 
riapertura del cds non � cambiato nulla...

1) Questa cosa di nascondere le eccezioni e' pura follia.
2) A che serve fare close and open non l'ho capito
3) Se usi Applyupdate ti stai attaccando ad un db client/server. Ergo,
usi un Tdatasetprovider. Come sono definite le sue opzioni?
A.

Alberto Salvati ha scritto:

1) punti di vista se ne sono lette a tonnellate sull'argomento anche qua...
2) senza fare open e close il cds non viene ricaricato e quindi non 
notavo che cambiamenti non venivano memorizzati
3) � esatto, le opzioni sono le standard il db � firebird e devo anche 
aggiungere che su altri progetti il tutto funziona egregiamente, ho 
anche fatto diverse prove come ho gi� detto solo che nulla � servito.
le opzioni del DSP sono quelle standard:
constraints = true
dataset = query riferimento
exported = true
options = tutto a false tranne use UseQuoteChar
ResolveToDataSet = false
UpdateMode = UpWhereAll
ps.
Grazie ;)

 anche fatto diverse prove come ho già detto solo che nulla è servito.
Anche negli altri casi usi firebird?
Le versioni di fb sono le stesse?
Usi dbx? Se si quale driver?
Magari SU questa tabella ha campi blob e negli altri casi no?
Non e' che l'applyupdates e' incluso in un try..except non gestito?
A.

 
effettivamente su questa tabella c'� un blob field genera bug?
non ci sono altri try except come postato l'applyupdates viene fatto 
solo se ci sono cambiamenti...
ancora grazie

> effettivamente su questa tabella c'è un blob field genera bug?
e le altre risposte?
A.

 A.
non uso dbx, firebird stessa ver, anche negli altri casi uso firebird.
l'unica cosa in cui differisce questa tabella � il blobfield.

                  cdsArticoli.ApplyUpdates(-1);
Meglio if (cdsArticoli.ChangeCount > 0) or (cdsArticoli.Modified)
 then cdsArticoli.ApplyUpdates();
(Non ho Delphi installato quindi non ricordo cosa significhi il valore
passato 
come parametro: potrebbe essere quello il problema? io ricordo di aver
sempre 
passato come valore 0)
Ciao
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
grazie ACSH io ho sempre passato -1 come da guida...

> non uso dbx, firebird stessa ver, anche negli altri casi uso firebird.
ok..non usi dbx....
Ma la tecnologia che usi te la si deve strappare di bocca con una
tenaglia?? :-D
A.

Alberto Salvati ha scritto:

uso i componenti standard (interbase) di d2009, pensavo che non avendo 
specificato fosse sottinteso, avevo anche pensato di provare zeoslib ma 
per d2009 ancora nada...

 per d2009 ancora nada...
ma ti sei assicurato che gli ibx sono compatibili con la versione di
fb che usi?
A.

Alberto Salvati ha scritto:

fino ad ora non ho mai avuto problemi di sorta con gli ibx e firebird, 
anche vero che i cds li ho usati poco e praticamente mai i blobfield.
far� qualche verifica in tal senso, grazie ancora.