Hello James,
>available rooms are added to an array
I also need the exact dates when the room is available.
Sometimes guests have to make a room transfer. Saturday to Wednesday in room 100 the rest of the week in 1010, etc. .
Best regards,
Otto
Get valid
Re: Get valid
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
Re: Get valid
Otto,
Ah, yes, I also did a routine for that. First it looks for available rooms for the entire date range, if not found, then in looks for the next optimal ranges in two rooms (e.g. 4 days in one room and 1 day in another, then 3 days in one, 2 in another). If two rooms can't be found then it looks for 3 rooms. Then all the choices can be put into an array for browsing by the user. The user could then select any senario and all the needed reservations would be posted automatically. Quite complicated.
Back to your original example dialog, in many cases a single room number field would not be sufficent.
James
Ah, yes, I also did a routine for that. First it looks for available rooms for the entire date range, if not found, then in looks for the next optimal ranges in two rooms (e.g. 4 days in one room and 1 day in another, then 3 days in one, 2 in another). If two rooms can't be found then it looks for 3 rooms. Then all the choices can be put into an array for browsing by the user. The user could then select any senario and all the needed reservations would be posted automatically. Quite complicated.
Back to your original example dialog, in many cases a single room number field would not be sufficent.
James
-
- Posts: 167
- Joined: Thu Mar 22, 2007 11:24 am
Re: Get valid
Otto,Otto wrote:Hello James,
thank you for your answer.
The valid is on the Zimmer-Nr: - field (engl. Room number).
If the room is occupied the valid returns false and you can’t navigate back to change the
“Anreise” or “Abreise” (arrival/departure) .
Best regards,
Otto
I have a solution (see code) .
Code: Select all
#include "FiveWin.ch"
# include "common.ch"
function Main()
LOCAL oDlg, oGet[3]
LOCAL cCad := "Testing "
LOCAL nNum := 0
LOCAL dDat := Date(), lOk
Local LastGet
Set century On
Set Date Ansi
Set Date format "mm/dd/yyyy"
SET _3DLOOK ON
DEFINE DIALOG oDlg TITLE "TGet from " + FWDESCRIPTION
@ 1, 2 SAY "Text..:" OF oDlg
@ 1, 6 GET oGet[1] VAR cCad OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
@ 1.8, 2 SAY "Number:" OF oDlg
@ 2, 6 GET oGet[2] VAR nNum OF oDlg SIZE 60, 10 PICTURE "9999999.99"
@ 2.6, 2 SAY "Date:" OF oDlg
@ 3, 6 GET oGet[3] VAR dDat PICTURE "@E" OF oDlg SIZE 60, 10 VALID (lOk .OR. ! EMPTY(dDat))
@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
oGet[1]:bGotFocus := {||lOk := Test(oDlg,oGet[1],Lastget),Lastget:=oGet[1]}
oGet[2]:bGotFocus := {||lOk := Test(oDlg,oGet[2],Lastget),Lastget:=oGet[2]}
oGet[3]:bGotFocus := {||Test(oDlg,oGet[3],Lastget),Lastget:=oGet[3]}
ACTIVATE DIALOG oDlg CENTERED ON INIT LastGet:= oGet[1]
return nil
FUNC Test(oDlg,oGet,Lastget)
LOCAL Obj , i , j , k
FOR EACH Obj IN oDlg:aControls
i := Hb_EnumIndex()
IF Obj==oGet
j := i
END
IF Obj==Lastget
k := i
END
NEXT
IF k == 6 .AND. j < k // or ASCAN({2,4},j) > 0
RETURN .T.
END
RETURN .F. //(k<=j)
Re: Get valid
Thank you Frank.
Your sample code is working well.
After inserting some logfile calls and studying of your code I understand your code. Very sophisticated. I will try to implement your logic into my own code.
Thanks again for your valuable help.
Best regards,
Otto
Your sample code is working well.
After inserting some logfile calls and studying of your code I understand your code. Very sophisticated. I will try to implement your logic into my own code.
Thanks again for your valuable help.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
-
- Posts: 167
- Joined: Thu Mar 22, 2007 11:24 am
Re: Get valid
Otto,
I unterstood : When the user has selected a non available room , the user must have the possibilty to change the period. But when the user navigates to the periode dates , we have to check the availbilty from the room again. If not , which action ? . I think that a better aproach is to disable the OK button till the room is free in the choosen period.
Frank
I unterstood : When the user has selected a non available room , the user must have the possibilty to change the period. But when the user navigates to the periode dates , we have to check the availbilty from the room again. If not , which action ? . I think that a better aproach is to disable the OK button till the room is free in the choosen period.
Frank
Re: Get valid
Hello Frank,
Implementing your code will do the job. My input screen has much more controls as I posted for demonstrating my problem.
I have a OK = SAVE and a CANCEL button.
If the popup screen does not show any vacancies the only way to go is to cancel the booking.
Thank you again for your help.
Best regards,
Otto
Implementing your code will do the job. My input screen has much more controls as I posted for demonstrating my problem.
I have a OK = SAVE and a CANCEL button.
Code: Select all
REDEFINE BUTTON oBtnEnd ID 2 OF oDlg ACTION (oDlg:end()) CANCEL
Thank you again for your help.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************