Fórum Pesquisa entre datas #209551
26/01/2004
0
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
Curtir tópico
+ 0Posts
26/01/2004
Aroldo Zanela
Voce pode utilizar BETWEEN na cláusula WHERE numa consulta SQL, pois o BDE suporta notação ANSI SQL92 para o Paradox.
Gostei + 0
26/01/2004
Marcrv2
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
26/01/2004
Aroldo Zanela
Coloca a estrutura da tabela aqui pra facilitar (DDL).
Gostei + 0
26/01/2004
Marcrv2
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
26/01/2004
Brenoinfo
pq vc na coloca um campo na tabela chamado reservado true ou false
nao seria mais facil
Gostei + 0
26/01/2004
Aroldo Zanela
A que período refere-se a reserva?
Gostei + 0
26/01/2004
Marcrv2
Agradeço a ajuda até o momento.
Marcelo.
Gostei + 0
26/01/2004
Marcrv2
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
27/01/2004
Aroldo Zanela
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
28/01/2004
Marcrv2
Muito obrigado.
Marcelo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)