Club Delphi  
    Paypal   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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2013
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Dudas y misterios en componentes ADO

Buenos dias, Me ha surgido una inquietud con estos componentes que me parecen excelentes por cierto. Tengo un ADODataSet conectado a una DBGrid todo anda perfecto hasta que.. la DBGrid hace el post de manera automática lo que hace que cada registro se grabe en la base de datos (MS SQL Server 2008) pero lo que yo necesito es que no se graben. Digamos que el post no grabe hasta que yo se lo indique al DataSet.
En la ayuda de delphi dice lo siguiente:

Cita:
TDataSet implements a virtual method to write a modified record to the database or change log. Dataset methods that change the dataset state, such as Edit, Insert, or Append, or that move from one record to another, such as First, Last, Next, and Prior automatically call Post.

Different types of datasets handle posting differently:

BDE-enabled datasets post records directly to the database server unless CachedUpdates is true. When caching updates, BDE-enabled datasets post records to an internal change log until they are applied to the database by calling ApplyUpdates.
En español:

Cita:
TDataSet implementa un método virtual para escribir un registro modificado a la base de datos o registro de cambios. Métodos de conjuntos de datos que cambian el estado conjunto de datos , como Edit, Insert o Append , o que se mueven de un registro a otro , tales como First, Last , Next y Prior llamar automáticamente a Post.

Los diferentes tipos de conjuntos de datos manejan la publicación de otra manera:

Conjuntos de datos BDE habilitados para colocar los registros directamente al servidor de base de datos a menos CachedUpdates es True. Cuando el almacenamiento en caché actualizaciones , conjuntos de datos BDE - habilitados Publicación de registros a un registro de cambio interno hasta que se aplican a la base de datos llamando ApplyUpdates.
Busque la propiedad CachedUpdates en el TADODataSet y no esta, al igual que ApplyUpdates.

Cual es el problema?

Gracias.
Responder Con Cita
  #2  
Antiguo 31-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jere_84.

Si no recuerdo mal, tenes que poner la propiedad LockType igual a ltBatchOptimistic y luego usar el método UpdateBatch para hacer efectivos los cambios.

Por ejemplo:
Código Delphi [-]
procedure TForm.FormCreate(Sender: TObject);
begin
  ...
  with ADODataSet1 do
  begin
    LockType := ltBatchOptimistic;
    Open;
  end;
end;

procedure TForm.btnGuardarClick(Sender: TObject);
begin
  ...
  ADODataSet1.UpdateBatch(arAll);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 01-11-2013
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 18
orodriguezca Va por buen camino
Sugiero un ClientDataSet

La solución propuesta por ecfisa con toda seguridad va a funcionar, pero cuando tratamos de realizar cosas un poco más sofisticadas con los datos las capacidades "batch" de los componentes ADO pueden resultar algo limitadas comparado con lo que se podía hacer con los componentes BDE. Yo, sin pensarlo mucho, me apoyaría en la pareja TClientDataSet - TDataSetProvider para lograr los resultados que quiere Jere_84.


Saludos,
Responder Con Cita
  #4  
Antiguo 01-11-2013
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Solucionado

Muchas gracias ecfisa, anduvo perfecto, lo probé y funciona de esa manera. No creo que lo componentes ADO sean limitados me parece que utilizan internamente librerías del mismo sistema windows o no es as? creo que son la mejor opción cuando uno trabaja con SQL Server. Utilice también los TClientDataSet en una aplicación datasnap y son muy buenos.

Saludos cordiales.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dudas con Algunos Componentes! eddg Varios 16 08-10-2007 23:21:54
Los 13 misterios inexplicables marcoszorrilla La Taberna 1 05-11-2006 02:20:05
Dudas acerca de los componentes TClientSocket y TServerSocket alastor Internet 3 07-08-2006 18:30:00
Mas dudas con los componentes en RunTime bustio OOP 3 09-02-2005 06:02:34


La franja horaria es GMT +2. Ahora son las 16:40:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi