Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2011
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 21
@-Soft Va por buen camino
Smile Tbookmark guarda posición del registro aunque la TAdoTable este en modo Append

hola


Necesito de su vasta experiencia y me guien en una inquietud, como dice el titulo "Una variable Tbookmark puede guardar la posición del puntero de un nuevo registro creado por un Append de un TAdoTable".

gracias de antemano.
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #2  
Antiguo 01-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.731
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Según tengo entendido, TBookmark es solo un puntero al buffer de datos que tenga el TAdoTable.
Por lo tanto, si creas el TBookmark, cierras y abres la tabla y luego vas a donde apunta TBookmark, no necesariamente irás al mismo lugar. Puede ser que alguien haya creado más registros o borrado alguno mientras tenías abierta la tabla.

Yo trato de no utilizar esto a menos que esté seguro de que no se modificarán los datos.

Lo más normal para mi, en entorno multiusuario, es crear mi propio Bookmark.

Código Delphi [-]
var
   Bookmark :string;
[...]
with Tabla do
begin
   {Deshabilito controles para evitar refrescos inecesarios}
   DisableControls;
   {Bookmark suele ser la concatenacion de los campos PK (Primary Key)}
   Bookmark := FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString;
   {Cierro y abro}
   Close;
   Open;
   {Mientras no encuentre el registro y no llegue al final de la tabla}
   while ( (Bookmark <> FieldByName('EJERCICIO').AsString+'-'+FieldByName('NUMERO').AsString+'-'+FieldByName('LINEA').AsString) and (not EOF)) ) do
      Next;
   {No hay que olvidarse de activar los controles}
   EnableControls;
end;

Última edición por duilioisola fecha: 01-02-2011 a las 15:43:17.
Responder Con Cita
  #3  
Antiguo 02-02-2011
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 21
@-Soft Va por buen camino
Unhappy

gracias duilioisola

en conclusión no es recomendable tomar la posición de puntero, luego hacer un append, después hacer el post, después cerrar y abrir el TTable o TQuery y por ultimo recuperar el Puntero para que se mantenga en la posición guardada.

si esto es así, no veo otra forma de mantener los cambios al instante para que el usuario los vea reflejados instantáneamente y ademas que el registro no se le pierda en la lista del DBGrid lo que a mi entender es un poco fastidioso cuando terminas de grabar un registro porque a veces al perder la posición el usuario piensa que no se grabo o si no se reflejan los cambios instantáneamente es una tortura.

que me sugieren para evitar esto?
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #4  
Antiguo 02-02-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Quisiera ayudarte, pero primero necesito entender qué es lo que tú necesitas. Eso no queda muy claro hasta ahora.

¿Podrías explicar cuál es el escenario, situación, problema, etc. con mayor detalle, para entonces ayudarte a encontrar una solución?

¡Gracias!

Al González.
Responder Con Cita
  #5  
Antiguo 02-02-2011
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 21
@-Soft Va por buen camino
Question

de acuerdo Al

es sabido por todos en el foro, que cuando estas haciendo una operacion de inserción, modificación y borrado con TAdoTable o TAdoQuery al momento de hacer un Post, los cambios no se ven reflejados inmediatamente al menos que hagas un Close y después un Open. el caso es que cuando se hace esto se pierde la posición del puntero,.


yo soy de los que hago los mantenimientos mostrando primero una lista con los registros en un Grid, encima un Toolbar con los botones para hacer las operación de inserción, borrado, edición, búsqueda, etc.. cuando hago la operación abro una ventana donde registro los campos y acepto los cambios que se deberían reflejarse automáticamente.

lo que e estado haciendo para "SOLUCIONAR ESTO" poner el TAdoTable en Append, luego guardo la posición y después hago post y por ultimo recupero la posición, pero al parecer y según e investigado y no es un método muy recomendable. desearía que me echen una manito con eso para dar calidad y robustez a mi aplicación.

bueno, espero que mas o menos hallas comprendido el caso, es un caso común.

gracias
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #6  
Antiguo 02-02-2011
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Hola.

Yo no trabajo con ADO, pero creo que lo que voy a comentar puede ayudarte.
En ese tipo de mantenimientos utilizo dos Querys :

1. Una para mostrar en el Grid que va casi siempre contra una VISTA (view). Así puedo mostrar en el Grid información de tablas relacionadas (por ejemplo, el nombre del sector al que pertenece, la descripción de la forma de pago, etc).
2. Otra que es la que se vincula con el formulario de Mantenimiento (altas y modificaciones). Cuando es una modificación, hago un SELECT por el ID del registro que tengo en el grid. Para un alta hago una select por id = -1 para tenerla vacía y la pongo en insert /append. Al cerrar el formulario, puedo recargar la Query del grid y utilizar el id de esta tabla para posicionarme si es necesario.

A mi, ésto me va bien y bastante rápido.

Saludos.
__________________
http://www.gestionportable.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como asignar el tamaño a un fichero aunque este sea de 0 kb kenychy C++ Builder 9 19-11-2010 17:45:15
Registro no visible con TADOTable registrado con TADOQuery saldanaluis Conexión con bases de datos 6 12-12-2007 18:15:48
No guarda el ultimo registro Tecnic2 Conexión con bases de datos 3 01-09-2004 20:31:23
Obtener Todo El Registro De Una Tabla Aunque Aunque Este Agrupado Por 2 Campos agova SQL 6 11-08-2004 16:48:14
Append y registro relacionado javiermorales Conexión con bases de datos 5 02-10-2003 02:25:18


La franja horaria es GMT +2. Ahora son las 11:07:39.


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