Pesquisa entre datas
Pessoal, preciso de verificar ao sair de um DBEdit se a data que foi digitada esta entre duas datas já gravadas no banco de dados.
Explicando melhor:
Tenho uma tabela de reserva de aptos com a data da chegada e a data da saida, então não posso ter este mesmo apto reservado para este mesmo período(uso paradox).
Se alguém puder me ajudar agradeço muito.
Marcelo.
Explicando melhor:
Tenho uma tabela de reserva de aptos com a data da chegada e a data da saida, então não posso ter este mesmo apto reservado para este mesmo período(uso paradox).
Se alguém puder me ajudar agradeço muito.
Marcelo.
Marcrv2
Curtidas 0
Respostas
Aroldo Zanela
26/01/2004
Colega,
Voce pode utilizar BETWEEN na cláusula WHERE numa consulta SQL, pois o BDE suporta notação ANSI SQL92 para o Paradox.
Voce pode utilizar BETWEEN na cláusula WHERE numa consulta SQL, pois o BDE suporta notação ANSI SQL92 para o Paradox.
GOSTEI 0
Marcrv2
26/01/2004
Caro Aroldo, é o seguinte não consegui com between porque não vou passar um campo de tabela para pesquisar entre duas datas que passarei como parametro, e sim pesquisar de uma data entre dois campos de tabela já com as datas registradas.
Ao invés de eu ter where CampoDaTabela between DataI and DataF eu teria que ter where DataAPesquisar between CampoDaTabelaInicio and CampoDaTabelaFim e isso não deu certo.
Se tiver como fazer me de um exemplo.
Muito obrigado
Marcelo
Ao invés de eu ter where CampoDaTabela between DataI and DataF eu teria que ter where DataAPesquisar between CampoDaTabelaInicio and CampoDaTabelaFim e isso não deu certo.
Se tiver como fazer me de um exemplo.
Muito obrigado
Marcelo
GOSTEI 0
Aroldo Zanela
26/01/2004
Colega,
Coloca a estrutura da tabela aqui pra facilitar (DDL).
Coloca a estrutura da tabela aqui pra facilitar (DDL).
GOSTEI 0
Marcrv2
26/01/2004
Tenho os seguintes campos:
Nome : A
Apto : S
DataChegada : Date
DataSaida : Date
Por exemplo, quando eu reservar o apto 105 no período de 25/01/2004 a 30/01/2004 o mesmo não pode ser reservado neste mesmo período, por exemplo quando o usuário digitar qualquer data entre 25 e 30 ele dará o aviso que o mesmo já se encontra reservado.
Deu para entender.
Marcelo.
Nome : A
Apto : S
DataChegada : Date
DataSaida : Date
Por exemplo, quando eu reservar o apto 105 no período de 25/01/2004 a 30/01/2004 o mesmo não pode ser reservado neste mesmo período, por exemplo quando o usuário digitar qualquer data entre 25 e 30 ele dará o aviso que o mesmo já se encontra reservado.
Deu para entender.
Marcelo.
GOSTEI 0
Brenoinfo
26/01/2004
caro colega...
pq vc na coloca um campo na tabela chamado reservado true ou false
nao seria mais facil
pq vc na coloca um campo na tabela chamado reservado true ou false
nao seria mais facil
GOSTEI 0
Aroldo Zanela
26/01/2004
caro colega...
pq vc na coloca um campo na tabela chamado reservado true ou false
nao seria mais facil
A que período refere-se a reserva?
GOSTEI 0
Marcrv2
26/01/2004
Eu não posso colocar um campo boleano pois o apto ode ser reservado para o periodo 25 a 30 mas pode para um periodo posterior como por exemplo 01 a 10 do mes subsequente, e o caso se refere a uma tabela onde faço reservas de aptos do hotel para onde desenvolvi o sistema.
Agradeço a ajuda até o momento.
Marcelo.
Agradeço a ajuda até o momento.
Marcelo.
GOSTEI 0
Marcrv2
26/01/2004
Pessoal apenas corrigindo o texto anterior:
Eu não posso colocar um campo boleano pois o apto não pode ser reservado para o periodo de 25 a 30 se já estiver reserva neste periodo mas pode para um periodo posterior como por exemplo de 01 a 10 do mes subsequente, e o caso se refere a uma tabela onde faço reservas de aptos do hotel para onde desenvolvi o sistema.
Agradeço a ajuda até o momento.
Marcelo.
Eu não posso colocar um campo boleano pois o apto não pode ser reservado para o periodo de 25 a 30 se já estiver reserva neste periodo mas pode para um periodo posterior como por exemplo de 01 a 10 do mes subsequente, e o caso se refere a uma tabela onde faço reservas de aptos do hotel para onde desenvolvi o sistema.
Agradeço a ajuda até o momento.
Marcelo.
GOSTEI 0
Aroldo Zanela
26/01/2004
Colega,
Veja o exemplo. Não sei está 100¬, pois é apenas um protótipo de alguns minutos:
SQL:
Delphi:
DFM:
Veja o exemplo. Não sei está 100¬, pois é apenas um protótipo de alguns minutos:
SQL:
SELECT * FROM reservas WHERE (res_inicio <= :inicio and res_fim >= :fim) and res_apto = :apto
Delphi:
procedure TForm1.btnReservarClick(Sender: TObject); begin Query1.Close; Query1.ParamByName(´inicio´).AsDate := DateTimePicker1.Date; Query1.ParamByName(´fim´).AsDate := DateTimePicker2.Date; Query1.ParamByName(´apto´).AsInteger := StrToInt(Edit1.Text); Query1.Open; if Query1.RecordCount=0 then begin Table1.Append; Table1RES_NUMERO.Value:= 1; Table1RES_APTO.Value:= StrToInt(Edit1.Text); Table1RES_INICIO.Value:= DateTimePicker1.Date; Table1RES_FIM.Value:= DateTimePicker2.Date; Table1.Post; end; end;
DFM:
object DateTimePicker1: TDateTimePicker Left = 24 Top = 44 Width = 186 Height = 21 CalAlignment = dtaLeft Date = 38013.9103747685 Time = 38013.9103747685 DateFormat = dfShort DateMode = dmComboBox Kind = dtkDate ParseInput = False TabOrder = 0 end object DateTimePicker2: TDateTimePicker Left = 26 Top = 96 Width = 186 Height = 21 CalAlignment = dtaLeft Date = 38013.9104217593 Time = 38013.9104217593 DateFormat = dfShort DateMode = dmComboBox Kind = dtkDate ParseInput = False TabOrder = 1 end object Edit1: TEdit Left = 306 Top = 52 Width = 121 Height = 21 TabOrder = 2 Text = ´Edit1´ end object btnReservar: TButton Left = 40 Top = 178 Width = 75 Height = 25 Caption = ´Reservar´ TabOrder = 3 OnClick = btnReservarClick end object DBGrid1: TDBGrid Left = 302 Top = 184 Width = 320 Height = 120 DataSource = DataSource1 TabOrder = 4 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = ´MS Sans Serif´ TitleFont.Style = [] end object DBNavigator1: TDBNavigator Left = 356 Top = 126 Width = 240 Height = 25 DataSource = DataSource1 TabOrder = 5 end object Table1: TTable Active = True DatabaseName = ´F:\locacao´ TableName = ´RESERVAS.dbf´ Left = 250 Top = 32 object Table1RES_NUMERO: TFloatField FieldName = ´RES_NUMERO´ end object Table1RES_APTO: TFloatField FieldName = ´RES_APTO´ end object Table1RES_INICIO: TDateField FieldName = ´RES_INICIO´ end object Table1RES_FIM: TDateField FieldName = ´RES_FIM´ end end object Query1: TQuery DatabaseName = ´F:\LOCACAO´ SQL.Strings = ( ´SELECT * FROM reservas´ ´WHERE (res_inicio <= :inicio and res_fim >= :fim) and res_apto =´ + ´ :apto´) Left = 270 Top = 94 ParamData = < item DataType = ftDate Name = ´inicio´ ParamType = ptInput end item DataType = ftDate Name = ´fim´ ParamType = ptInput end item DataType = ftInteger Name = ´apto´ ParamType = ptInput end> end object DataSource1: TDataSource DataSet = Table1 Left = 514 Top = 46 end
GOSTEI 0
Marcrv2
26/01/2004
Valeu Aroldo, tive tricando idéia ontem com um amigo e tb achamos uma solução basta apenas dar uma melhorada, mas vou testar o seu código.
Muito obrigado.
Marcelo
Muito obrigado.
Marcelo
GOSTEI 0