Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema al añadir registro (https://www.clubdelphi.com/foros/showthread.php?t=31185)

joanajj 01-05-2006 02:27:02

Problema al añadir registro
 
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

Código Delphi [-]
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

El problema lo tengo con ADOquery
 
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 por la respuesta
 
Gracias lo voy a probar a ver que tal y ya os comento.

Gracias


La franja horaria es GMT +2. Ahora son las 02:39:41.

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