Coparação de uma sequencia de Ids para inserção em outra.

Delphi

15/10/2012

Pessoal desde já agradeço a atenção de todos os participantes deste Forum.
E venho pedir uma ajuda, pois estou pesquisando à semanas alguma informação sobre INCLUSÃO de dados usando como parametro outra Tabela já préviamente cadastrada e não estou conseguindo.
Pois tenho uma SEQUENCIA De horarios em uma Tabela "DIAESCALA" e tenho que repetir está sequencia dentro de um intervalo de datas pré estabelecidos para os respectivos funcionarios,Mas até agora não consegui montar a linha comando que crie um parametro para o lançamento destes Horarios.

segue abaixo a query de exemplo, Tabelas View e um exemplo do raciocinio para que possam avaliar a situação.

****Query***:

Funciona para o lançamento das datas para os respectivos Funcionarios o unico e grave problema é com relação aos Horarios que necessito de um parametro para lançamento em uma Tabela chamada "DIA".

procedure TForm1.sbtn_1Click(Sender: TObject);
var
DataAux: TDateTime;
BEGIN
if (datetimepicker1.Date >= databd.CDSPERIODOSPERINICIO.AsDateTime) AND (datetimepicker2.Date <= databd.CDSPERIODOSPERFIM.AsDateTime+1) AND (datetimepicker2.Date > datetimepicker1.Date) Then
begin
databd.CDSFUNCIONARIOS.First;
while not databd.CDSFUNCIONARIOS.Eof do
begin
DataAux := DateTimePicker1.Date;
while DataAux <= DateTimePicker2.Date do
begin
databd.CDSDIA.Append;
databd.CDSDIADIAID.AsDateTime := DataAux;
databd.CDSDIADIAFUNCIONARIOID.AsInteger := databd.CDSFUNCIONARIOSFUNCIONARIOID.AsInteger;
(databd.CDSDIADIAHORARIOID.AsInteger := databd.CDSFun_hor_DiaDESHORARIOID.AsInteger;)citada apenas para ilustração.
databd.CDSDIA.Post;
DataAux := DataAux + 1;
end;
databd.CDSFUNCIONARIOS.Next;
end;
showmessage('APURAÇÃO REALIZADA COM SUCESSO')

end
else
ShowMessage('INTERVALO DE DATAS INCONRRETO');
ABORT;


END;

END;




*****TABELAS***:

Os horarios estão cadastrados na tabela citada abaixo.

TABLE HORARIO (
HORARIOID INTEGER NOT NULL, "PK"
HRONOME VARCHAR(100),
HROCARGAHORARIA TIME,
HROCHDIURNA TIME,
HROCHNOTURNA TIME,

As especificações deste horarios estão cadastradas na tabela citada abaixo.

TABLE DIAESCALA (
DESESCALAID INTEGER NOT NULL, "FK ESCALAID"
DESHORARIOID INTEGER NOT NULL,"FK HORARIOID"
DESDIA DATE);

A Descrição desta Escala com relação a quantidade de dias e a data inicial estão cadastradas na tabela citada abaixo.

TABLE ESCALA (
ESCALAID INTEGER NOT NULL, "PK"
ESCNOME VARCHAR(200),
ESCPERIODO INTEGER,
ESCDATAINICIO DATE,);

O historico destas escalas estão cadastradas logo abaixo e é onde eu tenho a ligação do funcionário à Escala.

TABLE HISESCALA (
HISFUNCIONARIOID INTEGER NOT NULL, "FK FUNCIONARIOID"
HISESCALAID INTEGER NOT NULL, "FK ESCALAID"
DATAINICIO DATE NOT NULL,
DATAFIM DATE);

***VIEW****:

O VIEW traz à comparação do Funcionarios + datas e Horarios cadastrados; e estão citados logo abaixo e é onde eu tenho outra ligação do funcionário aos Horarios.

VIEW FUN_HORARIO_DIA(
HESFUNCIONARIOID,
DESDIA,
DESHORARIOID)
AS
select
he.HESFuncionarioId,
d.DesDia,
d.DESHORARIOID
from HISESCALA he
join DIAESCALA d on d.DesEscalaId = he.HesEscalaId


É onde eu quero lançar as datas para os funcionarios e seus respectivos HorariosIDs

TALBLE DIA (
DIAID DATE NOT NULL,
FUNCIONARIOID INTEGER NOT NULL,"FK FUNCIONARIO"
HORARIOID INTEGER NOT NULL,"FK HORARIO"
);

***Exemplo***:

TABELA ESCALA
ESCALAID *****************NOME*************************************************************************************************************************ESCPERIODO****ESCDATAINICIO
107*********DE SEG-QUI DE 07:30 AS 12:00 13:30 AS 18:00 SEX DE 07:30 AS 12:00 13:30 AS 17:00 SAB COMPENSANDO DOM DSR. *****7************** 05/12/2011
109*********DE SEG-SEX DE 07:30 AS 12:00 13:30 AS 17:00 SAB COMPENSANDO DOM DSR. ****************************************************7************** 09/10/2012
110*********DE SEG A SEX DE 08:00 AS 18:00 SAB COMPENSANDO DOM DSR. ********************************************************************7************** 10/10/2012

TABELA HIESCALA
FUNCIONARIOID**** ESCALAID****HESDATAINICIO** HESDATAFIM
1**************************109************01/12/2012**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela "DIAESCALA")
2**************************110************01/01/2013**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela"DIAESCALA")
3**************************107************12/11/2013**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela "DIAESCALA")

TABELA HORARIO
HORARIOID*********NOME***********************CARGAHORARIA*****DIURNA********NOTURNA***QTDBATIDAS
193****** DE 07:30 AS 12:00 - 13:30 AS 18:00******09:00:00***********09:00:00********00:00:00*********4
194******DE 07:30 AS 12:00 - 13:30 AS 17:00****** 08:00:00***********08:00:00********00:00:00*********4
195****** DESCANSO SEMANAL REMUNERADO*07:20:00***********07:20:00******** 00:00:00********4
196****** COMPENSANDO****************************04:00:00***********04:00:00*********00:00:00********2
197****** COMPENSANDO NOTURNO***************03:30:00***********00:00:00*********03:30:00********2
198****** DESCANSO SEMANAL REM. NOT********06:25:00***********01:00:00********05:25:00********4
199****** DE 08:00 AS 18:00***************************10:00:00**********10:00:00*********00:00:00*******2

TABELA DIAESCALA
ESCALAID**********HORARIOID********** DIA
109*****************194***************09/10/2012 -3- Terça-Feira
109*****************194***************10/10/2012 -4- Quarta-Feira
109*****************194***************11/10/2012 -5- Quinta-Feira
109*****************194***************12/10/2012 -6- Sexta-Feira
109*****************196***************13/10/2012 -7- Sabado
109*****************195***************14/10/2012 -1- Domingo
109*****************194***************15/10/2012 -2- Segunda-Feira
110*****************199***************10/10/2012 -4- Quarta-Feira
110*****************199***************11/10/2012 -5- Quinta-Feira
110*****************199***************12/10/2012 -6-Sexta-Feira
110*****************196***************13/10/2012 -7-Sabado
110*****************195***************14/10/2012 -1-Domingo
110*****************199***************15/10/2012 -2-Segunda-Feira
110*****************199***************16/10/2012 -3-Terça-Feira
107*****************193***************05/12/2011 -4-Quarta-Feira
107*****************193***************06/12/2011 -5-Quinta-Feira
107*****************193***************07/12/2011 -6- Sexta-Feira
107*****************193***************08/12/2011 -7- Sabado
107*****************194***************09/12/2011 -1-Domingo
107*****************196***************10/12/2011 -2-Segunda-Feira
107*****************195***************11/12/2011 -3-Terça- Feira


VIEW FUN_HORARIO_DIA
HESFUNCIONARIOID DESDIA DESHORARIOID
1*****************194***************09/10/2012 -3- Terça-Feira
1*****************194***************10/10/2012 -4- Quarta-Feira
1*****************194***************11/10/2012 -5- Quinta-Feira
1*****************194***************12/10/2012 -6- Sexta-Feira
1*****************196***************13/10/2012 -7- Sabado
1*****************195***************14/10/2012 -1- Domingo
1*****************194***************15/10/2012 -2- Segunda-Feira
2*****************199***************10/10/2012 -4- Quarta-Feira
2*****************199***************11/10/2012 -5- Quinta-Feira
2*****************199***************12/10/2012 -6-Sexta-Feira
2*****************196***************13/10/2012 -7-Sabado
2*****************195***************14/10/2012 -1-Domingo
2*****************199***************15/10/2012 -2-Segunda-Feira
2*****************199***************16/10/2012 -3-Terça-Feira
3*****************193***************05/12/2011 -4-Quarta-Feira
3*****************193***************06/12/2011 -5-Quinta-Feira
3*****************193***************07/12/2011 -6- Sexta-Feira
3*****************193***************08/12/2011 -7- Sabado
3*****************194***************09/12/2011 -1-Domingo
3*****************196***************10/12/2011 -2-Segunda-Feira
3*****************195***************11/12/2011 -3-Terça- Feira

OU SEJA TENHO QUE APRESENTAR EM UMA TABELA CHAMADA "DIA" ENTRE UMA DATAINICIAL 26/11/2013 E UMA DATAFINAL 02/12/2013
A SEGUINTE SITUAÇÃO:


DIAID DIAFUNCIONARIOID DIAHORARIOID
26/11/2013*****************1***************************194 - Terça-Feira
27/11/2013*****************1***************************194 - Quarta- Feira
28/11/2013*****************1***************************194 - Quinta - Feira
29/11/2013*****************1***************************194 - Sexta - Feira
30/11/2013*****************1***************************196 - Sabado
01/12/2013*****************1***************************195 - Domingo
02/12/2013*****************1***************************194 - Segunda - Feira
26/11/2013*****************2***************************199 - Terça- Feira
27/11/2013*****************2***************************199 - Quarta- Feira
28/11/2013*****************2***************************199 - Quinta - Feira
29/11/2013*****************2***************************199 - Sexta - Feira
30/11/2013*****************2***************************196 - Sabado
01/12/2013*****************2***************************195 - Domingo
02/12/2013*****************2***************************199 - Segunda - Feira
26/11/2013*****************3***************************195 - Terça - Feira
27/11/2013*****************3***************************193 - Quarta - Feira
28/11/2013*****************3***************************193 - Quinta - Feira
29/11/2013*****************3***************************193 - Sexta - Feira
30/11/2013*****************3***************************193 - Sabado
01/12/2013*****************3***************************194 - Domingo
02/12/2013*****************3***************************196 - Segunda - Feira


E através da query citada acima eu consigo até agora obter de forma correta apenas o "DIAID" E "DIAFUNCIONARIOID"

Desde já agradeço à todos!!!
Marlus Vinhal

Marlus Vinhal

Curtidas 0

Respostas

Marlus Vinhal

Marlus Vinhal

15/10/2012

Pessoal desde já agradeço a atenção de todos os participantes deste Forum.
E venho pedir uma ajuda, pois estou pesquisando à semanas alguma informação sobre INCLUSÃO de dados usando como parametro outra Tabela já préviamente cadastrada e não estou conseguindo.
Pois tenho uma SEQUENCIA De horarios em uma Tabela "DIAESCALA" e tenho que repetir está sequencia dentro de um intervalo de datas pré estabelecidos para os respectivos funcionarios,Mas até agora não consegui montar a linha comando que crie um parametro para o lançamento destes Horarios.

segue abaixo a query de exemplo, Tabelas View e um exemplo do raciocinio para que possam avaliar a situação.

****Query***:

Funciona para o lançamento das datas para os respectivos Funcionarios o unico e grave problema é com relação aos Horarios que necessito de um parametro para lançamento em uma Tabela chamada "DIA".

procedure TForm1.sbtn_1Click(Sender: TObject);
var
DataAux: TDateTime;
BEGIN
if (datetimepicker1.Date >= databd.CDSPERIODOSPERINICIO.AsDateTime) AND (datetimepicker2.Date <= databd.CDSPERIODOSPERFIM.AsDateTime+1) AND (datetimepicker2.Date > datetimepicker1.Date) Then
begin
databd.CDSFUNCIONARIOS.First;
while not databd.CDSFUNCIONARIOS.Eof do
begin
DataAux := DateTimePicker1.Date;
while DataAux <= DateTimePicker2.Date do
begin
databd.CDSDIA.Append;
databd.CDSDIADIAID.AsDateTime := DataAux;
databd.CDSDIADIAFUNCIONARIOID.AsInteger := databd.CDSFUNCIONARIOSFUNCIONARIOID.AsInteger;
(databd.CDSDIADIAHORARIOID.AsInteger := databd.CDSFun_hor_DiaDESHORARIOID.AsInteger;)citada apenas para ilustração.
databd.CDSDIA.Post;
DataAux := DataAux + 1;
end;
databd.CDSFUNCIONARIOS.Next;
end;
showmessage('APURAÇÃO REALIZADA COM SUCESSO')

end
else
ShowMessage('INTERVALO DE DATAS INCONRRETO');
ABORT;


END;

END;




*****TABELAS***:

Os horarios estão cadastrados na tabela citada abaixo.

TABLE HORARIO (
HORARIOID INTEGER NOT NULL, "PK"
HRONOME VARCHAR(100),
HROCARGAHORARIA TIME,
HROCHDIURNA TIME,
HROCHNOTURNA TIME,

As especificações deste horarios estão cadastradas na tabela citada abaixo.

TABLE DIAESCALA (
DESESCALAID INTEGER NOT NULL, "FK ESCALAID"
DESHORARIOID INTEGER NOT NULL,"FK HORARIOID"
DESDIA DATE);

A Descrição desta Escala com relação a quantidade de dias e a data inicial estão cadastradas na tabela citada abaixo.

TABLE ESCALA (
ESCALAID INTEGER NOT NULL, "PK"
ESCNOME VARCHAR(200),
ESCPERIODO INTEGER,
ESCDATAINICIO DATE,);

O historico destas escalas estão cadastradas logo abaixo e é onde eu tenho a ligação do funcionário à Escala.

TABLE HISESCALA (
HISFUNCIONARIOID INTEGER NOT NULL, "FK FUNCIONARIOID"
HISESCALAID INTEGER NOT NULL, "FK ESCALAID"
DATAINICIO DATE NOT NULL,
DATAFIM DATE);

***VIEW****:

O VIEW traz à comparação do Funcionarios + datas e Horarios cadastrados; e estão citados logo abaixo e é onde eu tenho outra ligação do funcionário aos Horarios.

VIEW FUN_HORARIO_DIA(
HESFUNCIONARIOID,
DESDIA,
DESHORARIOID)
AS
select
he.HESFuncionarioId,
d.DesDia,
d.DESHORARIOID
from HISESCALA he
join DIAESCALA d on d.DesEscalaId = he.HesEscalaId


É onde eu quero lançar as datas para os funcionarios e seus respectivos HorariosIDs

TALBLE DIA (
DIAID DATE NOT NULL,
FUNCIONARIOID INTEGER NOT NULL,"FK FUNCIONARIO"
HORARIOID INTEGER NOT NULL,"FK HORARIO"
);

***Exemplo***:

TABELA ESCALA
ESCALAID *****************NOME*************************************************************************************************************************ESCPERIODO****ESCDATAINICIO
107*********DE SEG-QUI DE 07:30 AS 12:00 13:30 AS 18:00 SEX DE 07:30 AS 12:00 13:30 AS 17:00 SAB COMPENSANDO DOM DSR. *****7************** 05/12/2011
109*********DE SEG-SEX DE 07:30 AS 12:00 13:30 AS 17:00 SAB COMPENSANDO DOM DSR. ****************************************************7************** 09/10/2012
110*********DE SEG A SEX DE 08:00 AS 18:00 SAB COMPENSANDO DOM DSR. ********************************************************************7************** 10/10/2012

TABELA HIESCALA
FUNCIONARIOID**** ESCALAID****HESDATAINICIO** HESDATAFIM
1**************************109************01/12/2012**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela "DIAESCALA")
2**************************110************01/01/2013**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela"DIAESCALA")
3**************************107************12/11/2013**********null (HESDATAINICIO é sempre >= ESCDATAINICIO da Tabela "ESCALA" >= DIA da Tabela "DIAESCALA")

TABELA HORARIO
HORARIOID*********NOME***********************CARGAHORARIA*****DIURNA********NOTURNA***QTDBATIDAS
193****** DE 07:30 AS 12:00 - 13:30 AS 18:00******09:00:00***********09:00:00********00:00:00*********4
194******DE 07:30 AS 12:00 - 13:30 AS 17:00****** 08:00:00***********08:00:00********00:00:00*********4
195****** DESCANSO SEMANAL REMUNERADO*07:20:00***********07:20:00******** 00:00:00********4
196****** COMPENSANDO****************************04:00:00***********04:00:00*********00:00:00********2
197****** COMPENSANDO NOTURNO***************03:30:00***********00:00:00*********03:30:00********2
198****** DESCANSO SEMANAL REM. NOT********06:25:00***********01:00:00********05:25:00********4
199****** DE 08:00 AS 18:00***************************10:00:00**********10:00:00*********00:00:00*******2

TABELA DIAESCALA
ESCALAID**********HORARIOID********** DIA
109*****************194***************09/10/2012 -3- Terça-Feira
109*****************194***************10/10/2012 -4- Quarta-Feira
109*****************194***************11/10/2012 -5- Quinta-Feira
109*****************194***************12/10/2012 -6- Sexta-Feira
109*****************196***************13/10/2012 -7- Sabado
109*****************195***************14/10/2012 -1- Domingo
109*****************194***************15/10/2012 -2- Segunda-Feira
110*****************199***************10/10/2012 -4- Quarta-Feira
110*****************199***************11/10/2012 -5- Quinta-Feira
110*****************199***************12/10/2012 -6-Sexta-Feira
110*****************196***************13/10/2012 -7-Sabado
110*****************195***************14/10/2012 -1-Domingo
110*****************199***************15/10/2012 -2-Segunda-Feira
110*****************199***************16/10/2012 -3-Terça-Feira
107*****************193***************05/12/2011 -4-Quarta-Feira
107*****************193***************06/12/2011 -5-Quinta-Feira
107*****************193***************07/12/2011 -6- Sexta-Feira
107*****************193***************08/12/2011 -7- Sabado
107*****************194***************09/12/2011 -1-Domingo
107*****************196***************10/12/2011 -2-Segunda-Feira
107*****************195***************11/12/2011 -3-Terça- Feira


VIEW FUN_HORARIO_DIA
HESFUNCIONARIOID**DESHORARIOID************DESDIA
1*****************194***************09/10/2012 -3- Terça-Feira
1*****************194***************10/10/2012 -4- Quarta-Feira
1*****************194***************11/10/2012 -5- Quinta-Feira
1*****************194***************12/10/2012 -6- Sexta-Feira
1*****************196***************13/10/2012 -7- Sabado
1*****************195***************14/10/2012 -1- Domingo
1*****************194***************15/10/2012 -2- Segunda-Feira
2*****************199***************10/10/2012 -4- Quarta-Feira
2*****************199***************11/10/2012 -5- Quinta-Feira
2*****************199***************12/10/2012 -6-Sexta-Feira
2*****************196***************13/10/2012 -7-Sabado
2*****************195***************14/10/2012 -1-Domingo
2*****************199***************15/10/2012 -2-Segunda-Feira
2*****************199***************16/10/2012 -3-Terça-Feira
3*****************193***************05/12/2011 -4-Quarta-Feira
3*****************193***************06/12/2011 -5-Quinta-Feira
3*****************193***************07/12/2011 -6- Sexta-Feira
3*****************193***************08/12/2011 -7- Sabado
3*****************194***************09/12/2011 -1-Domingo
3*****************196***************10/12/2011 -2-Segunda-Feira
3*****************195***************11/12/2011 -3-Terça- Feira

OU SEJA TENHO QUE APRESENTAR EM UMA TABELA CHAMADA "DIA" ENTRE UMA DATAINICIAL 26/11/2013 E UMA DATAFINAL 02/12/2013
A SEGUINTE SITUAÇÃO:


DIAID*******************DIAFUNCIONARIOID**********DIAHORARIOID
26/11/2013*****************1***************************194 - Terça-Feira
27/11/2013*****************1***************************194 - Quarta- Feira
28/11/2013*****************1***************************194 - Quinta - Feira
29/11/2013*****************1***************************194 - Sexta - Feira
30/11/2013*****************1***************************196 - Sabado
01/12/2013*****************1***************************195 - Domingo
02/12/2013*****************1***************************194 - Segunda - Feira
26/11/2013*****************2***************************199 - Terça- Feira
27/11/2013*****************2***************************199 - Quarta- Feira
28/11/2013*****************2***************************199 - Quinta - Feira
29/11/2013*****************2***************************199 - Sexta - Feira
30/11/2013*****************2***************************196 - Sabado
01/12/2013*****************2***************************195 - Domingo
02/12/2013*****************2***************************199 - Segunda - Feira
26/11/2013*****************3***************************195 - Terça - Feira
27/11/2013*****************3***************************193 - Quarta - Feira
28/11/2013*****************3***************************193 - Quinta - Feira
29/11/2013*****************3***************************193 - Sexta - Feira
30/11/2013*****************3***************************193 - Sabado
01/12/2013*****************3***************************194 - Domingo
02/12/2013*****************3***************************196 - Segunda - Feira


E através da query citada acima eu consigo até agora obter de forma correta apenas o "DIAID" E "DIAFUNCIONARIOID"

Desde já agradeço à todos!!!
GOSTEI 0
POSTAR