{ =============================================================================== Copyright (©) 2001. 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: 13-05-2002 Versión actual: 1.0.4 Fecha versión actual: 06-03-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 19-08-2002 Se ha modificado darInstaladores para que la union de el telefono separado por TLF: 27-05-2002 Cambio a un objeto contador (TContadorInstalador) 16-11-2002 p250. Poner el número total de instaladores dados de alta en la inicialización del grid. 06-03-2004 P272. Adaptación a multiempresa. =============================================================================== } unit TablaInstaladores; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, DBTables, DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase, dxDBGrid, dxDBCtrl, dbgrids, StrFunc, Mensajes, IB, Contadores; type TDatosInstalador = class(TPersistent) public Codigo : String; Nombre : String; Telefono1 : String; end; type TdmTablaInstaladores = class(TDataModule) private procedure IniciarSQL; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlGrid : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function InsertarContador : boolean; function IncrementarCodigo : boolean; function ValidarCodigo(Codigo : String) : Boolean; function FormatearCodigo(Codigo : String) : String; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function ExisteInstalador(CodigoInstalador : String) : Boolean; function DarDatosInstalador(var Datos: TDatosInstalador): Boolean; function DarListaInstaladores(Grid : TdxDBGrid; Tabla: TPTabla) : TStringList; procedure InicializarGridInstaladores(var Grid: TdxDBGrid); function darInstaladores : TStrings; end; var dmTablaInstaladores: TdmTablaInstaladores; implementation {$R *.DFM} uses Excepciones, RdxGestorContadores; constructor TdmTablaInstaladores.Create (AOwner : TComponent); begin inherited; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; sqlGrid := TStringList.Create; IniciarSQL; end; destructor TdmTablaInstaladores.Destroy; begin sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; sqlGrid.Free; inherited; end; procedure TdmTablaInstaladores.IniciarSQL; begin with sqlInsertar do begin Add('insert into INSTALADORES '); Add('(CODIGO, NOMBRE, TELEFONO1) '); Add('values (:CODIGO, :NOMBRE, :TELEFONO1)'); end; with sqlModificar do begin Add('update INSTALADORES set '); Add('NOMBRE = :NOMBRE, '); Add('TELEFONO1 = :TELEFONO1 '); Add('where CODIGO = :CODIGO'); end; with sqlEliminar do begin Add('delete from INSTALADORES '); Add('where CODIGO = :CODIGO'); end; with sqlConsultar do begin Add('select * from INSTALADORES '); Add('where CODIGO = :CODIGO'); end; with sqlGrid do begin Add('select CODIGO, NOMBRE, TELEFONO1 '); Add('from INSTALADORES '); Add('order by NOMBRE'); end; end; function TdmTablaInstaladores.DarNuevoCodigo : String; begin Result := GestorContadores.DarNuevoCodigo(contInstaladores); end; function TdmTablaInstaladores.IncrementarCodigo: boolean; begin Result := GestorContadores.IncrementarValor(contInstaladores); end; function TdmTablaInstaladores.validarCodigo(Codigo : String) : Boolean; begin Result := GestorContadores.ValidarCodigo(contInstaladores, Codigo); end; function TdmTablaInstaladores.formatearCodigo(Codigo : String) : String; begin Result := GestorContadores.FormatearCodigo(contInstaladores, Codigo); end; function TdmTablaInstaladores.insertarContador: boolean; begin Result := GestorContadores.InsertarContador(contInstaladores); end; function TdmTablaInstaladores.existeInstalador(CodigoInstalador: String): Boolean; var oSQL : TIBSQL; Codigo : String; begin Result := False; if Length(Trim(CodigoInstalador)) = 0 then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO '); SQL.Add('from INSTALADORES '); SQL.Add('where CODIGO = :CODIGO '); try ParamByName('CODIGO').AsString := CodigoInstalador; Prepare; ExecQuery; Codigo := FieldByName('CODIGO').AsString; Result := (CodigoInstalador = Codigo); finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaInstaladores.DarDatosInstalador(var Datos: TDatosInstalador): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(Datos.Codigo) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select * from INSTALADORES '); SQL.Add('where CODIGO = :CODIGO'); try ParamByName('CODIGO').AsString := Datos.Codigo; Prepare; ExecQuery; if (RecordCount > 0) then begin with Datos do begin Nombre := FieldByName('NOMBRE').AsString; Telefono1 := FieldByName('TELEFONO1').AsString; Result := True; end; end; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaInstaladores.InicializarGridInstaladores(var Grid: TdxDBGrid); var Columna : TdxDBTreeListColumn; begin with Grid do begin DestroyColumns; ShowSummaryFooter := True; {Columna CODIGO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CODIGO'; Columna.Visible := False; {Columna NOMBRE} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre y apellidos'; Columna.Width := tamColDescripcion1; Columna.SummaryFooterType := cstCount; Columna.SummaryFooterFormat := 'Total: 0 instaladores'; {Columna TELEFONO1} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'TELEFONO1'; Columna.Caption := 'Telefono'; Columna.Width := tamColTelefono; end; end; function TdmTablaInstaladores.DarListaInstaladores(Grid : TdxDBGrid; Tabla: TPTabla): TStringList; var i: integer; ListaInstaladores : TStringList; begin ListaInstaladores := Nil; if Grid.SelectedCount = 0 then begin Result := ListaInstaladores; exit end; ListaInstaladores := TStringList.Create; Tabla^.DisableControls; for i:=0 to Grid.SelectedCount-1 do begin Tabla^.GotoBookmark(Pointer(Grid.SelectedRows[i])); ListaInstaladores.Add(Tabla^.FieldByName('CODIGO').AsString); end; Tabla^.EnableControls; Result := ListaInstaladores; end; function TdmTablaInstaladores.darInstaladores: 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 NOMBRE || '' TLF: '' || TELEFONO1 from INSTALADORES order by NOMBRE'); try Prepare; ExecQuery; Lista.Append(''); while not EOF do begin Lista.Append(Fields[0].AsString); Next; end; result := Lista; finally Close; Transaction := NIL; Free; end; end; end; end.