Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Update affected more than 1 record (https://www.clubdelphi.com/foros/showthread.php?t=54663)

chinosoft 26-03-2008 20:44:57

Update affected more than 1 record
 
Otra vez yo...

Les cuento:

Estoy usando un DataSource en un Formulario FrmPanelCliente y desde este llamo a un formulario en ShowModal() FrmPedido.

El cual trae los datos del DataSource del FrmPanelCliente, y los toma en DBEdits.

Todo muy lindo, pero al momento de guardar los cambios me sale un error

Código:

Update affected more than 1 record
:mad:

La verdad no se que hacer, porque todos los otros campos los modifica sin problemas.

El campo es un Integer.

Desde ya

Muchas Gracias

enecumene 26-03-2008 20:57:50

Hola, y como estas guardando los datos? con POST o una Sentencia Update SQL?.

Saludos.

chinosoft 26-03-2008 21:01:56

Código:

// Post al Data Set del formulario padre
FrmPanelCliente->DSListado->DataSet->Post();

// Aplly al ClientDataSet que esta en un Data Module
DMDatos->CDSTrabajo->ApplyUpdates(0);

// Es una funcion que hace la transaccion
DMDatos->Grabar();


enecumene 26-03-2008 21:07:07

A ver, Intenta poniendo (-1), asi:

Código Delphi [-]
 // Post al Data Set del formulario padre
FrmPanelCliente->DSListado->DataSet->Post();

// Aplly al ClientDataSet que esta en un Data Module
DMDatos->CDSTrabajo->ApplyUpdates(-1);

// Es una funcion que hace la transaccion
DMDatos->Grabar();

Saludos.

chinosoft 26-03-2008 21:14:06

Probe con el ApllyUpdates(-1) y me da el siguiente error

Código:

Unable to find record. No key Specified

enecumene 26-03-2008 21:18:37

Cita:

Empezado por chinosoft (Mensaje 275471)
Probe con el ApllyUpdates(-1) y me da el siguiente error

Código:

Unable to find record. No key Specified

Ahora que lo veo bien, no se, por qué haces post en el Dataset, luego le das applyupdates al conector y mas abajo Grabar(), a ver postea esa función.

Saludos.

chinosoft 26-03-2008 21:22:52

Código:

void TDMDatos::Grabar(){

        TTransactionDesc TTD;

        TTD.TransactionID = Random(10000) + 1;
        TTD.IsolationLevel = Dbxpress::xilREADCOMMITTED;

        SQLConn->StartTransaction(TTD);

        try {

                SQLConn->Commit(TTD);

        } catch(Exception&) {

                SQLConn->Rollback(TTD);
                throw;
        }

}


enecumene 26-03-2008 21:27:18

Bueno, no le veo nada extraño, pero se me ocurre algo, cual es modo de actualizacion estas utilizando? upWhereAll, upWhereKeyOnly o upWhereChanged? te recomienfo el upWhereChanged y pones en el provider Flags en pfInkey y lo pones en true, prueba y me avisas.

Saludos.

chinosoft 26-03-2008 21:28:58

Encontre la solucion!

El problema estaba en la clave primaria...

... en el SQLDataSet me faltaba agregar en las
ProvidersFlags el pfInKey.

Muchas Gracias por la Ayuda!

Saludos!

enecumene 26-03-2008 21:31:41

Cita:

Empezado por enecumene (Mensaje 275483)
Bueno, no le veo nada extraño, pero se me ocurre algo, cual es modo de actualizacion estas utilizando? upWhereAll, upWhereKeyOnly o upWhereChanged? te recomienfo el upWhereChanged y pones en el provider Flags en pfInkey y lo pones en true, prueba y me avisas.

Saludos.

:rolleyes::rolleyes::rolleyes::rolleyes:;):D


La franja horaria es GMT +2. Ahora son las 02:22:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi