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: 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
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
  #7  
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
El dataset q contiene los ID_COMPRASPEN es un codigo q consulta todos los registros q tenga el usuario pendiente en el q al recorrerlo cada vez cierra y abre el dataset q me trae los detalles de esa consulta. Es efectivo cuando tengo mas de un registto pendiente mas no me refresca al tener solo un registro al ser ingresado recientemente como pendiente y solamente lo hace cuando cierro el programa totalmente.


Saludos
Responder Con Cita
  #8  
Antiguo 14-11-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 novato_erik.

No tomes esto como una crítica, nada mas alejado de mi intención, es sólo un consejo. Noto que del modo en que describes la situación no hemos podido entenderla, fijate si puedes replantearla de otro modo para así poder ayudarte.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 14-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: 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
...Y, por favor, usando puntos, comas y todo lo indispensable para que sea posible entender lo que escribes. ¡Por el amor de Chuck Norris!
Responder Con Cita
  #10  
Antiguo 19-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
jajaja Chicos Disculpen la tardanza en contestar...

Cita:
ecficsa

No tomes esto como una crítica, nada mas alejado de mi intención, es sólo un consejo. Noto que del modo en que describes la situación no hemos podido entenderla, fijate si puedes replantearla de otro modo para así poder ayudarte.
Tranquilo para nada me afecta las criticas en realidad aprendo de mis errores y procuraré ser más detallado en mis consulta...

Al González

Cita:
...Y, por favor, usando puntos, comas y todo lo indispensable para que sea posible entender lo que escribes. ¡Por el amor de Chuck Norris!
Muy sinceramente Gracias Al González igual que a ecfisa procuraré ser mas detallado pero en realidad encontré unan solución ejemplo:

al cerrar mi formulario de consulta de compras pendientes en su respectivo evento
Código Delphi [-]
 TfrmConsultaComprasPendiente.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
with dmComprar.cdsComprasPendientesUser do
begin
   Params.ParamByName('IDUSCOMPRA').AsInteger := Variables.Id_usuario;
   open;
end;
if   dmComprar.cdsComprasPendientesUser.Active then //Aquí me quedé en duda con la interrogante que tenia AgustinOrtu asi que utilizé los parametros del ClientDataSet asociado con mi TSQLQuery de DBExpress y en realidad resulta igual.
  dmComprar.cdsComprasPendientesUser.Refresh;
  Variables.registroscompraspen := dmComprar.cdsComprasPendientesUser.
    RecordCount;
  dmComprar.cdsComprasPendientesUser.Active := False;
  dmComprar.cdsDetallesComprasPendientesUser.Active := False;
  if registroscompraspen >= 1 then
  begin
    frmPrincipal.LblAvisosMSG.Caption := 'Tienes ' +
      IntToStr(registroscompraspen) + ' Registros de Compras Pendientes';
    frmPrincipal.iAvisosInv.Picture.LoadFromFile
      ('C:\MIPROGRAMA\Imagenes\Package-warning-iconTxT.png');
    frmPrincipal.LblAvisosMSG.Font.Color := ClRed;
  end
  else
  begin
    frmPrincipal.LblAvisosMSG.Caption := 'No tienes Notificaciones';
    frmPrincipal.iAvisosInv.Picture.LoadFromFile
      ('C:\MIPROGRAMA\Imagenes\Package-Accept-iconTxT.png');
    frmPrincipal.LblAvisosMSG.Font.Color := clWindowText
  end;
end;

En fin al cerrar los ClientDataSet o Desactivarlos al volver abrirlo simplemente los DBGRID asociados al datasource y clienteDataSet no mostraban nada así que hice esto:

Código Delphi [-]
procedure TfrmConsultaComprasPendiente.btnBuscarPendientesClick(
  Sender: TObject);
begin
//DataSource1.DataSet := DataModule1.FindComponent('DatosCliente') as TDataSet
dbgComprasPendientes.Enabled := True;
dbgComprasPendientes.DataSource.DataSet :=
dmComprar.FindComponent('cdsComprasPendientesUser') as TDataSet;
with dmComprar.cdsComprasPendientesUser do
begin

   close;
   Params.ParamByName('IDUSCOMPRA').AsInteger := Variables.Id_usuario;
   open;
end;
  if  dmComprar.cdsComprasPendientesUser.Active then
   dmComprar.cdsComprasPendientesUser.Refresh;
end;

y Listo ya me trae los datos recientes que me costaba pero sinceramente estoy en duda porque el DBGRID Pierde su propiedad Enable poniendolo en falso.

De todas manera con esto ya corregí mi comportamiento extraño.

Chicos Realmente aprecio mucho su colaboración a mejorarme con ustedes he aprendido y me falta mucho más que aprender Cualquier cosa si se dan alguna vez una vuelta por Panamá avisen para tomar algo juntos.


Saludos

novato_erick

PD: en realidad voy a reducir más mi codigo porque al verlo me di cuenta que se puede hacer...
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 01:25:31.


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