| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 03 Nov, 2003 9:09 pm Asunto: El odioso could't perform edit because another user ... |
|
|
| Código: |
tbTemporalFisico->Close();
tbTemporalFisico->EmptyTable();
qryConsulta->Close();
qryConsulta->SQL->Clear();
qryConsulta->SQL->Add("INSERT into tmp_fisico SELECT 0,existencia,idinsumo,idunidad,nombre_INSUMO as descripcion FROM insumos ");
qryConsulta->ExecSQL();
tbTemporalFisico->Close();
tbTemporalFisico->Open();
|
TemporalFisico es tambra tmp_fisco que es actualizada por el query..
a, esta raro en algunos registros puede editarla perfectamente pero en otros NOOOO dice la "could't perfom edit because another user has changed record"
NO HAY OTRO PINCHE USUARIO.. NO ENTIENDO.. ayuda porfavor _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Lun 03 Nov, 2003 9:55 pm Asunto: Concurrencia |
|
|
Me parece que estas usando IB como BD, el tipo de mensaje denota un control de concurrencia optimista bueno en cualquier caso cuando tienes varios componentes de acceso a tablas apuntando a la misma tabla es como si varios usuarios la estuvieran usando simultaneamente, si por casualidad se afectan el o los mismos registros desde dos angulos distintos nos encontramos con que los ultimos en actualizarse deben fallar.
Prueba lo siguente: verifica que la tabla y query tengan la misma transaccion, dale commit a la transaccion justo despues de vaciar la tabla, o vaciar la tabla con la query "Delete from..."
Cualquier cosa comentanos por aqui... |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 03 Nov, 2003 10:23 pm Asunto: |
|
|
Y ano tengo tiempo de seguir revisndo esto, ya llevo 6 meses y ese pinche error sale a veces y no entiendo por que , asumno qeu es un ERROR de c++ builder en su area de bases de datos o del MYOBDC
cambie el codigo al modo que segun ian marteens no se debe usar pero ni modo , que chiste es que funcione, si alguien sabe del por que ese ODIOSOS error agradecere respuesta
| Código: |
dmDefiniciones->tbInsumos->Open();
tbTemporalFisico->Close();
tbTemporalFisico->EmptyTable();
tbTemporalFisico->Close();
tbTemporalFisico->Open();
dmDefiniciones->tbInsumos->First();
while (dmDefiniciones->tbInsumos->Eof==false)
{
tbTemporalFisico->Append();
tbTemporalFisico->FieldByName("cantidad_fisico")->AsFloat=0;
tbTemporalFisico->FieldByName("cantidad_sistema")->AsFloat=dmDefiniciones->tbInsumos->FieldByName("existencia")->AsFloat;
tbTemporalFisico->FieldByName("idinsumo")->AsString=dmDefiniciones->tbInsumos->FieldByName("idinsumo")->AsString;
tbTemporalFisico->FieldByName("idunidad")->AsString=dmDefiniciones->tbInsumos->FieldByName("idunidad")->AsString;
tbTemporalFisico->FieldByName("descripcion")->AsString=dmDefiniciones->tbInsumos->FieldByName("nombre_insumo")->AsString;
tbTemporalFisico->Post();
//tbTemporalFisico->FlushBuffers();
dmDefiniciones->tbInsumos->Next();
}
tbTemporalFisico->First();
dmDefiniciones->tbInsumos->Close();
|
hace lo mismo pero sin el query del codigo de arriba,todo con tablas
(son tablas cortas de no mas de 100 renglones) _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 03 Nov, 2003 10:24 pm Asunto: |
|
|
Grcaias Alfredo hice lo que me dijiste y nada, disculpa, es unca saso raro sin repuesta jeje, creo que suced cuanto mezclas tablas con querys _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Atacaite Ens

Registrado: 28 Oct 2003Mensajes: 26Ubicación: Gran Canaria
|
Publicado: Lun 03 Nov, 2003 11:56 pm Asunto: |
|
|
No he parado a mirar el codigo que intentas que te funcione, pero te explico mi caso e igual encuentras por ahi la solucion.
El 95% de las veces que me ocurre el error de que otro usuario ha modificado el registro me da pq utilizo campos en la base de datos que son automaticamente inicializados a un valor, y yo dentro de mi aplicacion esos campos no los toco. Por tanto en mi consulta en Local el valor de ese campo es nulo, y en la base de datos se ha inicializado al valor predeterminado.
Por eso no me concuerdan los datos que yo tengo en mi consulta en local con los que hay en la base de datos, y por eso me dice que hay otro usuario que ha modificado los datos, pero simplemente es el valor predeterminado del campo que se inserta por defecto. ¿Me entiendes por donde voy? Quizas sea ese el problema que tienes.
Salu2  |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 04 Nov, 2003 12:04 am Asunto: |
|
|
atacaite:
En este caso uso mysql y no tengo definido valores por defecto , como puedes ver en el primer ejemplo del codigo es muy simple
un Query que inserta los datos de una tabla a otra tabla temporal.
Pero por alguna OBSCURA RAOZN algunos de lso campos no pueden ser actualizados por que indica eror
Si cambio ese codigo y omito la consulta de actualizacion y lo hago en cliclso funciona perfectamente (ejemplo del ultimo codigo)
Por otro lado si e slo qu e me indicas en tu mensaje ¿Como lo corriges? _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Atacaite Ens

Registrado: 28 Oct 2003Mensajes: 26Ubicación: Gran Canaria
|
Publicado: Mar 04 Nov, 2003 12:13 am Asunto: |
|
|
A mi nunca me ha pasado ese caso en la base de datos, trabajo con SQL Server pero la base de datos es lo de menos, sin que fuera el problema que te digo. Podria ser un OBSCURO CASO como indicas .
Para solucionarlo lo que tengo que hacer es insertar datos en absolutamente todos los campos de la tabla. No dejar ningun campo sin datos, aunque yo sepa que si no lo toco se me inicializa a 0 por ejemplo, debo meter el 0 en mi consulta para que luego no me cante el dichoso error , lo cual es una putada si tenemos en cuenta que algunas de las tablas con las que trabajo son de 40 campos o mas  |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 04 Nov, 2003 1:59 am Asunto: |
|
|
Descubir en base a lo que me dijiste algo muy raro, cuando tienen mas de 4 decimales me infica el error descrito anteriormente.. ?¿?¿? un error de c++ builder, redondeo los datos y no marca error????
Help _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Atacaite Ens

Registrado: 28 Oct 2003Mensajes: 26Ubicación: Gran Canaria
|
Publicado: Mar 04 Nov, 2003 2:04 am Asunto: |
|
|
Es posible que al insertar los datos en la tabla tu insertes mas decimales que los que permite y la base de datos te los recorte y te haga una especie de redondeo, por eso puede que no le concuerden los datos. Prueba a ajustar los datos con la funcion FormatFloat y asi te aseguras de que lo que insertas en la base de datos es lo que realmente te guarda  |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 04 Nov, 2003 5:52 am Asunto: |
|
|
LO solucione redondeando mi tabla de existencias cada vez que sale del modulo de produccion, con eso fijo mis decimales a 2
Grcaias por todo
Pero de todos modos sigo pensando que es un error de myobd o de builder _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
|