Ir al contenido


Foto

[RESUELTO] ¿Función que retorne TDataSet?


  • Por favor identifícate para responder
5 respuestas en este tema

#1 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 06 noviembre 2009 - 10:51

Saludos compañeros.

Tengo una duda y como en estos días he estado lejos del negocio se me a hecho difícil encontrar la solución.

La duda es necesito hacer una función para calcular capital e interés (esta parte la tengo manejada) y que el resultado por decir sea devuelto en un TDataSet para luego yo manejarlo a mí antojo osea para guardarlo en la tabla destino.

Sería con sus campos y valores pero que sean temporales hasta que yo cargue sus datos.


delphi
  1. CUOTA CAPITAL INTERES MONTO_CUOTA
  2. 1        1000      100        1100
  3. 2        1000      100        1100 



Puede que sea facilito pero anda dando cabezazos estos días.

Por cierto tengo D2007.
  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 06 noviembre 2009 - 01:43

He aquí una idea, creando un archivo xml con el esuqma que necesitas, con esto podrás arrastrar en tiempo de disño un TClientDataset o hacerlo dinámicamente para manipular los datos a tu antojo.  Es solo una idea espero te sirva.



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, Db, DbClient;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Button1: TButton;
  12.     SaveDialog1: TSaveDialog;
  13.     procedure Button1Click(Sender: TObject);
  14.   private
  15.     procedure CrearEsquema;
  16.     procedure ManipularDataset;
  17.     procedure PasarDatos;
  18.     { Private declarations }
  19.   public
  20.     { Public declarations }
  21.   end;
  22.  
  23. var
  24.   Form1: TForm1;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29. { TForm1 }
  30.  
  31. procedure TForm1.Button1Click(Sender: TObject);
  32. begin
  33.   CrearEsquema;
  34. end;
  35.  
  36. procedure TForm1.CrearEsquema; // Creas el esquema y lo guardas en un archivo xml
  37. var
  38.   D: TClientDataset;
  39. begin
  40.   D := TClientDataset.Create(self);
  41.   try
  42.     D.FieldDefs.Clear;
  43.     D.FieldDefs.Add('CUOTA', ftInteger, 0);
  44.     D.FieldDefs.Add('CAPITAL', ftCurrency, 0);
  45.     D.FieldDefs.Add('INTERES', ftFloat, 0);
  46.     D.FieldDefs.Add('MONTO_CUOTA', ftCurrency, 0);
  47.     D.CreateDataSet;
  48. //Aquí podrías empezar a manipular tus datos sin necesidad de crear el archivo xml
  49.     SaveDialog1.DefaultExt := 'xml';
  50.     SaveDialog1.Filter := 'XML files|*.xml|All files|*.* ';
  51.     if SaveDialog1.Execute then
  52.       D.SaveToFile(SaveDialog1.FileName, dfXML);
  53.   finally
  54.     D.Free
  55.   end;
  56. end;
  57.  
  58. procedure TForm1.ManipularDataset;
  59. var
  60.   Archivo: string;
  61.   CD: TClientDataset; // Podrías arrastar un TClientDatse en tiempo de diseño
  62.   // y cargarlo con el archivo de esquema y manipularlo a tu gusto
  63.   I: Integer;
  64. begin
  65.   CD := TClientDataset.Create(self);
  66.   try
  67.     CD.LoadFromFile(Archivo); // Carga el esquema creado en el procedimiento anterior
  68.     CD.Open;
  69.     for I := 1 to CuantosDatosHayan do
  70.     begin
  71.       CD.Append;
  72.       PasarDatos;
  73.       CD.Post;
  74.     end;
  75.     // Aquí podrías guardar tus datos o lo que quieras hacer con ellos
  76.   finally
  77.     CD.CancelUpdates; // Si no quieres contaminar el esquema base
  78.     CD.Close;
  79.     CD.Free
  80.   end;
  81. end;
  82.  
  83. procedure TForm1.PasarDatos;
  84. begin
  85.   // Aqui la parte que ya tienes manejada para obtener tus datos
  86. end;
  87.  
  88. end.


  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 06 noviembre 2009 - 02:04

Otra



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, Db, DbClient;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.   private
  12.     procedure CrearEsquema;
  13.     procedure ManipularDataset(DS: TClientDataset);
  14.     procedure PasarDatos;
  15.     { Private declarations }
  16.   public
  17.     { Public declarations }
  18.   end;
  19.  
  20. var
  21.   Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.dfm}
  26. { TForm1 }
  27.  
  28. procedure TForm1.PasarDatos;
  29. begin
  30.   // Aqui la parte que ya tienes manejada para obtener tus datos
  31. end;
  32.  
  33. procedure TForm1.ManipularDataset(DS: TClientDataset);
  34. var
  35.   I: Integer;
  36. begin
  37.   DS.Open;
  38.   for I := 1 to CuantosDatosHayan do
  39.   begin
  40.     DS.Append;
  41.     PasarDatos;
  42.     DS.Post;
  43.   end;
  44.   // Hacer aqui todo lo que quieras
  45. end;
  46.  
  47. procedure TForm1.CrearEsquema;
  48. var
  49.   D: TClientDataset;
  50. begin
  51.   D := TClientDataset.Create(self);
  52.   try
  53.     D.FieldDefs.Clear;
  54.     D.FieldDefs.Add('CUOTA', ftInteger, 0);
  55.     D.FieldDefs.Add('CAPITAL', ftCurrency, 0);
  56.     D.FieldDefs.Add('INTERES', ftFloat, 0);
  57.     D.FieldDefs.Add('MONTO_CUOTA', ftCurrency, 0);
  58.     D.CreateDataSet;
  59.     ManipularDataset(D);
  60.   finally
  61.     D.Close;
  62.     D.Free
  63.   end;
  64. end;
  65.  
  66. end.


  • 0

#4 axesys

axesys

    Advanced Member

  • Moderadores
  • PipPipPip
  • 640 mensajes
  • LocationLos Mochis

Escrito 06 noviembre 2009 - 06:40

Haber si esto te sirve

Creando tablas de memoria con ClientDataSet


Saludos
  • 0

#5 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 07 noviembre 2009 - 09:16

Gracias por sus respuestas.

Le echare un ojo, lo único que veo como "problema" es que si uso ClientDataSet tengo que llevar el MIDAS.DLL con mi ejecutable pero veremos.
  • 0

#6 axesys

axesys

    Advanced Member

  • Moderadores
  • PipPipPip
  • 640 mensajes
  • LocationLos Mochis

Escrito 07 noviembre 2009 - 10:56

Gracias por sus respuestas.

Le echare un ojo, lo único que veo como "problema" es que si uso ClientDataSet tengo que llevar el MIDAS.DLL con mi ejecutable pero veremos.


Para que no tengas que tener esa dll puedes agregar al uses del proyecto MidasLib


Saludos
  • 0




IP.Board spam blocked by CleanTalk.