Fórum Aumentar Velocidade de Consulta #322891
05/06/2006
0
var dt:Tdate;
x,cont:integer;
begin
dt:=DateEdit1.Date;
cont:=0;
dtmodulo.qr_listavei.Open;
dtmodulo.qr_listavei.First;
while not dtmodulo.qr_listavei.Eof do
begin
dtmodulo.dts_viagem.close;
dtmodulo.dts_viagem.ParamByName(´VCODIGO´).AsString:= dtmodulo.qr_listavei.fieldbyname(´CAM_PLACA´).AsString;
dtmodulo.dts_viagem.ParamByName(´VCODIGOS´).AsDate:=dt;
dtmodulo.dts_viagem.Open;
ProfGrid1[0,cont].Value:=dtmodulo.qr_listavei.fieldbyname(´CAM_DESCRICAO´).AsString;
for x:=1 to 96 do
begin
dtmodulo.dts_diario.Close;
dtmodulo.dts_diario.ParamByName(´VCODIGO´).AsString:= dtmodulo.dts_viagem.Fieldbyname(´CAM_Placa´).AsString;
dtmodulo.dts_diario.ParamByName(´VCODIGOS´).AsDate:= dtmodulo.dts_viagem.Fieldbyname(´Via_Data´).AsDateTime;
dtmodulo.dts_diario.ParamByName(´VCODIGOSS´).AsInteger:=x;
dtmodulo.dts_diario.open;
qr_auxiliar.Close;
qr_auxiliar.SQL.Clear;
qr_auxiliar.SQL.Add(´Select STA_COR, STA_CODIGO from Status where STA_CODIGO = ´+QuotedStr(dtmodulo.dts_diarioSTA_CODIGO.AsString));
qr_auxiliar.Open;
if dtmodulo.dts_diarioDIA_SIN.Value=´S´ then ProfGrid1.cells[x,cont].Value:=´|´ else ProfGrid1.Cells[x,cont].value:=´´;
ProfGrid1[x,cont].Color:=qr_auxiliar.fieldbyname(´STA_COR´).Value;
end;
inc(cont);
dtmodulo.qr_listavei.Next;
end;
end;
Hacknux
Curtir tópico
+ 0Posts
05/06/2006
Gandalf.nho
Gostei + 0
05/06/2006
Hacknux
Gostei + 0
05/06/2006
Minuto
se vc quiser posta ai as tabelas (os creates) e como vc quer q funcione q posso tentar fazer pra vc!
melhor ainda c vc tiver como mandar um banco com tabelas e registro
terei o maior prazer em ajudar ! ( adoro procedures com firebird rs) :wink:
minutacio@bol.com.br
Gostei + 0
05/06/2006
Hacknux
SET SQL DIALECT 3;
SET NAMES WIN1252;
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE MOTORISTA (
MOT_CODIGO INTEGER NOT NULL,
MOT_NOME VARCHAR(60)
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE MOTORISTA ADD CONSTRAINT PK_MOTORISTA PRIMARY KEY (MOT_CODIGO);
SET SQL DIALECT 3;
SET NAMES WIN1252;
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE CAMINHAO (
CAM_PLACA VARCHAR(7) NOT NULL,
CAM_DESCRICAO VARCHAR(25),
MOT_CODIGO INTEGER,
CAM_UNIDADE VARCHAR(50),
CAM_TIPO VARCHAR(30),
CAM_COMPA VARCHAR(30)
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE CAMINHAO ADD CONSTRAINT PK_CAMINHAO PRIMARY KEY (CAM_PLACA);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE CAMINHAO ADD CONSTRAINT FK_CAMINHAO_1 FOREIGN KEY (MOT_CODIGO) REFERENCES MOTORISTA (MOT_CODIGO) ON UPDATE CASCADE;
SET SQL DIALECT 3;
SET NAMES WIN1252;
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE VIAGEM (
VIA_DATA DATE NOT NULL,
CAM_PLACA VARCHAR(7) NOT NULL,
VIA_ATUALIZACAO TIMESTAMP
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE VIAGEM ADD CONSTRAINT PK_VIAGEM PRIMARY KEY (VIA_DATA, CAM_PLACA);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE VIAGEM ADD CONSTRAINT FK_VIAGEM_1 FOREIGN KEY (CAM_PLACA) REFERENCES CAMINHAO (CAM_PLACA) ON UPDATE CASCADE;
SET SQL DIALECT 3;
SET NAMES WIN1252;
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE DIARIO (
VIA_DATA DATE NOT NULL,
CAM_PLACA VARCHAR(7) NOT NULL,
DIA_HORA INTEGER NOT NULL,
MOT_CODIGO INTEGER,
STA_CODIGO VARCHAR(2),
DIA_OBS VARCHAR(600),
DIA_SIN VARCHAR(1)
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE DIARIO ADD CONSTRAINT PK_DIARIO PRIMARY KEY (VIA_DATA, CAM_PLACA, DIA_HORA);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE DIARIO ADD CONSTRAINT FK_DIARIO_1 FOREIGN KEY (VIA_DATA, CAM_PLACA) REFERENCES VIAGEM (VIA_DATA, CAM_PLACA) ON UPDATE CASCADE;
ALTER TABLE DIARIO ADD CONSTRAINT FK_DIARIO_2 FOREIGN KEY (MOT_CODIGO) REFERENCES MOTORISTA (MOT_CODIGO) ON UPDATE CASCADE;
ALTER TABLE DIARIO ADD CONSTRAINT FK_DIARIO_3 FOREIGN KEY (STA_CODIGO) REFERENCES STATUS (STA_CODIGO) ON UPDATE CASCADE;
Gostei + 0
06/06/2006
Minuto
dtmodulo.qr_listavei.Open; // 1ª TABELA VEICULOS?
dtmodulo.qr_listavei.First;
while not dtmodulo.qr_listavei.Eof do
begin
dtmodulo.dts_viagem.close;
dtmodulo.dts_viagem.ParamByName(´VCODIGO´).AsString:= dtmodulo.qr_listavei.fieldbyname(´CAM_PLACA´).AsString;
dtmodulo.dts_viagem.ParamByName(´VCODIGOS´).AsDate:=dt;
dtmodulo.dts_viagem.Open;
ProfGrid1[0,cont].Value:=dtmodulo.qr_listavei.fieldbyname(´CAM_DESCRICAO´).AsString;
for x:=1 to 96 do
begin
dtmodulo.dts_diario.Close;
dtmodulo.dts_diario.ParamByName(´VCODIGO´).AsString:= dtmodulo.dts_viagem.Fieldbyname(´CAM_Placa´).AsString;
dtmodulo.dts_diario.ParamByName(´VCODIGOS´).AsDate:= dtmodulo.dts_viagem.Fieldbyname(´Via_Data´).AsDateTime;
dtmodulo.dts_diario.ParamByName(´VCODIGOSS´).AsInteger:=x;
ESSE X AI QUAL É O CAMPO NA TABELA COM PARAMETRO ´VCODIGOSS´?
MEU EMAIL : MINUTACIO@BOL.COM.BR
Gostei + 0
06/06/2006
Minuto
é claro que como eu não sei o q vc precisa ai de campos das tabelas eu fiz so pra teste mesmo vc pode depois adicionar + campos
vc sabe usar view né?
create view PESQUISA (via_data,cam_placa,dia_hora,mot_codigo,sta_codigo
,dia_sin,via_atualizacao,mot_codigo )
as
select DIARIO.via_data,DIARIO.cam_placa,DIARIO.dia_hora,DIARIO.mot_codigo,DIARIO.sta_codigo
,DIARIO.dia_sin , VIAGEM.via_atualizacao ,CAMINHAO.cam_descricao,CAMINHAO.mot_codigo FROM DIARIO
INNER JOIN VIAGEM ON VIAGEM.cam_placa = DIARIO.cam_placa AND VIAGEM.via_data
=DIARIO.via_data
inner JOIN CAMINHAO ON CAMINHAO.cam_placa =DIARIO.cam_placa
Gostei + 0
06/06/2006
Minuto
create view PESQUISA (via_data,cam_placa,dia_hora,mot_codigo,sta_codigo
,dia_sin,via_atualizacao,cam_descricao )
as
select DIARIO.via_data,DIARIO.cam_placa,DIARIO.dia_hora,DIARIO.mot_codigo,DIARIO.sta_codigo
,DIARIO.dia_sin , VIAGEM.via_atualizacao ,CAMINHAO.cam_descricao FROM DIARIO
INNER JOIN VIAGEM ON VIAGEM.cam_placa = DIARIO.cam_placa AND VIAGEM.via_data
=DIARIO.via_data
inner JOIN CAMINHAO ON CAMINHAO.cam_placa =DIARIO.cam_placa
Gostei + 0
06/06/2006
Hacknux
Desde já agradeço a atenção.
Gostei + 0
07/06/2006
Minuto
eu ja tive esse tipo de relatorio q vc tem 96 registros em linhas e tem q passar pra colunas.
tem 2 meios pra resolver isso :
criar uma tabela temporaria no banco com 96 colunas e toda vez q vc for fazer a consulta c da um delete * from table
ou
(essa q eu uso)
eu uso RXlib (conhece?) ele tem um componente chamado rxmemorydata q cria uma tabela virtual .
vc pode criar os campos em tempo de projeto no delphi:
for i:=1 to (query.recordcount) do
begin
memo.FieldDefs.Add(´campo´+inttostr(i),ftinteger,false);
...
da uma pesquisada muita gente usa esse componente
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)