469,338 Members | 8,242 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,338 developers. It's quick & easy.

How do I Check if Periods Overlap

101 100+
I have been given a project to create a room booking dbase and wish to search current records to validate a booking before I save it.

My booking records contains info like:-
tblBooking
Date StartTime EndTime RoomNo
10/10/2011 9AM 1PM 7
10/10/2011 1PM 4PM 7
10/10/2011 9AM 2PM 1
10/10/2011 3PM 5PM 1
12/10/2011 5PM 6PM 1

frmBooking
If I make a booking for Room 1 for (say) 10/10/2011 for 2PM to 4PM (say) I need to look in the tblBooking to check that the room is free on this date and time.

Would anyone be able to advise on this please.
Oct 18 '11 #1

✓ answered by NeoPa

After your latest update I noticed the other problem, which is frankly quite a fundamental one, with my code suggestion. The fixed code is below. Notice the differences in the bottom two lines from the previous version in post #32. Apologies for the carelessness :

Expand|Select|Wrap|Line Numbers
  1. strSQL = "([BookStartDate] = #%D#) AND " & 
  2.          "([BookLocation] = '%R') AND " & _
  3.          "([BookTime] < #%E#) AND " & _
  4.          "([BookEndTime] > #%S#)"
  5. strSQL = Replace(strSQL, "%D", Format(dteDate, "m/d/yyyy"))
  6. strSQL = Replace(strSQL, "%R", strRoomNo)
  7. strSQL = Replace(strSQL, "%E", Format(dteEndTime, "H:m:s"))
  8. strSQL = Replace(strSQL, "%S", Format(dteStartTime, "H:m:s"))
PS. It's lucky that was picked up, as that would have been a quite serious flaw in your program if left as was.

43 5996
ADezii
8,800 Expert 8TB
In My Humble Opinion, this would be a perfect candidate for the MS Access Calendar App that is so popular here at Bytes. For any given Date, this Calendar will give you a visual cue as to whether or not a specific Room would be available for a specified Date and Time Interval. It is too involved to explain exactly how this is done, but I have created a simple Demo for you if you are interested.
  1. Download the Attachment.
  2. Click on any specific Date to expand a Listbox at the bottom of the Form that will display additional, expanded information. The Data is sorted by Date, Room Number, and Start Time and should give a clear indication as to whether or not a Reservation can occur.
  3. Month/Year Navigation can easily be accomplished via several Controls.
  4. You can Populate tblBookings, then have the Reservation display on the Form.
  5. You can even add functionality that will allow you to add Reservations through the Calendar GUI directly.
  6. Any questions, feel free to ask.
Attached Files
File Type: zip Bookings.zip (55.0 KB, 281 views)
Oct 18 '11 #2
Cyd44
101 100+
Thanks ADZel (again)

I am updateing records to Outlook and have started some logic to check for any overlap as follows:-
Expand|Select|Wrap|Line Numbers
  1. Dim Track As String
  2.  
  3. Track = "SELECT [BookLocation],[BookStartDate],[Bootime]FROM tblRoomBookings"
  4.         WHERE
  5.         "[BookLocation] = Me!BookLocation" AND "[BookStartDate] = Me!BookStartDate" AND "[BookTime] BETWEEN 'Me!BookTime' AND Me!BookEndTime"
  6.  
  7. If Not IsNull(Track) Then GoTo Room_Booked
  8. Else
  9.   GoTo Not_Room_Booked
  10. End If
I cannot get the SQL to compile as it is giving me an "expected line number or label or end of statment" error and highlights from the WHERE statement. I have obviously made a syntax error but dont know which?
Oct 18 '11 #3
ADezii
8,800 Expert 8TB
As I see it, there are 4 conditions that you must check for regarding a New Reservation, namely: Date, Room Number, Start Time, End Time. If the Date is the same, AND the Room Number is the same, AND the Start Time is between the Start and End Time Range, OR the End Time is between the Start and End Time Range for any Record in the Database, then the Reservation is NOT Valid. The following Reservation will fail because of the 3:00 P.M. Start Time for Room #7 on 10/10/2011. An existing Reservation already exists for this Date (10/10/2011) and Room (7) from the Time Interval from 1:00 P.M. to 4:00 P.M., a 1 Hour Overlap. When you execute this Code, you will get a Reservation NOT Valid, but if you change the Start Time to 5:00 P.M., all is well in the world.
Expand|Select|Wrap|Line Numbers
  1. Dim strSQL As String
  2. Dim dteDate As Date
  3. Dim intRoomNum As Integer
  4. Dim dteStartTime As Date
  5. Dim dteEndTime As Date
  6.  
  7. ‘Will FAIL
  8. dteDate = #10/10/2011#
  9. intRoomNum = 7
  10. dteStartTime = #3:00:00 PM#
  11. dteEndTime = #7:00:00 PM#
  12.  
  13. ‘Will SUCCEED
  14. 'dteDate = #10/10/2011#
  15. 'intRoomNum = 7
  16. 'dteStartTime = #5:00:00 PM#
  17. 'dteEndTime = #7:00:00 PM#
  18.  
  19. strSQL = "[Date] = #" & dteDate & "# AND [RoomNo] = " & intRoomNum & " AND # " & _
  20.          dteStartTime & "# BETWEEN [Start Time] AND [End Time] OR #" & _
  21.          dteEndTime & "# BETWEEN [Start Time] AND [End Time]"
  22.  
  23. MsgBox IIf(DCount("*", "tblBookings", strSQL) > 0, "Reservation NOT Valid", "Reservation Valid")
  24.  
Oct 18 '11 #4
NeoPa
32,182 Expert Mod 16PB
Please check out Time Interval Overlapping (MS Access 2003). It's not the whole solution, but the understanding found here gives you a solid basis to progress from.
Oct 18 '11 #5
Cyd44
101 100+
Thanks ADzeii

I know my logic was wrong but was concerned in the syntax as this was giving an error. Being new to SQL I am not confident writing statements as yet,

I have an input form which caputes Room Date Start and End Time for an appointment and want to use the Input form data to check that it is valid based upon the Room,Date & Start/End Times. Hence the Select Statement to compare the fields.

Appreciate your help as always
Oct 18 '11 #6
Cyd44
101 100+
Hi Again,

Have tried you code after substituting my variables and am getting the following error when it runs:-

Run Time Error 3075
Syntax error in Expression
[BookStartDate]=20/10/2011 AND (BookLocation]=Room 2
AND #09:00:00# BETWEEN [BookTIME] AND [BookEndTime]
OR #13:00:00# BETWEEN [BookTime] AND [BookEndTime]

On Debug, the error highlights the MsgBox line

Expand|Select|Wrap|Line Numbers
  1. MsgBox IIF(DCount("*", "tblBookings", strSQL) > 0, "Your Messages"
Looks like it has almost worked?
Oct 18 '11 #7
ADezii
8,800 Expert 8TB
@Cyd44:
Taking into consideration your actual Field Names, and the fact that the Room Number is actually a String:
Expand|Select|Wrap|Line Numbers
  1. Dim strSQL As String
  2. Dim dteDate As Date
  3. Dim strRoomNo As String
  4. Dim dteStartTime As Date
  5. Dim dteEndTime As Date
  6.  
  7. dteDate = #10/10/2011#
  8. strRoomNo = "Room 7"
  9. dteStartTime = #5:00:00 PM#
  10. dteEndTime = #7:00:00 PM#
  11.  
  12. strSQL = "[BookStartDate] = #" & dteDate & "# AND [BookLocation] = '" & strRoomNo & "' AND # " & _
  13.          dteStartTime & "# BETWEEN [BookTime] AND [BookEndTime] OR #" & _
  14.          dteEndTime & "# BETWEEN [BookTime] AND [BookEndTime]"
  15.  
  16. MsgBox IIf(DCount("*", "tblBookings", strSQL) > 0, "Reservation NOT Valid", "Reservation Valid")
P.S. - Your Table must be named tblBookings for the Code to work correctly, if not, modify Code Line #16.
Oct 18 '11 #8
Cyd44
101 100+
Many thanks for that. The VBA works. However, there appears to be a logic error wich I will try and work out first. I have input the following:-

1. I have a booking record for 21/10/2011 (room 2)from 9am to 12pm and have tried to enter a record for 21/10/2011 (room 2)from 1pm to 4pm.
On checking the result comes back as Not Vailid.

My thoughts are that I will have to run 1 check to see if the start time is valid and another to see if the end time is vailid. The reason for this is to check first to see if start time conflicts with a record and then another to see if end time conflicts with a different record.

Am I right Here?
Let me play to see if I can work it out.
Oct 18 '11 #9
Cyd44
101 100+
Have just MsgBox the strSQL to find that it is not showing the value of " & strRoomNo & ". Is this because we have declared it as a String? all other values of temp variables are being shown.?
Oct 18 '11 #10
Cyd44
101 100+
Have sorted the strtRoomNo variable and this is OK. The script appears to be saying NOT Valid to all bookings except dates which are empty so it looks like it is either not comparing dates, room, time or it is not evaulating the variables.
Oct 18 '11 #11
Cyd44
101 100+
Have entered a record for 21/10/2011 (room 2) for 6am - 8am and there is a booking starrting on this date for 9am. The script came back with VALID. It looks OK if we try a time before but some logic is wrong if we try after.

I also tried to book a room where there are no current bookings and it came back NOT Valid.

I will work on this tomorrow to see if I can understand what is happening?
Oct 18 '11 #12
Cyd44
101 100+
I have been able to suss out what might be the problem. I got MsgBox to show me all variables on completion. It is not finding one of the fields in the table (this is BookEndTime).

This field is declared exacltly as BookTime and does contain data within the table yet the script finds everything except this one.

Cleary if the condition is testing this variable agianst a value it cannot do so and results might be illogical as a result I suspect.

Expand|Select|Wrap|Line Numbers
  1. Dim strSQL As String
  2. Dim dteDate As Date
  3. Dim strRoomNo As String
  4. Dim dteStartTime As Date
  5. Dim dteEndTime As Date
  6.  
  7. dteDate = Me!BookStartDate
  8. strRoomNo = Me!BookLocation
  9. dteStartTime = Me!BookTime
  10. dteEndTime = Me!BookEndTime
  11.  
  12. strSQL = "BookStartDate = #" & dteDate & "# AND BookLocation = '" & strRoomNo & "' AND # " & _
  13. dteStartTime & "# BETWEEN BookTime AND BookEndTime OR #" & _
  14. dteEndTime & "# BETWEEN BookTime AND BookEndTime"
  15.  
  16. 'MsgBox IIf(DCount("*", "tblRoomsBooking", strSQL) > 0, "Reservation NOT Valid", "Reservation Valid")
  17. 'MsgBox IIf(DCount("*", "tblRoomsBooking", strSQL) > 0, "Reservation NOT Valid", "Reservation Valid")
  18. MsgBox (BookEndTime & strSQL)
  19.  
  20. End Sub
Oct 18 '11 #13
NeoPa
32,182 Expert Mod 16PB
@Cyd
Did you see post #5? You didn't respond in any way.

If you look again you will see that your logic is fundamentally flawed as it doesn't reliably find overlaps (but only a subset of them).
Oct 18 '11 #14
Cyd44
101 100+
Hi Neopa

Sorry I had not seen your answer but am grateful for your information. My most critical problem however is to get the script working properly as I have established that it is not retrieving info from one of the table fields. IE the BookEndTime field.

This is strange as the field is declared the same as the BookTime field which is a Date/Time field set as Medium Time. The script as shown above extracts all required fields from my table Except the BookEndTime field. Once I have got this problem resolved I can look at your logic advise in more detail.
Have you any thoughts on why I cannot retrieve the field in question?
Oct 19 '11 #15
NeoPa
32,182 Expert Mod 16PB
That will be easier to help with if you post the SQL (I assume what you're referring to as the script) that you're expecting to return the values. See How to Debug SQL String for more on that.

However, going back over the posts, I see very little examples of your SELECT clause anywhere. The last version I see is in post #3 where the field [BookEndTime] is not included (which would explain its absence). I'd be happy to look in more detail if you post the latest version of your SQL string though.
Oct 19 '11 #16
ADezii
8,800 Expert 8TB
@Cyd44:
Not sure what you are doing, but I still say that my Logic is sound. I plugged in a Reservation for Room 2, on 10/21/2011, for 1:00 P.M. to 4:00 P.M., and the Return was that this 'is' a Valid Registration. See the Attachment for clarification:
Attached Files
File Type: zip Bookings_2.zip (14.0 KB, 123 views)
Oct 19 '11 #17
NeoPa
32,182 Expert Mod 16PB
What happens when you have a room booked for 13:00 - 16:00 and someone tries to book it for 09:00 - 17:30?

If that works correctly then I've missed something somewhere.
Oct 19 '11 #18
Cyd44
101 100+
Hi ADezii

I think your is sound but my problem is that the srtSQL string is not returning a value for the BoookEndTime field in my table. All other fields are being returned except this one. Under such circustances the conditions cannot be evaulated as it can only compare the BookTime eliment.

I have looked at the table amd both BookTime and BookEndTime are declared as Date/Time Variables using Medium Time formatting. I have used MsgBox to show values of all fields within my table and the BookEndDate field is not displayed?
Oct 19 '11 #19
Cyd44
101 100+
Hi agian NeoPa
Cant evaluate your request as I cannot get my strSQL statement to return a value for my BookEndDate with the table. All other fields are able to be read except the one mentioned???????
Oct 19 '11 #20
NeoPa
32,182 Expert Mod 16PB
Cyd44:
Cant evaluate your request as I cannot get my strSQL statement to return a value for my BookEndDate with the table.
As the contents of strSQL must be determined and available before you can possibly determine what results the SQL gives, I find that statement confusing. Maybe you didn't quite appreciate all I'm asking for is a print (in here) of exactly what the string variable contains at the point just before it's executed. With this, I am in a much better position to determine exactly what to expect when it does run. Does that make more sense?
Oct 19 '11 #21
Cyd44
101 100+
I have attached the details to a new databse in order to send you the details which I have attached. This contains the form and table only which I exported to a test databse.

On running the form the strSQL actulally found ALL fields but unfortunitely created an error which you can see. However, I wanted to let you see the coding so that you can evaluate it.
Attached Files
File Type: zip Test.zip (563.0 KB, 117 views)
Oct 19 '11 #22
NeoPa
32,182 Expert Mod 16PB
You're too kind :-D

This is a little more effort on my part than I was looking for but I'll live with that for now. On other occasions I'd be grateful if you just follow the request as asked. It truly makes life simpler in the long run (Trust me on this - I have some experience). For now though, I'm pretty happy to have something solid to work with.

PS I spoke too soon. Please see Attach Database (or other work) before attaching a database. I can't open this.
Oct 19 '11 #23
Cyd44
101 100+
Please, I do not want to do any work you do not normally do. I am using Access 2011 and this will not let me save in any other format. Howver, I have followed (where I was able) the instruction in Attach Databse and recompiled/zipped for you. I hope this will open!
Attached Files
File Type: zip Database41.zip (360.0 KB, 142 views)
Oct 19 '11 #24
NeoPa
32,182 Expert Mod 16PB
Unfortunately not Cyd. I have nothing that can open a database of ACCDB type, whether in 2007 or 2010 format.

Can you try to explain why the far simpler expedient of posting the SQL string value found in strSQL at the point of use would be out of the question. I know you said you couldn't, but I have yet to understand why this pretty straightforward action would be in any way difficult.

PS. I know you're not looking to complicate matters for me. I expect you're just confused about something. That tends to make us overlook simple solutions while we hunt around for something to give the equivalent effect. Sometimes you just need to take a step back, relax, and try it again slowly and carefully.
Oct 19 '11 #25
ADezii
8,800 Expert 8TB
@Cyd44:
I do believe that you can use the Save & Publish Option to Convert your DB to 2003.
Oct 19 '11 #26
Cyd44
101 100+
Thanks for your support, this is driving me nuts as the logic defies me. Here is the code I am working with that does not cause error but does not vaildate a record properly:-
Expand|Select|Wrap|Line Numbers
  1.  Private Sub Command32_Click()
  2.  
  3.          Dim strSQL As String
  4.          Dim dteDate As Date
  5.          Dim strRoomNo As String
  6.          Dim dteStartTime As Date
  7.          Dim dteEndTime As Date
  8.  
  9.  
  10.          dteDate = Me!BookStartDate
  11.          strRoomNo = Me!BookLocation
  12.          dteStartTime = Me!BookTime
  13.          dteEndTime = Me!BookEndTime
  14.  
  15.          strSQL = "BookStartDate = #" & dteDate & "# AND BookLocation = '" & strRoomNo & "' AND # " & _
  16.          dteStartTime & "# BETWEEN BookTime AND BookEndTime OR #" & _
  17.          dteEndTime & "# BETWEEN BookTime AND BookEndTime"
  18.  
  19.          MsgBox IIf(DCount("*", "tblRoomsBooking", strSQL) > 0, "NOT Valid" & dteStartTime & BookTime & dteEndTime & BookEndTime & strRoomNo & BookLocation, "Reservation Valid")
  20.  
  21.          MsgBox (strSQL)
  22.  
  23.  
  24. End Sub 
Now when I evaluate the strtSQL (see msg Box) the table field elements appear to contain the same elements as the Me! variables and therefore each time I run the sub i get a NOT Valid result. I donts understand why the table fields are copying the form fields.
Oct 19 '11 #27
Cyd44
101 100+
Thanks Adezii

Yes you are right, it does provide and option but then says 2010 cannot save to earlier version when you try to do it. This lack of backward compatibility might cause a few probs I think
Oct 19 '11 #28
ADezii
8,800 Expert 8TB
@Cyd44:
Kindly Post the Data from about 10 Records in tblRoomsBooking.
Oct 19 '11 #29
NeoPa
32,182 Expert Mod 16PB
@Cyd44
Kindly post the value of strSQL.
Oct 19 '11 #30
Cyd44
101 100+
The Info required is per zip attachment of Word Doc (saved in compatability mode)

Hope you can work out the problem from this.

Many thanks in advance

** Edit **
For the data requested by NeoPa that would be :
Expand|Select|Wrap|Line Numbers
  1. BookStartDate = #19/10/2011# AND BookLocation = 'Room 2' AND # 09:00:00# BETWEEN BookTime AND BookEndTime OR #13:00:00# BETWEEN BookTime AND BookEndTime
Attached Files
File Type: zip Booking attempt Info.zip (7.9 KB, 132 views)
Oct 19 '11 #31
NeoPa
32,182 Expert Mod 16PB
I added your strSQL value in for you to illustrate what I was talking about (I assume I wasn't making myself clear enough before). I did find all (Most at least) that I needed in your attached document. Thank you.

Now you can see the strSQL value though, posted in the [ CODE ] tags, you'll see immediately that there is an extraneous space before the hash (#) preceeding your first time literal :
Expand|Select|Wrap|Line Numbers
  1. # 09:00:00#
This will cause a problem. Running the whole value without parentheses (as you do) may well not, but it is nevertheless advisable to use them for clarity and the surety of avoiding any precedence issues.

I would suggest code similar to :
Expand|Select|Wrap|Line Numbers
  1. strSQL = "([BookStartDate] = #%D#) AND " & 
  2.          "([BookLocation] = '%R') AND " & _
  3.          "([BookTime] < #%E#) AND " & _
  4.          "([BookEndTime] > #%S#)"
  5. strSQL = Replace(strSQL, "%D", Format(dteDate, "m/d/yyyy"))
  6. strSQL = Replace(strSQL, "%R", strRoomNo)
  7. strSQL = Replace(strSQL, "%E", Format(dteStartTime, "H:m:s"))
  8. strSQL = Replace(strSQL, "%S", Format(dteEndTime, "H:m:s"))
I would then suggest trying out the form with values of :
Expand|Select|Wrap|Line Numbers
  1. Me.BookStartDate = 3/10/2011
  2. Me.BookLocation  = "Room 1"
  3. Me.BookTime      = 08:00:00
  4. Me.BookEndTime   = 13:00:00
Oct 19 '11 #32
Cyd44
101 100+
Hi NeoPa
Many thanks, I have substituted you code and it works at last. However, the result on entering your sugested booking came back as valid (It should have been Invalid !) Have tried other dates and appear to be getting valid for them. I am so pleased howver to have the code work. The rest I think is down to logic.
Oct 19 '11 #33
NeoPa
32,182 Expert Mod 16PB
I'm confused. The code is right in front of me and I fail to see how the result could have been "Valid". Can you post the value of strSQL when you entered those values for me so I can get a clue as to what may be wrong. The contents shown by the MsgBox call, but Copy/Pasted to avoid the possibility of any minor inaccuracies please.

I'm pleased it represents progress of course, but I cannot accept the logic is wrong without seeing why it happened. I've used this and such like it many times without any failures.
Oct 19 '11 #34
Cyd44
101 100+
Just a quick one......do we not need to include the OR statement as well, in order to ckeck the BookEndTime does not end before the Start of another Booking (BookTime)?
Oct 19 '11 #35
NeoPa
32,182 Expert Mod 16PB
I thought you'd actually posted my requested srtSQL string :-( (Just kidding - I expect we simply cross-posted.) Please try to ASAP though.

In answer to your question though, No. The OR effect is handled by each record being checked past the SQL individually. Any record that matches all the criteria (as ANDs are used throughout) causes the value returned by DCount() to be incremented. Does that make sense and answer your question?
Oct 19 '11 #36
Cyd44
101 100+
Expand|Select|Wrap|Line Numbers
  1. ---------------------------
  2. Microsoft Access
  3. ---------------------------
  4. Reservation Valid08:00:0008:00:0013:00:0013:00:00Room 1Room 1
  5. ---------------------------
  6. OK   
  7. ---------------------------
  8. ([BookStartDate] = #10/4/2011#) AND ([BookLocation] = 'Room 1') AND ([BookTime] < #8:0:0#) AND ([BookEndTime] > #13:0:0#)
These are the the results I see

Funny thing is also, when I look at the table after making the query, the form has added the unchecked booking to the table even though there is no DoCmd Save
Oct 19 '11 #37
Cyd44
101 100+
Expand|Select|Wrap|Line Numbers
  1. ([BookStartDate] = #10/3/2011#) AND ([BookLocation] = 'Room 1') AND ([BookTime] < #8:0:0#) AND ([BookEndTime] > #13:0:0#)
Cut and pasted wrong this is the right cut and paste
Oct 19 '11 #38
NeoPa
32,182 Expert Mod 16PB
The date used is different from the date I requested you test.

Cyd44:
Funny thing is also, when I look at the table after making the query, the form has added the unchecked booking to the table even though there is no DoCmd Save
There is nothing in your code to stop this. You should expect it to be saved unless you stop it.

NB. DoCmd.Save will only save the design of the object (in this case form) rather than any record currently selected. Furthermore, records are saved automatically whenever you move away from them.
Oct 19 '11 #39
NeoPa
32,182 Expert Mod 16PB
After your latest update I noticed the other problem, which is frankly quite a fundamental one, with my code suggestion. The fixed code is below. Notice the differences in the bottom two lines from the previous version in post #32. Apologies for the carelessness :

Expand|Select|Wrap|Line Numbers
  1. strSQL = "([BookStartDate] = #%D#) AND " & 
  2.          "([BookLocation] = '%R') AND " & _
  3.          "([BookTime] < #%E#) AND " & _
  4.          "([BookEndTime] > #%S#)"
  5. strSQL = Replace(strSQL, "%D", Format(dteDate, "m/d/yyyy"))
  6. strSQL = Replace(strSQL, "%R", strRoomNo)
  7. strSQL = Replace(strSQL, "%E", Format(dteEndTime, "H:m:s"))
  8. strSQL = Replace(strSQL, "%S", Format(dteStartTime, "H:m:s"))
PS. It's lucky that was picked up, as that would have been a quite serious flaw in your program if left as was.
Oct 20 '11 #40
Cyd44
101 100+
You are an absolute Star and I will buy you a drink if we can meet up sometime.

Have been pulling my hair out over this. Now the logic is sorted I can sleep well tonight.

Many many thanks my friend
Oct 20 '11 #41
NeoPa
32,182 Expert Mod 16PB
You're welcome of course, but I can't take all the credit. ADezii took you a long way on your path too.

I'm sure we're both very pleased you managed to end up with a workable solution.
Oct 20 '11 #42
Cyd44
101 100+
Yes I forgot to mention ADezii, so many thanks to both of you.
Oct 20 '11 #43
ADezii
8,800 Expert 8TB
@Cyd44:
You are quite welcome, and a lot of the credit goes with you for hanging in there. NeoPa definitely deserves the game ball, and I'll gladly take an assist with him anytime.
Oct 20 '11 #44

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

1 post views Thread by Ray Gardener | last post: by
1 post views Thread by Kurt Krueckeberg | last post: by
6 posts views Thread by Michelle S | last post: by
1 post views Thread by Chris Kettenbach | last post: by
73 posts views Thread by JoeC | last post: by
13 posts views Thread by Jordan | last post: by
30 posts views Thread by galiorenye | last post: by
reply views Thread by Israel Carr | last post: by
2 posts views Thread by abueno | last post: by
reply views Thread by zhoujie | last post: by
1 post views Thread by haryvincent176 | last post: by
1 post views Thread by Marylou17 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.