Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
como usar Funcion que devuelva array

buenos dias
tengo esta funcion que me devuelve un campo de una tabla cualquiera

Código Delphi [-]
function _Obtener(_tabla, _Campo, _condicion: string): string;
var
  strSql: string;
begin
  strSql := 'Select ' + _Campo + ' From ' + _tabla + ' where ' + _condicion;
  dmComedor.qryTemporal.SQL.Clear;
  dmComedor.qryTemporal.SQL.Add(strSql);
  dmComedor.qryTemporal.Open;
  Result := dmComedor.qryTemporal.FieldByName(_Campo).AsString;
end;

puedo utilizarla asi

Código Delphi [-]
_tipoTrabajador := _obtener('tbltrabajador','tipo','codigo = "012447"';

y tengo el tipo de trabajador en la variable _tipotrabajador

luego pensé
si necesito "n" campos no voy a estar invocando a la funcion "n" veces

entonces la idea es que pueda pasarle mas campos en el parametro campos para que me devuelva la lista de campos que deseo, el tema es cómo tratar el resultado?

tendria que cambiar el tipo de funcion de string a array?

intente hacerlo, pero no logro hacerlo funcionar, alguien me da una mano?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 20-10-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado le propongo la siguiente opción.

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.ValEdit, Vcl.StdCtrls;

type
  TDatos=record
   FieldName:String;
   FieldValue:String;
  end;

  TDatosList=TArray;

  TForm1 = class(TForm)
    Button1: TButton;
    vlData: TValueListEditor;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function GetDatos(AFields:Array Of String): TDatosList;

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
Var
  Datos:TDatosList;
  i: Integer;
begin
     Datos:=GetDatos(['Campo 1','Campo 2','Campo3']);

     for i := Low(Datos) to High(Datos) do
        vlData.Values[Datos[i].FieldName]:=Datos[i].FieldValue;

     SetLength(Datos,0);
end;

function TForm1.GetDatos(AFields:Array Of String): TDatosList;
var
   i:Integer;
begin
     SetLength(result,length(AFields));

     for i := Low(AFields) to High(AFields) do
     begin
          result[i].FieldName := AFields[i];
          result[i].FieldValue:= 'Valor de '+AFields[i];
     end;
end;

end.

Saludos cordiales

Última edición por cloayza fecha: 20-10-2023 a las 20:44:25.
Responder Con Cita
  #3  
Antiguo 20-10-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes devolver un TStringList, pero de todas formas para devolver varios registros no veo muy útil esa función.
Responder Con Cita
  #4  
Antiguo 20-10-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular

Cita:
Empezado por Casimiro Notevi Ver Mensaje
...pero de todas formas para devolver varios registros no veo muy útil esa función.
Querido Casimiro, el ejemplo lo enfoque solo en el retorno del array...Como siempre tienes razón que para devolver varios registros hay que hacerle algunos retoques...

Saludos cordiales
Responder Con Cita
  #5  
Antiguo 21-10-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A lo mejor no he entendido bien lo que necesitas, pero si te sirve entonces está bien
Responder Con Cita
  #6  
Antiguo 23-10-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Código Delphi [-]
unit System.Types;

function MiFuncion(var1:String):TArray<string>;
begin
 // Tu codigo acá ...
 Result[0]:= 'Resultado 0';
 Result[1]:= 'Resultado 1';
end;
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
¿funcion que devuelva mas de 1 valor? JXJ Varios 10 15-04-2011 20:13:56
Usar array y funcion mean? Gugao Varios 2 03-08-2007 15:20:26
Función devuelva día del año Moparova Varios 2 23-04-2007 23:03:59
Funcion que Devuelva Fecha y Hora en C# omar_e_rc .NET 1 28-09-2005 21:47:59
Funcion que devuelva mas de un valor ckaki Varios 1 27-11-2003 00:07:59


La franja horaria es GMT +2. Ahora son las 13:40:36.


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