Muchas gracias por todas las respuestas.
Quiero comentarles que defino en archivo .pas las clases que defino, por ejemplo: Modelo_Cliente.pas. Aquí defino las clase TCliente. en otro archivo .pas llamado Cx_Cliente, defino funciones que me devuelvan valores consultando la base de datos, por ejemplo:
Código Delphi
[-]
class function TCx_Cliente.GetCliente(Id: integer): TCliente;
var iCliente:TCliente;
MiQuery: TAdoQuery;
begin
iCliente := TCliente.Create;
MiQuery := TAdoQuery.Create(nil);
MiQuery.SQL.Clear;
MiQuery.Connection := Datos.DatosDM.CabeceraADOQuery.Connection;
MiQuery.SQL.Clear;
MiQuery.SQL.Add('select * from Cliente where Id_Cliente='+IntToStr(id));
MiQuery.Active := true;
if MIQuery.RecordCount>0 then
begin
MiQuery.First;
iCliente.iId_Cliente := Id;
iCliente.iRazonSocial := MiQuery.FieldByName('RazonSocial').AsString;
iCliente.iRazonSocialCorta := MiQuery.FieldByName('RazonSocialCorta').AsString;
....
iCliente.iFormaPago := MiQuery.FieldByName('FormaPago').AsString;
iCliente.iTituloDoc1 := MiQuery.FieldByName('TituloDoc1').AsString;
iCliente.iTituloDoc2 := MiQuery.FieldByName('TituloDoc2').AsString;
iCliente.iTituloDoc3 := MiQuery.FieldByName('TituloDoc3').AsString;
iCliente.iId_Usuario := MiQuery.FieldByName('Id_Usuario').AsInteger;
.....
end;
MiQuery.Free;
result := iCliente;
iCliente := TCliente.Create;
iCliente.Free;
end;
tambien tengo procedimientos almacenados de sql que lo invoco de esta manera:
Código Delphi
[-]
class function TCx_Cliente.ClienteTerceroInsertar(Tercero: TClienteTercero): String;
var MiProcedimiento:TADOStoredProc;
MyClass:TComponent;
MiError:String;
begin
MiProcedimiento := TADOStoredProc.Create(nil);
MiProcedimiento.Connection := DatosDM.PrincipaADOConnection;
MyClass := TComponent.Create(nil);
MiError := '';
try
with MiProcedimiento do
begin
Close;
Parameters.Clear;
ProcedureName := 'ClienteTerceroInsertar';
Parameters.CreateParameter('@Id_Cliente',ftInteger,pdInput,0,0);
Parameters.CreateParameter('@Id_ParametroTipoTercero',ftInteger,pdInput,0,0);
Parameters.CreateParameter('@RazonSocial',ftString,pdInput,100,0);
Parameters.CreateParameter('@RazonSocialCorta',ftString,pdInput,50,0);
Parameters.CreateParameter('@RUC',ftString,pdInput,20,0);
Parameters.CreateParameter('@Direccion',ftString,pdInput,100,0);
Parameters.CreateParameter('@DNI',ftString,pdInput,20,0);
Parameters.CreateParameter('@Brevete',ftString,pdInput,20,0);
Parameters.CreateParameter('@Marca',ftString,pdInput,20,0);
Parameters.CreateParameter('@Placa',ftString,pdInput,10,0);
Parameters.CreateParameter('@CertificadoVehicular',ftString,pdInput,20,0);
Parameters.CreateParameter('@Error',ftString,pdOutPut,100,0);
Parameters.ParamByName('@Id_Cliente').Value := Tercero.iId_Cliente;
Parameters.ParamByName('@Id_ParametroTipoTercero').Value := Tercero.iId_ParametroTipoTercero;
Parameters.ParamByName('@RazonSocial').Value := Tercero.iRazonSocial;
Parameters.ParamByName('@RazonSocialCorta').Value := Tercero.iRazonSocialCorta;
Parameters.ParamByName('@RUC').Value := Tercero.iRUC;
Parameters.ParamByName('@Direccion').Value := Tercero.iDireccion;
Parameters.ParamByName('@DNI').Value := Tercero.iDNI;
Parameters.ParamByName('@Brevete').Value := Tercero.iBrevete;
Parameters.ParamByName('@Marca').Value := Tercero.iMarca;
Parameters.ParamByName('@Placa').Value := Tercero.iPlaca;
Parameters.ParamByName('@CertificadoVehicular').Value := Tercero.iCertificadoVehicular;
Parameters.ParamByName('@Error').Value := '';
ExecProc;
end;
MiError := MiProcedimiento.Parameters.ParamByName('@Error').Value;
finally
MyClass.Free;
end;
result := MiError;
MiProcedimiento.Free;
end;
este procedimiento lo repito para cualquier tabla por ejemplo para las ventas tengo una clase TVenta guardado en un archivo Modelo_Venta, ademas de los procedimientos y funciones en un archivo Cx_Venta donde me conecto a la base de datos y hago consultas y modificaciones a la tabla venta.
Lo que quiero hacer es lo mismo pero un solo archivo donde pueda invocar los valores de cualquier tabla, es decir si es Cliente, Venta, etc, pero usando los objetos pertinentes. entonces hago un GetObject(Id: integer; TableName: String): TObject; y me devuelve un objecto de tipo TObject.
quiero volver agradecer por su tiempo y ojala me puedan ayudar a realizar esta operación, que me ahorraría muchas lineas de código al hacer cualquier proyecto.
Saludos,
Javier Villa.