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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-02-2012
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 17
gustavosv Va por buen camino
Método retorna Set de datos

Hola, hace unos días preguntaba en éste foro sobre el tema de 'Abstraccción', y las respuestas que generosamente me bridaron implican un estudio juicioso del tema, y bueno, como no solo del amor vive el hombre (hay que generar dinero), decidí tomar un camino intermedio mientras tanto.

La historia es que estoy trabajando en un proyecto de bases de datos que de antemano quiero que me sirva tanto para una empresa pequeña que solo quiera usar una BD como MS Access o para otra más grande que ya se le mida a temas como MySQL, entonces pensé en 3 capas, front al usuario (concepto visual) por un lado, unas clases que me representen las tablas de la BD y todas las acciones que se necesiten sobre ellas (segunda capa) y otras clases que encapsulen la conexión al servidor , las consultas SELECT y los CRUDs (tercera capa), pensando que en ésta última sea la única a la que tenga que 'meterle mano' al cambiar de una BD a otra.

En éste punto me enredé y lancé un hilo "Abstracción en BD" y quienes escribieron en ese post hablaron de Persistencia, ORM y enlaces muy enriquecedor que pienso leer, pero como decía, el tiempo me acosa, debo hacer entregas y tengo fecha límite, por lo que tomé un camino intermedio, decidí hacer solo 2 capas, visual y clases de tablas de la BD con sus funciones y métodos que tienen dentro de ellas las SQL usando ADO.

Ahora el asunto es que espero que el método 'BuscarListaClientes' de la clase TCliente me retorne un conjunto o set de datos, p.ej. todos los clientes de una ciudad, y no he logrado conseguirlo, he intentado que el método 'BuscarListaClientes' devuelva un DataSource, un ClientDataSet y nada me funciona. El código que anexo es para llenar un DBGrid con la lista de Agentes Comerciales de la empresa:
Código Delphi [-]
En la forma Fpedidos:
procedure TFPedidos.Button1Click(Sender: TObject);
var
  vdatos: TDataSource;
begin
  vdatos := TDataSource.Create(nil);
  vdatos := oAgenteCial.Leer(FPrincipal.oConexion.GetConexion);
  DBGrid1.DataSource := vdatos;
end;

En la clase:

function TAgenteCial.Leer(AConexion: TADOConnection): TDataSource;
var
  vCommandText: string;
  vDatos: TADOQuery;
begin
  Result := nil;
  vDatos := TADOQuery.Create(nil);
  vDataSource := TDataSource.Create(vDatos);
  vDatos.Connection := AConexion;
  vCommandText := 'SELECT venId, venNombre FROM GEN_Vendedores ';

  vDatos.SQL.Text := vCommandText;
  try
    vDatos.Active := True;
    if not vDatos.Eof then
      Result := vDatos.DataSource;
  finally
    FreeAndNil(vDatos);
  end;
end;

El problema es que no recibo el set de datos, y como decía he intentado con varios componentes y marca exception class $C0000005 access violation at 0x09-...


Alguien ha resuelto algo similar ?
Responder Con Cita
 



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
Sql que no retorna datos me da error:invalid variant type conversion bezaig SQL 6 17-03-2010 08:58:53
Procedimiento que retorna XML mamaro Firebird e Interbase 3 05-03-2008 17:47:02
Capturar Valor que Retorna un SP subzero MS SQL Server 3 18-01-2008 21:38:37
Funcion de Que Retorna una Cadena Abel Garcia Firebird e Interbase 4 23-07-2005 10:30:02
Acceso a método d 1 form dsd Módulo d Datos Muten Varios 2 25-11-2003 13:50:57


La franja horaria es GMT +2. Ahora son las 20:25:57.


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