Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-06-2003
Ricardo Alfredo Ricardo Alfredo is offline
Miembro
 
Registrado: may 2003
Ubicación: Santiago - Chile
Posts: 65
Poder: 21
Ricardo Alfredo Va por buen camino
Question Reposicionar registro grabado

Hola Amigos, he buscado en los mensajes anteriores esta situacion pero no logro encontrarlo.
Sucede lo siguiente , estoy trabajando con una Ttable , en la cual ingreso datos y cuando grabo me vuelve al principio. Esta TTable la tengo en una form con estilo de registro a registro. Lo que yo deseo es que cuando el usuario grabe un nuevo registro este quede posicionado en el nuevo registro, lo que me sucede ahora es que se me va a otro registro, que aparentemente es el primero grabado en la tabla.

Como puedo solucionar este problemita.


Gracias
Responder Con Cita
  #2  
Antiguo 23-06-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Estilo de registro a registro?

Qué quieres decir que tienes una rejilla (DbGrid) e introduces los datos a través de la rejilla?

Y que quieres que al dar un alta el puntero se quede sobre dicho registro?

Un saludo.
Responder Con Cita
  #3  
Antiguo 23-06-2003
Ricardo Alfredo Ricardo Alfredo is offline
Miembro
 
Registrado: may 2003
Ubicación: Santiago - Chile
Posts: 65
Poder: 21
Ricardo Alfredo Va por buen camino
Hola, no utilizo dbgrids sino que un registro a la vez, en el caso de los dbgrids no tiene mayor importacia ya que tengo un conjunto de datos a la vista, encambio con los otros componetes, que manejan un registro a la vez (dbedit, dbcombo box, etc), cada vez que doy grabar se me posiciona en el primer registro .
Para solucionar temporalmeten lo que hago es que despues del post uso el fillter y me imagino que debiera ser de otro modo.
Responder Con Cita
  #4  
Antiguo 23-06-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Perdona pero cuando dices doy a grabar, que código se ejecuta, porque si solamente haces Post, el puntero se queda posicionado en le registro actual.

Un Saludo.
Responder Con Cita
  #5  
Antiguo 23-06-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 22
cmgenny Va por buen camino
Holas

Ricardo Alfredo

No te explicas muy bien pero si lo que quieres es que al insertar un registro nuevo los que estan se queden arriba en el dbgrid y el nuevo sea el que se queda abajo (como en las facturas), lo que tienes que hacer es cambiar post por append.

append inserta un registro al final de la tabla.

si no te ayude explicate mejor quizas podamos entenderte gracias.
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan.
Sr. Genny Cris Morillo Santos
Estudiante ING. Sistemas
Santo Domingo D.N.
Responder Con Cita
  #6  
Antiguo 24-06-2003
Ricardo Alfredo Ricardo Alfredo is offline
Miembro
 
Registrado: may 2003
Ubicación: Santiago - Chile
Posts: 65
Poder: 21
Ricardo Alfredo Va por buen camino
Tengo la siguiente estructura:
Tabla A (MAESTRA)
Tabla B (Detalle B)
Tabla C (Detalle C)

En una form ingreso simultaneamente en estas tres tablas con la siguiente secuencia.
En un PageControl tengo 2 Tabsheet, en el primero los datos de la MAESTRA (Tabla A), en el segundo tengo el tabsheet "separado" en dos ya que tengo otro PageControl.
En la parte fuera de este page tengo los datos de la tabla B (Detalle B) que son prerequisito de la tabla C que esta dentro del segundo PageControl.

Entonce para la tabla B yo ingreso un dato, como este es prerequicito de la tabla C cuando el usuario da un click o pone el foco en el tabsheet del segun pagecontrol yo realizo lo siguiente
if tabla_B.modified then tabla_B.post;

con esto me aseguro que el dato existira cuando trate de ingresar en la tabla C.

Justo cuando realiza esta accion es que me cambia el dato que se visualiza por uno que ya esta grabado, pero el dato que recien ingrese quedo grabado correctamente, sin embargo esto me produce que debo seleccionar el dato grabado nuevamente para que en la tabla C me quede en forma correcta.

He revisado la definicion bien la definicion del MasterFields para descartar que me falte alguna condicion pero esta completa.

Mas o menos esa es la situacion.
Responder Con Cita
  #7  
Antiguo 24-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
si solo haces un Post como mencionas, como te dice Marcos, el cursor deberia quedarse en el registro grabado y no irse al principio de la tabla. Seguro que no haces nada en algun evento (como en el AfterPost de la tabla o algo asi)??
Responder Con Cita
  #8  
Antiguo 26-06-2003
Ricardo Alfredo Ricardo Alfredo is offline
Miembro
 
Registrado: may 2003
Ubicación: Santiago - Chile
Posts: 65
Poder: 21
Ricardo Alfredo Va por buen camino
Hola de nuevo, mira no tengo nada an los after de la tabla, pero siguiendo con mas cuidado este problema me percate que solo pasa cuando las claves de la tabla son similares, es decir por ejemplo ingreso una fila con la siguiente clave (todas mis campos claves en este caso son del tivo varchar)

primera fila clave
Unidad Santander

segunda fila clave
Unidad Valdivia

tercera fila clave
Unidad Santiago

en el caso cuando agrego el tercer registro, posterior a realizar el post , se me posiciona en el primer registro, esto "Unidad Santander".

ahora bien revisando existe la instruccion GotoBookmark , que me parece que es para posicionar un dataset, pero no logro enter como utilizarla, si me pueden ayudar con esto por favor
Responder Con Cita
  #9  
Antiguo 27-06-2003
emili emili is offline
Miembro
 
Registrado: jun 2003
Ubicación: Ontinyent (Valencia)
Posts: 14
Poder: 0
emili Va por buen camino
Te comprendo perfectamente Ricardo Alfredo.

La solución es guardarse los valores donde quieras posicionarte y luego hacer un FindKey de la clave primaria del registro de dicha tabla.

Seria algo asi:

// antes de guardar el registro insertado
Campo_clave_1:= Tabla.Campo_clave_1.AsVariant // o el tipo que sea;
Campo_clave_2:= Tabla.Campo_clave_2.AsVariant;
Campo_clave_3:= Tabla.Campo_clave_3.AsVariant;

// Seguidamente haces el post
Tabla.post;

// Ahora debes hacer el FindKey
Tabla.FindKey([Campo_clave_1,Campo_clave_2,Campo_clave_3]);



Esto te posicionará en el registro que acabas de insertar.


Saludos a todos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:41:12.


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
Copyright 1996-2007 Club Delphi