The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Here is a criteria how I open my recordset:

criteria = "SELECT [Date], [Time], " + MyField + " FROM " + MyDB + " WHERE Time >='" + StartTime + "' AND Time <='" + EndTime + "' AND Date =#" + MyDate + "#"

I would like to add there one variable called Step.

I mean that if there is field in my database for every 1 minutes and I wanna open recordset only for every 15 minutes (Step is 15 minutes).

Is this even possible?? If it is, would you give me an example!

Thanks in advance!

criteria = "SELECT [Date], [Time], " + MyField + " FROM " + MyDB + " WHERE Time >='" + StartTime + "' AND Time <='" + EndTime + "' AND Date =#" + MyDate + "#"

I would like to add there one variable called Step.

I mean that if there is field in my database for every 1 minutes and I wanna open recordset only for every 15 minutes (Step is 15 minutes).

Is this even possible?? If it is, would you give me an example!

Thanks in advance!

Recordset takes these datas now (if Starttime is 12:00, EndTime is 17:00 and Date is 24/6).

Date Time MyField

24.6 12:00 .....

24.6 12:01 .....

24.6 12:02 .....

24.6 17:00 .....

But I wanna take only these datas (if Step is 15):

Date Time MyField

24.6 12:00 .....

24.6 12:15 .....

24.6 12:30 .....

24.6 12:45 .....

24.6 17:00 .....

If this isn't possible, any other suggestions?

How I put it if I want that Step variable there:

AND (((datepart("n",Time)) mod " + Step + ") = 0), this didn't work?

This didn't work also:

(((datepart("n",Time)) mod 120) = 0)

Could it be something like:

(((datepart("h",Time)) mod 2) = 0)

Here is also one example how I want that recordset to open:

Date Time MyField

25.6 12:00 .....

26.6 12:00 .....

27.6 12:00 .....

28.6 12:00 .....

In my program there is a combobox where user can choose that Step-variable (10 minutes, 30 minutes, 1 hour, 1 day, 1 week)

AND (((datepart("n",Time)) mod " + Step + ") = 0)

I don't understand why this don't work. That Step variable is Variant.

1. syntax for "n" should be 'n'(my fault i generated this in access)

2. If datediff or datepart = 0 then then the mod will always be crop up, since the bigger the number the more chance something = to 0, so datepart will return all times with XX:00 and datediff will return all times were for eg (12:00 = 12:00)

3. If datediff is big enough, then mulitple false values will will be a factor, and hence mod = 0

the best i can do is

Sqlstr = "SELECT * From Table1 Where (Table1.Date = Date) And (Table1.Time >= #12:00:00 PM#) And (Table1.Time <= #5:00:00 PM#)AND (((Datediff('n',#" & mydate & " " & starttime & "#,Table1.time) ) mod " & step & ") = 0)"

where step = number of minutes in step eg. 1440 for one day

You may need to combine the table1 time and date to avoid erorrs as stated in 3. and 2.

Now that "... mod "& step &"..." works also.

I didn't quite understand your second and third errors.

Thanks!

so if you ask for the minutes datepart of 12:00 = 0 and, 0 mod 120 = 0, so the database thinks this record is ok and thus passes it back to your VB recordset

This also happens with datediff function if you give two times, if they are the same eg 12:00 and 12:00 then even though they have different dates and thus are different by n* 1440 minutes, the function knows nothing about their dates and just thinks they are on the same day, so you get 0 and the same problem as above.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.

yyyy Year

q Quarter

m Month

y Day of year

d Day

w Weekday

ww Week

h Hour

n Minute

s Second

or you could use the datediff function and count the minutes between a start date/time and the time field like

AND ((DateDiff("n", #12:00#, time) ) mod 1440 = 0)

the 1440 here is == 24 hrs

hope this is enough