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 26-09-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Dudas con ClientDataSet en Memoria

Tengo un CDS(Client DataSet) que es usado solamente en memoria. El es cargado en alguno momento. O que gustaria de hacer es ver todos los datos de este CDS en el Debug del Delphi. Asi, yo tengo asi: CdsValid.Data. Pero mi gustaria de ver las informaciones y pode hacer mis comparaciones para resolver mis problemas, pero tengo dificultad. Antes que mi pregunte voy a decir:
1) Es en memoria, no tiene dataset ninguno a el.
2) Es un proyecto no desarrollados por mi.
3) El carga en alguna parte del sistema y descarga en un relatorio(QReport)
Responder Con Cita
  #2  
Antiguo 26-09-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Ya que un TClientDataSet hereda de TDataSet puedes crear un formulario con un TDBGrid y un TDataSource y relacionarlo todo para mostrar esa información.

Saludos!
Responder Con Cita
  #3  
Antiguo 26-09-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Como hago para tener la query asociada a el? Y los nombres de los campos? Hay como? Para mi lo mas importante es la query asociada a el.
Responder Con Cita
  #4  
Antiguo 26-09-2011
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 Paulao.

Revisá este enlace y mirá sobre la propiedad CommandText del TClientDataSet.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-09-2011 a las 19:50:00.
Responder Con Cita
  #5  
Antiguo 26-09-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Como yo dijo anteriormente, no hay CommandText. Este CDS es en memoria. El se va populando en una ocasion que aún no he resolvido. Mi gustaria de saber si hay como buscar alguno select o saber las colunas. Lo valores yo tengo como saber.(CDSValid.Data[0]) y ponendo las posiciones del vector(0,1,2,3,4...N).
Responder Con Cita
  #6  
Antiguo 27-09-2011
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 Paulao.

Concretamente, ¿ Que buscas hacer con el ClientDataSet en memoria ?, ¿ Que es lo que no podés lograr ?

Supongamos que creaste los campos:
Código:
ID     : Integer;
Codigo : sring;
Fecha  : tDate
Numero : Integer;
y los cargas así:
Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
var
  i: Integer;
begin
  Randomize;
  with CDS do
  begin
    CreateDataSet;
    Open;
    for i:= 1 to 1000 do
    begin
      Append;
      FieldByName('ID').AsInteger := i;
      FieldByName('Codigo').AsString := 'Cod'+
        StringOfChar('0',4-Length(IntToStr(1000-i)))+ IntToStr(1000-i);
      FieldByName('Fecha').AsDateTime := Date();
      FieldByName('Numero').AsFloat := Random(10000);
      Post;
    end;
    First;
  end;
end;

Te pongo algunos ejemplos simples de acciones que podés hacer con un TClientDataSet en memoria:

Seleccionar el índice:
Código Delphi [-]
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  with CDS do
  begin
    Close;
    case RadioGroup1.ItemIndex of
      0: CDS.IndexFieldNames:= 'ID';
      1: CDS.IndexFieldNames:= 'Codigo';
      2: CDS.IndexFieldNames:= 'Fecha';
      3: CDS.IndexFieldNames:= 'Numero';
    end;
    Open;
  end;
end;

Obtener los nombres y valores de los campos:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to CDS.FieldCount -1 do
    ListBox1.Items.Add(CDS.Fields[i].FieldName+': '+CDS.Fields[i].AsString);
end;

Buscar un campo:
Código Delphi [-]
function Buscar(ACDS: TClientDataSet; Campo: string; Dato: Variant): Boolean;
begin
  CDS.Locate(Campo, Dato,[]);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Buscar(CDS,'ID', 990);
  if Buscar(CDS,'Codigo','Cod0091') then
  ...
end;
...

Y la lista sigue...

Sería más fácil resolver tu inquietud si nos contás en que radica tu dificultad

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 27-09-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Cita:
Empezado por Paulao Ver Mensaje
Como yo dijo anteriormente, no hay CommandText. Este CDS es en memoria. El se va populando en una ocasion que aún no he resolvido. Mi gustaria de saber si hay como buscar alguno select o saber las colunas. Lo valores yo tengo como saber.(CDSValid.Data[0]) y ponendo las posiciones del vector(0,1,2,3,4...N).
Supongo que así puedes sacar la información pero TClientDataSet desciende de TDataSet por lo que puede hacer:
Código Delphi [-]
  MiCDS.FieldByName('PEPE').AsInteger := 5;
  MiCDS.Insert;
  MiCDS.Post;
  while not MiCDS.Eof do
  begin
    for i := 0 to MiCDS.FieldCount - 1 do
      ShowMessage(MiCDS.Fields[i].FieldName);
    MiCDS.Next;
  end;

Y muchas más... Filter, Eventos...

Lo que no entiendo es lo de la query. Dices que lo cargas en memoria, pero ¿luego quieres acceder a la "query"? ¿Te refieres a los datos? ¿o a la consulta que hiciste?
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
ClientDataSet.LoadFromFile() y consumo de memoria Walterdf Conexión con bases de datos 4 07-03-2012 00:57:20
dudas sobre uso de query, clientdataset en ADO djanp Conexión con bases de datos 2 26-02-2009 15:55:59
ClientDataSet y XML gsilvei Conexión con bases de datos 0 03-10-2007 22:59:18
DE BD SQL a CLIENTDATASET ada MySQL 0 05-10-2004 12:18:41
ClientDataSet y W98 tgsistemas Conexión con bases de datos 5 03-08-2004 10:13:06


La franja horaria es GMT +2. Ahora son las 21:51:32.


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