Siguiendo con el tutorial, lo siguiente es
Código Delphi
[-]procedure TFXPAF.SBDireccionesClick(Sender: TObject);
begin
if DBNCodigoCliente.Text<>'' then
begin
VarSTabla:='DIRECCIONES'; VarSNomMod:='XPAFD'; FbusquedaFP.Show;
end else ShowMessage('Debe seleccionar primero el código del cliente');
end;
y estos son los cambios más significativos hechos en UFbusquedaFP
Código Delphi
[-]
begin if comboCampos.Text<>'' then
begin
if VarSNomMod='XPAFD' then begin
if CheckBox1.Checked then ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+
') AND (UPPER('+comboCampos.text+ ') LIKE UPPER('+QuotedStr('%'+Edbusqueda.Text+'%')+'))')
else ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+
') AND (UPPER('+comboCampos.text+') WHERE UPPER('+QuotedStr(Edbusqueda.Text)+'))');
end else
begin
if CheckBox1.Checked then ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE UPPER('+comboCampos.text+') LIKE UPPER('+QuotedStr('%'+Edbusqueda.Text+'%')+')')
else ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE UPPER('+comboCampos.text+') WHERE UPPER('+QuotedStr(Edbusqueda.Text)+')');
end;
end else ShowMessage('Debe seleccionar el campo por el que buscar');
end;
procedure TFbusquedaFP.FormActivate(Sender: TObject);
begin if Edbusqueda.Text='' then
begin
if (VarSTabla='DIRECCIONES') AND (VarSNomMod='XPAFD') then
begin
if VarSTabla='DIRECCIONES' then Caption:='Búsquedas en direcciones'; ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+ ')');
end else ActQuery(IBQBusqueda,'Select * From '+VarSTabla);
end;
if IBQBusqueda.IsEmpty then
begin
ShowMessage('No hay datos para buscar o mostrar');
SB_SalirClick(Sender);
end else
begin
if comboCampos.Items.Count=0 then DataSource1.DataSet.GetFieldNames(comboCampos.items);
...
if VarSTabla='DIRECCIONES' then
begin
CarGarGrid(0,'ID',50,'ID');
CarGarGrid(1,'CODIGO',130,'Código');
CarGarGrid(2,'DIRECCION',520,'Dirección');
CarGarGrid(3,'CP',65,'Dirección');
CarGarGrid(4,'POBLACION',520,'Población');
CarGarGrid(5,'PROVINCIA',520,'Provincía');
CarGarGrid(6,'PAIS',520,'País');
end;
end;
end;
procedure TFbusquedaFP.FormClose(Sender: TObject; var Action: TCloseAction);
begin
...
if (VarSNomMod='XPAFD') and (FXPAF.DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then
begin
DM.IBDDocumentosIDDIRECCIONES.AsInteger:=IBQBusqueda.FieldByName('ID').AsInteger; FXPAF.Show;
end;
Button3Click(Sender);
QuerryOC(IBQBusqueda);
comboCampos.Items.Clear;
end;
procedure TFbusquedaFP.FormShow(Sender: TObject);
begin
...
if (VarSTabla='DIRECCIONES') AND (VarSNomMod='XPAFD') then
begin
if VarSTabla='DIRECCIONES' then Caption:='Búsquedas en direcciones'; ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+ ')');
ShowMessage(IBQBusqueda.SQL.Text);
end;
end;
Como podéis ver al tratarse de una tabla auxiliar que va vinculada a los módulos y el código, el tratamiento es un poco diferente.