Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Error couldn't perform the edit because another user change the record (https://www.clubdelphi.com/foros/showthread.php?t=80391)

jcrios_9 24-09-2012 18:21:53

Error couldn't perform the edit because another user change the record
 
Buenas compañeros, tengo el siguiente codigo

Código Delphi [-]

 Table1->Edit();
            Table2->Edit();
            Table1->FieldByName("Dni")->Value = Edit1->Text;
            Table1->FieldByName("Nombre")->Value = Edit2->Text;
            Table2->FieldByName("Apellido1")->Value = Edit3->Text;
            Table2->FieldByName("Apellido2")->Value = EditApe2->Text;
            Table1->FieldByName("Provincia")->Value = EditProv->Text;
            Table1->FieldByName("Localidad")->Value =EditLoc->Text ;
            Table1->FieldByName("Direccion")->Value = Edit4->Text ;
            Table1->FieldByName("Telefono")->Value = Edit5->Text ;
            Table1->FieldByName("Email")->Value = Edit6->Text ;
            Table1->Post();
            Table2->Post();

pero resulta que me sale el error: Error couldn't perform the edit because another user change the record.
El error sale justo antes de Table2->Post(); Es decir, el post de la tabla1 lo hace bien, pero el de la tabla 2 no.

Con una tabla simpre me sale bien, pero al meterle dos tablas sale dicho error. Alguien puede decirme a que se debe?'

Muchas gracias y un saludo.

Casimiro Notevi 24-09-2012 18:43:24

Hola, si no das más datos no sé si será posible ayudarte.
De todas formas hay algo que me llama mucho la atención, ¿por qué esas dos tablas y por qué esa mezcla tan extraña? :confused:

jcrios_9 24-09-2012 18:52:06

Uso dos tablas porque es una herencia. Hay una tabla clientes(Tabla1) de la cual heredan personas(Tabla2) y empresas.

Entonces necesito almacenar los datos en ambas tablas. Lo curioso es que antes estaba con una sola tabla e iba bien y ahora con las dos tablas suele falla. Porqué falla solo el post de la tabla personas?

He puesto el trozo de codigo donde falla.

jcrios_9 24-09-2012 19:19:00

Haciendo mas pruebas, he averiguado que si modifico solo los datos de la primera tabla, peta, sin embargo, si modifico los datos de ambas tablas, no da error.

lmpadron 26-09-2012 17:19:34

Cita:

Empezado por jcrios_9 (Mensaje 444108)
Buenas compañeros, tengo el siguiente codigo

Código Delphi [-]

 Table1->Edit();
            Table2->Edit();
            Table1->FieldByName("Dni")->Value = Edit1->Text;
            (...)
            Table1->FieldByName("Email")->Value = Edit6->Text ;
            Table1->Post();
            Table2->Post();

pero resulta que me sale el error: Error couldn't perform the edit because another user change the record.
El error sale justo antes de Table2->Post(); Es decir, el post de la tabla1 lo hace bien, pero el de la tabla 2 no.

Con una tabla simpre me sale bien, pero al meterle dos tablas sale dicho error. Alguien puede decirme a que se debe?'

Muchas gracias y un saludo.

Saludos

Algunas veces cuando insertas los datos manualmente debes avisarle al DataSet que vas a hacerlo, para eso se provee la función UpdateRecord():

UpdateRecord es usada internamente por algunos métodos del dataset para informar a los controles de datos(componentes DATA CONTROL) de cambios realizados y lanzar un evento OnUpdateRecord para atrapar las modificaciones. Las aplicaciones no necesitan llamar a UpdateRecord directamente a menos que se salten los métodos establecidos por el DataSet.
En tu caso estas saltándote esos métodos ya que estas asignando los valores manualmente. Ej: Error couldn't perform the edit because another user change the record. Tu codigo debería quedar así mas menos:

Código:

Table1->Edit();
            Table2->Edit();
            Table1->FieldByName("Dni")->Value = Edit1->Text;
            (...)
            Table1->Post();
            Table2->UpdateRecord();
            Table2->Post();

o al menos eso creo !!! hehehe prueba y me dices que tal te salio !!!
:D:D:D:D:D

P.D. Si usas C++ usa la etiqueta CODE y no la de Delphi ok !!! ;)


La franja horaria es GMT +2. Ahora son las 16:03:10.

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