| Exibir mensagem anterior :: Exibir próxima mensagem | 
	
	
		| Autor | Mensagem | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Sáb Jun 20, 2020 7:48 pm    Assunto: Como fazer o Label receber ultimo registro? |   |  
				| 
 |  
				| Bom noite amigos! 
 Estou tentando montar um painel com informações do banco de dados com o último paciente que ocupou o leito 001 da tabela pacientes, e depois fazer o label do painel receber o nome do paciente referente ao leito. Desde já agradeço quem puder ajudar.
 
 Segue o código.
 
 
 procedure TForm1.BitBtn1Click(Sender: TObject);
 begin
 with ZQuery1 do
 Begin
 Close;
 sql.Clear;
 sql.Add('Select * From Tab_Pacientes Where Leito_Pac order by Data_Pac desc, Hora_Pac desc');
 open;
 if ZQuery1.FieldByName('Leito_Pac').AsString='001' then
 Label1.Caption:=ZQuery1.FieldByName('Nome_Pac').AsString;
 
 if ZQuery1.FieldByName('Leito_Pac').AsString='002' then
 Label2.Caption:=ZQuery1.FieldByName('Nome_Pac').AsString;
 end;
 
 No entanto somente o label1 está recebendo o valor.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| imex Moderador
 
  
 
 Registrado: Sexta-Feira, 7 de Janeiro de 2011
 Mensagens: 11666
 
 
 | 
			
				|  Enviada: Ter Jun 23, 2020 2:49 pm    Assunto: |   |  
				| 
 |  
				| Boa tarde, 
 Você quer exibir o último paciente de cada leito?
 Qual versão do MySQL você está utilizando?
 
 Editado pela última vez por imex em Dom Out 01, 2023 5:41 pm, num total de 2 vezes
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Ter Jun 23, 2020 3:51 pm    Assunto: |   |  
				| 
 |  
				| Boa tarde! É isso mesmo exibir o ultimo de cada leito.
 
 Estou usando a versão 8 do MYSQL.
 
 [root@server ~]# mysql -V
 mysql  Ver 8.0.17 for Linux on x86_64 (Source distribution)
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| imex Moderador
 
  
 
 Registrado: Sexta-Feira, 7 de Janeiro de 2011
 Mensagens: 11666
 
 
 | 
			
				|  Enviada: Ter Jun 23, 2020 4:37 pm    Assunto: |   |  
				| 
 |  
				| Segue uma sugestão para testes: 
 
  	  | Código: |  	  | with CTE_RN as (
 Select *, row_number() over(partition by Leito_Pac order by Data_Pac desc, Hora_Pac desc) as RN
 From Tab_Pacientes
 )
 
 select * from CTE_RN where RN = 1
 | 
 
 Espero que ajude
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Ter Jun 23, 2020 9:37 pm    Assunto: Resolvido! |   |  
				| 
 |  
				| Boa noite imex! 
 Olha você está de parabéns, o código funcionou perfeitamente, agora vou poder gerar o relatório das últimas pacientes que estão ocupando os leitos.
 
 with ZQuery1 do
 Begin
 Close;
 sql.Clear;
 sql.Add ('with CTE_RN as (Select *, row_number() over(partition by Leito_Pac order by Data_Pac desc, Hora_Pac desc) as RN From Tab_Pacientes) select * from CTE_RN where RN = 1');
 open;
 if ZQuery1.FieldByName('Leito_Pac').AsString='001' then
 Label1.Caption:=ZQuery1.FieldByName('Nome_Pac').AsString;
 
 Muito Obrigado!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Qua Jun 24, 2020 9:14 am    Assunto: Como este código ficaria na versão 5.5 do MYSQL? |   |  
				| 
 |  
				| Bom dia! Como este código ficaria na versão 5.5 do MYSQL?
 
 
 
  	  | Código: |  	  | with ZQuery1 do
 Begin
 Close;
 sql.Clear;
 sql.Add ('with CTE_RN as (Select *, row_number() over(partition by Leito_Pac order by Data_Pac desc, Hora_Pac desc) as RN From Tab_Pacientes) select * from CTE_RN where RN = 1');
 open;
 if ZQuery1.FieldByName('Leito_Pac').AsString='001' then
 Label1.Caption:=ZQuery1.FieldByName('Nome_Pac').AsString;
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| imex Moderador
 
  
 
 Registrado: Sexta-Feira, 7 de Janeiro de 2011
 Mensagens: 11666
 
 
 | 
			
				|  Enviada: Qua Jun 24, 2020 11:09 am    Assunto: |   |  
				| 
 |  
				| Bom dia, 
 Experimente fazer uns testes dessa forma para ver se funciona:
 
 
  	  | Código: |  	  | Select p.* From Tab_Pacientes as p
 inner join
 (
 select Leito_Pac, max(timestamp(Data_Pac, Hora_Pac)) as DataHora
 from Tab_Pacientes
 group by Leito_Pac
 ) as m on m.Leito_Pac = p.Leito_Pac and m.DataHora = timestamp(p.Data_Pac, p.Hora_Pac)
 | 
 
 Espero que ajude
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Qua Jun 24, 2020 5:21 pm    Assunto: |   |  
				| 
 |  
				| Olha funcionou! ficou muito bom, só que agora está intermitente uma hora fica na sequência outra hora sai, os leitos tipo string estão aparecendo intercalados, já tentei usar o ORDER BY ASC mas não deu certo. 
 
  	  | Código: |  	  | DM.ZConsultaPac.Close;
 DM.ZConsultaPac.sql.Clear;
 If rgpOpcoes.ItemIndex = 0 Then
 DM.ZConsultaPac.sql.Add ('Select p.* From Tab_Pacientes');
 DM.ZConsultaPac.sql.Add ('as p inner join (select Leito_Pac, max(timestamp(Data_Pac, Hora_Pac))');
 DM.ZConsultaPac.sql.Add ('as DataHora  from Tab_Pacientes group by Leito_Pac order by Leito_Pac Desc) as m on m.Leito_Pac = p.Leito_Pac and m.DataHora = timestamp(p.Data_Pac, p.Hora_Pac)');
 DM.ZConsultaPac.Open;
 edtPesquisa.Text := '';
 edtPesquisa.SetFocus;
 | 
 
 
 
  	  | Código: |  	  | +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 | Codigo_Pac | Nome_Pac | Identidade_Pac | CPF_Pac | Tel_Pac | Cel_Pac | Leito_Pac | Setor_Pac               | Sit_Pac | OBS_Pac | Data_Pac   | Hora_pac |
 +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 |          5 | SUANE    | 56356          | NULL    | NULL    | NULL    | 001   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:15:49 |
 |          6 | RAIMUNDA | 45245          | NULL    | NULL    | NULL    | 002   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:16:24 |
 |          7 | DEBORA   | 452435         | NULL    | NULL    | NULL    | 003   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:16:45 |
 |          8 | MAGDA    | 657456         | NULL    | NULL    | NULL    | PAT1   | CCO-PATOLËGICO 3║ ANDAR | NULL    | NULL    | 2020-06-24 | 15:33:10 |
 |          9 | VANESSA  | 64356345       | NULL    | NULL    | NULL    | 004   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:33:26 |
 |         10 | JUCIMARA | 56354          | NULL    | NULL    | NULL    | PAT2   | CCO-PATOLËGICO 3║ ANDAR | NULL    | NULL    | 2020-06-24 | 16:00:33 |
 |         11 | MUNDINHA | 3452345        | NULL    | NULL    | NULL    | 005   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 16:00:49 |
 +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 7 rows in set (0.00 sec)
 
 | 
 
 
  	  | Código: |  	  | +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 | Codigo_Pac | Nome_Pac | Identidade_Pac | CPF_Pac | Tel_Pac | Cel_Pac | Leito_Pac | Setor_Pac               | Sit_Pac | OBS_Pac | Data_Pac   | Hora_pac |
 +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 |          6 | RAIMUNDA | 45245          | NULL    | NULL    | NULL    | 002   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:16:24 |
 |          7 | DEBORA   | 452435         | NULL    | NULL    | NULL    | 003   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:16:45 |
 |          9 | VANESSA  | 64356345       | NULL    | NULL    | NULL    | 004   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 15:33:26 |
 |         11 | MUNDINHA | 3452345        | NULL    | NULL    | NULL    | 005   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 16:00:49 |
 |         12 | LUANA    | 52345          | NULL    | NULL    | NULL    | PAT1   | CCO-PATOLËGICO 3║ ANDAR | NULL    | NULL    | 2020-06-24 | 16:34:44 |
 |         15 | KATIA    | 63456          | NULL    | NULL    | NULL    | 001   | ADM.GIN.T╔RREO          | NULL    | NULL    | 2020-06-24 | 16:38:57 |
 |         16 | FERNANDA | 45234523       | NULL    | NULL    | NULL    | PAT2   | CCO-PATOLËGICO 3║ ANDAR | NULL    | NULL    | 2020-06-24 | 16:39:18 |
 +------------+----------+----------------+---------+---------+---------+-----------+-------------------------+---------+---------+------------+----------+
 7 rows in set (0.01 sec)
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| imex Moderador
 
  
 
 Registrado: Sexta-Feira, 7 de Janeiro de 2011
 Mensagens: 11666
 
 
 | 
			
				|  Enviada: Qua Jun 24, 2020 6:13 pm    Assunto: |   |  
				| 
 |  
				| Como ficou acrescentando o Order By no final? 
 
  	  | Código: |  	  | order by Leito_Pac | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| andvagner Novato
 
  
 
 Registrado: Domingo, 14 de Junho de 2020
 Mensagens: 13
 
 
 | 
			
				|  Enviada: Qui Jun 25, 2020 11:49 am    Assunto: Resolvido! |   |  
				| 
 |  
				| Show ficou perfeito! Você é genial. Mais uma vez muito obrigado pela ajuda! 
 Para versão MYSQL 5, ficou dessa forma;
 
 
  	  | Código: |  	  | DM.ZConsultaPac.Close;
 DM.ZConsultaPac.sql.Clear;
 If rgpOpcoes.ItemIndex = 0 Then
 DM.ZConsultaPac.sql.Add ('Select p.* From Tab_Pacientes');
 DM.ZConsultaPac.sql.Add ('as p inner join (select Leito_Pac, max(timestamp(Data_Pac, Hora_Pac))');
 DM.ZConsultaPac.sql.Add ('as DataHora  from Tab_Pacientes group by Leito_Pac) as m on m.Leito_Pac = p.Leito_Pac and m.DataHora = timestamp(p.Data_Pac, p.Hora_Pac) order by Leito_Pac');
 DM.ZConsultaPac.Open;
 edtPesquisa.Text := '';
 edtPesquisa.SetFocus;
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		|  |