{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 07-12-2002 Versión actual: 1.0.1 Fecha versión actual: 18-06-2003 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 18-06-2003 La descripción de la propiedad no se guarda en la tabla en mayúsculas si no tal y como lo ha escrito el usuario. =============================================================================== } unit TablaValores; interface uses //Generales SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares cxImage, //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos; type //////////////////////////////////////////////////////////////////////////////// //TDatosValor //////////////////////////////////////////////////////////////////////////////// TDatosValor = class(TObjeto) protected procedure AssignTo(Dest: TPersistent); override; public Propiedad : String; Valor : String; end; //////////////////////////////////////////////////////////////////////////////// //TdmTablaValores //////////////////////////////////////////////////////////////////////////////// TdmTablaValores = class(TDataModule) private procedure IniciarSQL; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlGrid : TStrings; sqlListaValores : TStrings; constructor Create (AOwner : TComponent); override; destructor Destroy; override; procedure InicializarGridValores(var vGrid: TcxGridDBTableView); function darContadorValor: Integer; procedure borrarValoresPropiedad(Codigo : Integer); function darPropiedades: TStrings; overload; procedure darPropiedades(var PropiedadCodigo, CodigoPropiedad: TStringList); overload; end; var dmTablaValores : TdmTablaValores; implementation {$R *.DFM} //////////////////////////////////////////////////////////////////////////////// //TABLAVALORES //////////////////////////////////////////////////////////////////////////////// constructor TdmTablaValores.Create (AOwner : TComponent); begin inherited; sqlGrid := TStringList.Create; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; sqlListaValores := TStringList. Create; IniciarSQL; end; destructor TdmTablaValores.Destroy; begin sqlGrid.Free; sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; sqlListaValores.Free; inherited; end; procedure TdmTablaValores.IniciarSQL; begin with sqlInsertar do begin Add('insert into VALORES (CODIGO, CODIGOPROPIEDAD, DESCRIPCION, IMAGEN) '); Add('values (:CODIGO, :CODIGOPROPIEDAD, :DESCRIPCION, :IMAGEN)'); end; with sqlModificar do begin Add('update VALORES set '); Add('DESCRIPCION = :DESCRIPCION, '); Add('IMAGEN = :IMAGEN, '); Add('CODIGOPROPIEDAD = :CODIGOPROPIEDAD '); Add('where CODIGO = :CODIGO '); end; with sqlEliminar do begin Add('delete from VALORES '); Add('where CODIGO = :CODIGO '); end; with sqlConsultar do begin Add('select CODIGO, CODIGOPROPIEDAD, DESCRIPCION, IMAGEN '); Add('from VALORES '); Add('where CODIGOPROPIEDAD = :CODIGOPROPIEDAD '); end; with sqlListaValores do begin Add('select * from VALORES '); Add('where CODIGOPROPIEDAD = :CODIGOPROPIEDAD '); Add('order by DESCRIPCION'); end; end; procedure TdmTablaValores.InicializarGridValores(var vGrid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with vGrid do begin ClearItems; OptionsView.DataRowHeight := CTE_ALT_IMG; OptionsView.Footer := True; {Columna CODIGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGO'; Columna.Caption := 'Código del Valor'; Columna.Options.Filtering := False; Columna.Visible := False; {Columna CODIGOPROPIEDAD} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOPROPIEDAD'; Columna.Caption := 'Código de la propiedad relacionada'; Columna.Options.Filtering := False; Columna.Visible := False; {Columna IMAGEN} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMAGEN'; Columna.Caption := 'Imagen'; Columna.Width := CTE_ALT_IMG; Columna.Visible := True; Columna.PropertiesClassName := 'TcxImageProperties'; with TcxImageProperties(Columna.Properties) do begin GraphicClassName := 'TJPEGImage'; Stretch := True; PopupMenuLayout.MenuItems := []; end; {Columna DESCRIPCION} Columna := CreateColumn; Columna.DataBinding.FieldName := 'DESCRIPCION'; Columna.Caption := 'Nombres de propiedad'; Columna.Options.Filtering := False; Columna.SortOrder := soAscending; Columna.Width := 300; Columna.Visible := True; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := 'Total: 0 nombres de valor'; Kind := skCount; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; { object cvCarsPicture: TcxGridDBCardViewRow PropertiesClassName = 'TcxImageProperties' Properties.GraphicClassName = 'TJPEGImage' Properties.Stretch = True Options.ShowCaption = False DataBinding.FieldName = 'Picture' end } end; end; function TdmTablaValores.darPropiedades: TStrings; var oSQL : TIBSQL; Lista : TStringList; begin oSQL := TIBSQL.Create(Self); Lista := TStringList.Create; with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select DESCRIPCION from PROPIEDADES order by DESCRIPCION'); try Prepare; ExecQuery; while not EOF do begin Lista.Append(Fields[0].AsString); Next; end; Result := Lista; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaValores.darContadorValor: Integer; var oSQL : TIBSQL; begin oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select MAX(CODIGO) from VALORES'); try Prepare; ExecQuery; Result := (Fields[0].AsInteger + 1); finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaValores.darPropiedades(var PropiedadCodigo, CodigoPropiedad: TStringList); var oSQL : TIBSQL; begin if (PropiedadCodigo = nil) or (CodigoPropiedad = nil) then Exit; //Limpiamos los valores que tubieran antes (por si acaso) PropiedadCodigo.Clear; CodigoPropiedad.Clear; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO, DESCRIPCION from PROPIEDADES '); SQL.Add('order by CODIGO'); try Prepare; ExecQuery; while not EOF do begin PropiedadCodigo.Values[FieldByName('DESCRIPCION').AsString] := FieldByName('CODIGO').AsString; CodigoPropiedad.Values[FieldByName('CODIGO').AsString] := FieldByName('DESCRIPCION').AsString; Next; end; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaValores.borrarValoresPropiedad(Codigo : Integer); var oSQL : TIBSQL; begin oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('delete from VALORES '); SQL.Add('where CODIGOPROPIEDAD = :CODIGOPROPIEDAD'); try ParamByName('CODIGOPROPIEDAD').AsInteger := Codigo; Prepare; ExecQuery; finally Close; Transaction := NIL; Free; end; end; end; //////////////////////////////////////////////////////////////////////////////// //TDatosValor //////////////////////////////////////////////////////////////////////////////// procedure TDatosValor.AssignTo(Dest: TPersistent); begin if not (Dest is TDatosValor) then AssignError(Dest); (Dest as TDatosValor).Propiedad := Propiedad; (Dest as TDatosValor).Valor := Valor; end; end.