PDA

Visualizza la versione completa : [C++] Esecuzione di un'operazione di Post su DataSet (C++Builder)


manu.aretuseo
19-02-2007, 12:19
Buongiorno a tutti.
Ho un piccolo problema con la gestione di un post per un dataset.
Ecco il codice:



if(DMDDT->tDDT->State==dsEdit || DMDDT->tDDT->State==dsInsert)
DMDDT->tDDT->Post();


Praticamente sono certo (l'ho verificato tramite Watches ) che lo stato del dataset e 'dsEdit'.
Il post non viene fatto assolutamente, nonostante entro nell'if.

Quali potrebbero essere i motivi?
Avete idea su cosa dovrei controllare?

PS: Non sono problemi di aggiornamento della form:ho notato che non viene inserito proprio il campo nel DB!

Grazie anticipatamente.
Manuel

alka
19-02-2007, 12:38
Sei certo di non avere eventi agganciati al DataSet, ad esempio codice per l'evento OnBeforePost in cui viene richiamata una Abort nel caso in cui i dati non siano validi?

Il codice che hai riportato dove si trova? In quale frangente viene eseguito?

Ciao! :ciauz:

manu.aretuseo
19-02-2007, 15:22
In realtÓ hai ragione....Al dataset Ŕ associato un eveto AfterPost (ed anche un AfterInsert), ma non mi sembra che ci siano 'Abort' (espliciti intendo)
Cmq ti volevo dire un'altra cosa: nella form in cui effettuo il post che non funziona Ŕ definito l'evento FormCloseQuery



void __fastcall TDDT::FormCloseQuery(TObject *Sender,
bool &CanClose)
{
CanClose=true;
if (modbrw->ImageIndex==37)
return;
//esce dall'editing
TWinControl *LastCtrl;
LastCtrl = ActiveControl;
DefocusControl(ActiveControl,false);
if (DMDDT->tDDT->Modified)
{
String Msg= "Salvare le modifiche effettuate";
int Conferma=MessageDlg(Msg,
mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo << mbCancel,
0);
switch (Conferma)
{
case mrYes :
DMDDT->tDDT->Post();
break;
case mrCancel :
LastCtrl->SetFocus();
CanClose=false;
break;
default :
if(New)
DMDDT->tDDT->Delete();
else
DMDDT->tDDT->Cancel();
}
}
else
if(New)
DMDDT->tDDT->Delete();
}


Questo Ŕ il codice che gestisce la form quando la chiudo senza aver salvato...
Come puoi vedere, nel caso in cui confermo con YES effettuo lo stesso POST del caso precedente. In questo caso funziona!!!!
Come mai?

alka
19-02-2007, 15:59
Esegui un debug passo per passo... c'Ŕ senz'altro una parte del codice che impedisce la corretta esecuzione delle operazioni nella sequenza in cui l'hai pensata.

Difficile dirlo osservando semplicemente una parte del codice.

Ciao! :ciauz:

Loading