Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usa el código que te he puesto antes, el tuyo no está bien.

Código Delphi [-]
DataModule1.UniQueryConsultaDOC.Open;
DataModule1.UniQueryConsultaDOC.First;   // > sobra esto
for i:= 0 to DataModule1.UniQueryConsultaDOC.RecordCount-1 do    //  Esto dependiendo del tipo de dataset no te devuelve los registros que hay en el select, sino 1 !!!!!!!!!!
Repito, usar el código que te hemos indicado.
Responder Con Cita
  #2  
Antiguo 06-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Usa el código que te he puesto antes, el tuyo no está bien.

Código Delphi [-]
DataModule1.UniQueryConsultaDOC.Open;
DataModule1.UniQueryConsultaDOC.First;   // > sobra esto
for i:= 0 to DataModule1.UniQueryConsultaDOC.RecordCount-1 do    //  Esto dependiendo del tipo de dataset no te devuelve los registros que hay en el select, sino 1 !!!!!!!!!!
Repito, usar el código que te hemos indicado.
es el mismo codigo que estoy usando incluso le estoy colocando los valore manueale
Código Delphi [-]
procedure TFormReportes.StringGrid1CellClick(const Column: TColumn;
  const Row: Integer);
 var
 Filtro :string;
 i:integer;
 begin
      //DataModule1.UniQueryFichaDoc.Filtered := False;
      //Filtro := 'INSTRUT = '''+DataModule1.InstRut+'''and REGFICHA = '''+label1.Text+'''';
      //DataModule1.UniQueryFichaDoc.Filter := Filtro;
      //DataModule1.UniQueryFichaDoc.Filtered := True;
      //DataModule1.UniQueryFichaDoc.Active := true;
      //
       DataModule1.UniQueryConsultaDOC.Close;
       DataModule1.UniQueryConsultaDOC.SQL.Text := 'select REGPAC, TIPODOCUMENTO,REGFICHA, INSTRUT, FICPAC from fichadoc where instrut = :INSTRUT and REGFICHA = :REGFICHA and REGPAC = :REGPAC ';
       DataModule1.UniQueryConsultaDOC.ParamByName('INSTRUT').AsString := datamodule1.InstRut;
       DataModule1.UniQueryConsultaDOC.ParamByName('REGFICHA').AsString := '5';
       DataModule1.UniQueryConsultaDOC.ParamByName('REGPAC').AsString := '2';
      DataModule1.UniQueryConsultaDOC.Open;
//DataModule1.UniQueryConsultaDOC.First;   // > sobra esto
for i:= 0 to DataModule1.UniQueryConsultaDOC.RecordCount-1 do
  begin
    if DataModule1.UniQueryConsultaDOC.FieldByName('TIPODOCUMENTO').value = 'TRATAMIENTO' then
    begin
      TMSFMXToolBarButton5.Enabled := true;
      TMSFMXToolBarButton5.Opacity := 1;
    end
    else
    begin
      TMSFMXToolBarButton5.Enabled := False;
      TMSFMXToolBarButton5.Opacity := 0.3;
    end;

    if DataModule1.UniQueryConsultaDOC.FieldByName('TIPODOCUMENTO').value = 'EXAMEN' then
    begin
      TMSFMXToolBarButton6.Enabled := true;
      TMSFMXToolBarButton6.Opacity := 1;
    end
    else
    begin
      TMSFMXToolBarButton6.Enabled := False;
      TMSFMXToolBarButton6.Opacity := 0.3;
    end;

    if DataModule1.UniQueryConsultaDOC.FieldByName('TIPODOCUMENTO').value = 'LABORATORIO' then
    begin
      TMSFMXToolBarButton13.Enabled := true;
      TMSFMXToolBarButton13.Opacity := 1;
    end
    else
    begin
      TMSFMXToolBarButton13.Enabled := False;
      TMSFMXToolBarButton13.Opacity := 0.3;
    end;

    if DataModule1.UniQueryConsultaDOC.FieldByName('TIPODOCUMENTO').value = 'FICHA MEDICA' then
    begin
      TMSFMXToolBarButton17.Enabled := true;
      TMSFMXToolBarButton17.Opacity := 1;
    end
    else
    begin
      TMSFMXToolBarButton17.Enabled := False;
      TMSFMXToolBarButton17.Opacity := 0.3;
    end;
   DataModule1.UniQueryConsultaDOC.Next;
  end;
end;
Archivos Adjuntos
Tipo de Archivo: rar FICHA.rar (141,8 KB, 0 visitas)
Responder Con Cita
  #3  
Antiguo 06-04-2023
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Intenta con esto:

Código Delphi [-]
      :::::
      DataModule1.UniQueryConsultaDOC.Open;
      // Agrega estas dos líneas ***********************
      DataModule1.UniQueryConsultaDOC.Last; 
      DataModule1.UniQueryConsultaDOC.First; 
     // *******************************************
     for i:= 0 to DataModule1.UniQueryConsultaDOC.RecordCount-1 do
     begin
        ::::::

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 06-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
He puesto:
Código Delphi [-]
DataModule1.UniQueryConsultaDOC.open;    
while not DataModule1.UniQueryConsultaDOC.eof do
Responder Con Cita
  #5  
Antiguo 06-04-2023
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
He puesto:
Código Delphi [-]
DataModule1.UniQueryConsultaDOC.open;    
while not DataModule1.UniQueryConsultaDOC.eof do
Así es, esa es la mejor forma de evitarse el problema, pero si insiste en usar el FOR, pues....

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 06-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por egostar Ver Mensaje
Así es, esa es la mejor forma de evitarse el problema, pero si insiste en usar el FOR, pues....
Saludos
Claro, con el for debe usar lo que tú has puesto para que devuelva correctamente el número de registros
Responder Con Cita
  #7  
Antiguo 06-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Intenta con esto:

Código Delphi [-]
      :::::
      DataModule1.UniQueryConsultaDOC.Open;
      // Agrega estas dos líneas ***********************
      DataModule1.UniQueryConsultaDOC.Last; 
      DataModule1.UniQueryConsultaDOC.First; 
     // *******************************************
     for i:= 0 to DataModule1.UniQueryConsultaDOC.RecordCount-1 do
     begin
        ::::::

Saludos
nada amigo ni con esta dos lineas funciona ahora bien habra otra forma de hacer esta consulta y obtener los resultado que si es verdadero se habilite el boton?
Responder Con Cita
  #8  
Antiguo 06-04-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 914
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado colega, le propongo esta alternativa
Código Delphi [-]
   
   {Esta función se encarga de habilitar el boton y la opacidad}
   procedure EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
   begin
        boton.Enable:=AEnable;
    if Boton.Enable then
       Boton.Opacity := 1
    else
       Boton.Opacity := 0.3;
   end;
begin 
  DataModule1.UniQueryConsultaDOC.Close; 
  DataModule1.UniQueryConsultaDOC.sql.Clear; 
  DataModule1.UniQueryConsultaDOC.sql.Add('select REGPAC, TIPODOCUMENTO,REGFICHA, INSTRUT, FICPAC from fichadoc'); 
  DataModule1.UniQueryConsultaDOC.SQL.Add('where instrut = :INSTRUT and REGFICHA = :REGFICHA'); 
  DataModule1.UniQueryConsultaDOC.ParamByName('INSTRUT').AsString := datamodule1.InstRut; 
  DataModule1.UniQueryConsultaDOC.ParamByName('REGFICHA').AsString := Label1.text; 
  DataModule1.UniQueryConsultaDOC.open; 
  
  while not DataModule1.UniQueryConsultaDOC.eof do 
  begin
     EnableButton(TMSFMXToolBarButton5, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'TRATAMIENTO') );
               
     EnableButton(TMSFMXToolBarButton6, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'EXAMEN'));
               
     EnableButton(TMSFMXToolBarButton13, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'LABORATORIO'));
     
     EnableButton(TMSFMXToolBarButton17, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'FICHA MEDICA'));
 
        DataModule1.UniQueryConsultaDOC.Next; 
   end;
end;

Saludos y buena fortuna
Responder Con Cita
  #9  
Antiguo 07-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje
Estimado colega, le propongo esta alternativa
Código Delphi [-]
   
   {Esta función se encarga de habilitar el boton y la opacidad}
   procedure EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
   begin
        boton.Enable:=AEnable;
    if Boton.Enable then
       Boton.Opacity := 1
    else
       Boton.Opacity := 0.3;
   end;
begin 
  DataModule1.UniQueryConsultaDOC.Close; 
  DataModule1.UniQueryConsultaDOC.sql.Clear; 
  DataModule1.UniQueryConsultaDOC.sql.Add('select REGPAC, TIPODOCUMENTO,REGFICHA, INSTRUT, FICPAC from fichadoc'); 
  DataModule1.UniQueryConsultaDOC.SQL.Add('where instrut = :INSTRUT and REGFICHA = :REGFICHA'); 
  DataModule1.UniQueryConsultaDOC.ParamByName('INSTRUT').AsString := datamodule1.InstRut; 
  DataModule1.UniQueryConsultaDOC.ParamByName('REGFICHA').AsString := Label1.text; 
  DataModule1.UniQueryConsultaDOC.open; 
  
  while not DataModule1.UniQueryConsultaDOC.eof do 
  begin
     EnableButton(TMSFMXToolBarButton5, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'TRATAMIENTO') );
               
     EnableButton(TMSFMXToolBarButton6, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'EXAMEN'));
               
     EnableButton(TMSFMXToolBarButton13, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'LABORATORIO'));
     
     EnableButton(TMSFMXToolBarButton17, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'FICHA MEDICA'));
 
        DataModule1.UniQueryConsultaDOC.Next; 
   end;
end;

Saludos y buena fortuna
gracias amigo pero donde coloco esta funcion ya que puedo ver que debo crear un proceso para eso o lo puedo colocar en el evento onClickCeld?
Responder Con Cita
  #10  
Antiguo 07-04-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 914
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Veamos...
Supongamos que tu formulario es TForm1.

Código Delphi [-]
 
type
  TForm1 = class(TForm)
  ....
  private
  public
    ...
    procedure xxxx;
    procedure EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
 End;

{Esta función se encarga de habilitar el boton y la opacidad}
//Declarara en la sección public...

procedure TForm1.EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
begin
        boton.Enable:=AEnable;
    if Boton.Enable then
       Boton.Opacity := 1
    else
       Boton.Opacity := 0.3;
end;

procedure TForm1.xxxx
begin 
  DataModule1.UniQueryConsultaDOC.Close; 
  DataModule1.UniQueryConsultaDOC.sql.Clear; 
  DataModule1.UniQueryConsultaDOC.sql.Add('select REGPAC, TIPODOCUMENTO,REGFICHA, INSTRUT, FICPAC from fichadoc'); 
  DataModule1.UniQueryConsultaDOC.SQL.Add('where instrut = :INSTRUT and REGFICHA = :REGFICHA'); 
  DataModule1.UniQueryConsultaDOC.ParamByName('INSTRUT').AsString := datamodule1.InstRut; 
  DataModule1.UniQueryConsultaDOC.ParamByName('REGFICHA').AsString := Label1.text; 
  DataModule1.UniQueryConsultaDOC.open; 
  
  while not DataModule1.UniQueryConsultaDOC.eof do 
  begin
     EnableButton(TMSFMXToolBarButton5, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'TRATAMIENTO') );
               
     EnableButton(TMSFMXToolBarButton6, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'EXAMEN'));
               
     EnableButton(TMSFMXToolBarButton13, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'LABORATORIO'));
     
     EnableButton(TMSFMXToolBarButton17, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'FICHA MEDICA'));
 
        DataModule1.UniQueryConsultaDOC.Next; 
   end;
end;
Espero que ahora este claro.

Saludos cordiales
Responder Con Cita
  #11  
Antiguo 07-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje
Veamos...
Supongamos que tu formulario es TForm1.

Código Delphi [-]
 
type
  TForm1 = class(TForm)
  ....
  private
  public
    ...
    procedure xxxx;
    procedure EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
 End;

{Esta función se encarga de habilitar el boton y la opacidad}
//Declarara en la sección public...

procedure TForm1.EnableButton(boton:TMSFMXToolBarButton; AEnable:Boolean);
begin
        boton.Enable:=AEnable;
    if Boton.Enable then
       Boton.Opacity := 1
    else
       Boton.Opacity := 0.3;
end;

procedure TForm1.xxxx
begin 
  DataModule1.UniQueryConsultaDOC.Close; 
  DataModule1.UniQueryConsultaDOC.sql.Clear; 
  DataModule1.UniQueryConsultaDOC.sql.Add('select REGPAC, TIPODOCUMENTO,REGFICHA, INSTRUT, FICPAC from fichadoc'); 
  DataModule1.UniQueryConsultaDOC.SQL.Add('where instrut = :INSTRUT and REGFICHA = :REGFICHA'); 
  DataModule1.UniQueryConsultaDOC.ParamByName('INSTRUT').AsString := datamodule1.InstRut; 
  DataModule1.UniQueryConsultaDOC.ParamByName('REGFICHA').AsString := Label1.text; 
  DataModule1.UniQueryConsultaDOC.open; 
  
  while not DataModule1.UniQueryConsultaDOC.eof do 
  begin
     EnableButton(TMSFMXToolBarButton5, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'TRATAMIENTO') );
               
     EnableButton(TMSFMXToolBarButton6, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'EXAMEN'));
               
     EnableButton(TMSFMXToolBarButton13, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'LABORATORIO'));
     
     EnableButton(TMSFMXToolBarButton17, SameText(DataModule1.UniQueryConsultaDOCTIPODOCUMENTO.AsString,'FICHA MEDICA'));
 
        DataModule1.UniQueryConsultaDOC.Next; 
   end;
end;
Espero que ahora este claro.

Saludos cordiales
Gracias amigo funciona perfecto la funcion de habilitar los bottones pero aun sigue sucediendo igual que solo me muestra un resultado, es decir solo se habilita un solo botton.
Verifique tabla
Verifique las condiciones
hice la consulta en labla en sql
coloque en el where los valores manueales
incluso coloque un
Código Delphi [-]
ShowMessage(DataModule1.UniQueryConsultaDOC.RecordCount.ToString);
para verificar que en efecto encontrara la misma cantidad de registro y perfectamente conicide.
Tambien le coloque un
Código Delphi [-]
DataModule1.UniQueryConsultaDOC.First;
para obligarlo a irse al primer registro y tampoco con eso me funciona
Al parecer no está respetando el NEXT, es decir haga como haga la consulta solo se habilita un solo boton.
lo hice con while tambien lo hice con el for y nada
Responder Con Cita
Respuesta



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
Mostrar en un DBGRID Relacion Muchos Muchos dmassive SQL 6 12-02-2009 18:55:19
Guardar muchos muchos Tedit el-mono OOP 4 30-09-2008 06:40:33
Problemas con generadores en relacion Muchos-a-Muchos Hagen Firebird e Interbase 3 30-10-2006 16:47:51
Consulta en SQL con muchos parámetros Aprendiendo SQL 5 05-04-2005 22:30:13
Consulta SQl, relacion 1 a muchos Walter SQL 3 15-07-2003 03:13:28


La franja horaria es GMT +2. Ahora son las 11:10:38.


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