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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-11-2015
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
No se habilita un ClientDataSet al Limpiarlo

Hola Chicos como han estado?

Bueno aprovecho para ver si me ayudan en un comportamiento que tiene el componente ClientDataSet que no he logrado corregir:

El usuario me ah comentado que mi tabla temporal trae registro que anteriormente a ingresado haciendo que dichos registros que no pertenece a ese nuevo registro estén dentro de una tabla que he denominado DETALLE_CPENDIENTE.

bueno en fin pensando corregir este problema hice esto en el Evento OnCloseQuery del Formulario:

Código Delphi [-]
        dmComprar.cdsDetallesComprasPendientesUser.DisableControls;
      try
        dmComprar.cdsDetallesComprasPendientesUser.EmptyDataSet;
      finally
        dmComprar.cdsDetallesComprasPendientesUser.EnableControls;
      end;

En teoria deberia me limpia pero en un evento que tengo en un dbgrid que me trae registros pendientes y quiero continuar dicho registro seleccionado me pasa que el ClientDataSet no hace nada está vacío.

Código Delphi [-]
procedure TfrmConsultaComprasPendiente.dbgComprasPendientesCellClick
  (Column: TColumn);
begin
  with dmComprar.qDetallesComprasPendientesUser do
    try
      Close;
      Params.parambyname('ID').AsInteger :=
        dmComprar.cdsComprasPendientesUserID_COMPRAPEN.AsInteger;
    finally
      Execsql;
    end;
  dmComprar.cdsDetallesComprasPendientesUser.Open; 
 
end;

No entiendo porque ese comportamiento


Saludos

Novato_erick
Responder Con Cita
  #2  
Antiguo 13-11-2015
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Es que te falta punto y coma.
Responder Con Cita
  #3  
Antiguo 14-11-2015
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Question

Hola Algonzales


Me falta punto y coma?
Responder Con Cita
  #4  
Antiguo 14-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Yo la verdad no entendi nada

En el codigo del evento OnCellClick lo que yo leo es lo siguiente:

1. Cierras un query
2. De ese query, asignas al parametro Id el valor del campo UserID_COMPRAPEN del ClientDataSet cdsComprasPendientes
3. Ejecutas un sql ??? no entiendo el porque del bloque try-finally
4. Abres el ClientDataSet

a. No entiendo porque en 1 cierras el query. Como en 3 estas usando ExecSQL imagino que es una sentencia UPDATE o DELETE, en ese caso no necesitas cerrar el query. En realidad lo mas adecuado seria no usar un query, sino un command

b. No entiendo porque abres el ClientDataSet. En que momento se cierra?


---


Solo me queda adivinar, y es que como nunca cierras el ClientDataSet, entonces "no refresca". Yo agregaria un Close al ClientDataSet
Responder Con Cita
  #5  
Antiguo 14-11-2015
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Hola AustinOrtu

El bloque try finally

Cita:
Delphi al limite.
Es lo que se llaman excepciones anidadas.

http://delphiallimite.blogspot.com/2...-y-ii.html?m=1
Al finalizar abro el dataset trayendo el conjunto de datos abriendolo.
Creo q a la final simplemente es controlar mi codigo.

Saludos...
Responder Con Cita
  #6  
Antiguo 14-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hola de nuevo erick

Se como funcionan los bloque try-finally. En este caso mi duda era el porque el empleo del mismo.

Basicamente estas diciendo

1. Cerrar el DataSet
2. Asgino un parametro a un query

Si en 1 o 2 ocurre una excepcion, el finally se ejecuta siempre. Realmente ese es el efecto deseado?

Es decir, falla la asignacion del parametro, supongamos que el DataSet estaba cerrado. Pum, excepcion y se ejecuta el finally
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
buscar registros de un ClientDataSet a otro clientDataSet novato_erick Conexión con bases de datos 2 02-02-2013 20:48:09
Qreport No me habilita el icono de la impresora ingel Impresión 2 11-12-2010 10:50:39
XML a ClientDataSet el-otro Internet 4 23-08-2010 19:35:21
Check Box que habilita ComboBox Guillermo80 Varios 5 12-05-2008 22:22:34
ClientDataSet narvaez.om Conexión con bases de datos 2 19-05-2004 18:58:21


La franja horaria es GMT +2. Ahora son las 08:59:48.


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