PDA

Ver la Versión Completa : Problema al añadir registro


joanajj
01-05-2006, 02:27:02
Buenas a todos, tengo el siguiente problema a ver si alguien me hecha una mano:

delphi7
tengo una tabla access con componente adotable y dataset

creo la sentencia sql para acceder a los datos ordenados por apellidos y nombre y asi visualizarlos en un dbgrid. Hasta ahí yodo bien.
El problema surge cuando añado algún dato nuevo que en vez de colocarlo donde le corresponda por el orden, lo coloca al final.

ej.

ana
carlos
pepe

añado bartolo y el resultado debería ser:

ana
bartolo
carlos
pepe

pero el resultado que me aparece en el grid es:

ana
carlos
pepe
bartolo

los datos los añado con:

tabla.edit;
tabla.campo.value:='bartolo';
tabla.campo.post;


al cerrar la tabla y volver a abrirla si me aparecen bien ordenados pero en una tabla grande el proceso sería lentísimo, ademáa que yo sepa este problema no debería suceder.

Saludos a todos....

vtdeleon
01-05-2006, 04:39:45
Saludos

tabla.edit;//<==Creo que esto está Mal, te referias a Insert???/
tabla.campo.value:='bartolo';
tabla.campo.post;
No creo que se refresque el orden al instante. Para que se refleje el orden creo que debes cerrar y nuevamente abrir el AdoTable.

pfsoft
01-05-2006, 07:43:46
No sé que componente usas, pero yo he probado con el TADOTable, abriendo una tabla, fijando la property IndexFieldName a nombre, donde nombre es el campo alfanumérico por el que quieres que te ordene, y posteriormente en la aplicación, cuando insertas un nombre haces lo siguiente:

with ADOTable1 do
begin
Append;
FieldValues['nombre'] := edNombre.Text;
Post;
end;

El DBGrid aparece ordenado perfectamente.

Un Saludo.

Pedro J.Fdez.
pedrofdez@ono.com
pfsoftware@ono.com

joanajj
01-05-2006, 12:01:45
Efectivamente, tal como comentais funciona, pero el mismo cçodigo usando un adoquery es como me ocurre el problema, al añadir con append y grabar el nuevo registro se me coloca al final y no por su orden que es:

select * from tabla1 order by apellido,nombre

la tabla aparece ordenada, pero los nuevos se colocan al final. Desde que cierro y abro se colocan...

Sabéis por que puede ser ?

luisgutierrezb
02-05-2006, 17:25:24
con un simple adoquery.requery despues del post, se corrige el problema,
otra cosa que puedes hacer es ordenar los datos en tu programa, pero tambien lo tienes que hacer en el afterpost, simple, manda llamar el query sin ninguna ordenacion, ya en tu programa pones:

adoquery.sort := 'Apellido ASC Nombre DESC' ;

por decir algo y listo! se ordenaran los datos

joanajj
02-05-2006, 20:21:12
Gracias lo voy a probar a ver que tal y ya os comento.

Gracias