Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default How to get current information regarding a fresh query refresh?

Hello,

I've created a chart that is based on a msquery result. I use a dropdown
box to choose what I want to show on the chart and the macro ends with a
refresh of the msquery. I want to further adjust the minimum value of the
x-axis of the chart based on the msquery result. My code is as follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText = "SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." & Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the minimumscale to
be equal to the rounddown of the min value of column D. However, when the
code executes, it ALWAYS uses the result of the previous msquery refresh.
It is very baffling. How can I get the min value of the FRESH refresh of
the msquery?

Herbert


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default How to get current information regarding a fresh query refresh?

Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a dropdown
box to choose what I want to show on the chart and the macro ends with a
refresh of the msquery. I want to further adjust the minimum value of the
x-axis of the chart based on the msquery result. My code is as follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText = "SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." & Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the minimumscale to
be equal to the rounddown of the min value of column D. However, when the
code executes, it ALWAYS uses the result of the previous msquery refresh.
It is very baffling. How can I get the min value of the FRESH refresh of
the msquery?

Herbert



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default How to get current information regarding a fresh query refresh?

I've also thought about that but I have no idea how I can make sure that the
query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student" ...
Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a dropdown
box to choose what I want to show on the chart and the macro ends with a
refresh of the msquery. I want to further adjust the minimum value of
the
x-axis of the chart based on the msquery result. My code is as follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText =
"SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." &
Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the minimumscale
to
be equal to the rounddown of the min value of column D. However, when
the
code executes, it ALWAYS uses the result of the previous msquery refresh.
It is very baffling. How can I get the min value of the FRESH refresh of
the msquery?

Herbert





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,494
Default How to get current information regarding a fresh query refresh?

take a look here
http://www.ozgrid.com/forum/showthread.php?t=50961


--


Gary


"Herbert Chan" wrote in message
...
I've also thought about that but I have no idea how I can make sure that the
query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student"
...
Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a dropdown
box to choose what I want to show on the chart and the macro ends with a
refresh of the msquery. I want to further adjust the minimum value of the
x-axis of the chart based on the msquery result. My code is as follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText = "SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." & Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the minimumscale to
be equal to the rounddown of the min value of column D. However, when the
code executes, it ALWAYS uses the result of the previous msquery refresh.
It is very baffling. How can I get the min value of the FRESH refresh of
the msquery?

Herbert







  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default How to get current information regarding a fresh query refresh?

I've tried and it seems that odbcconnection does not support refresh
(false). I get an error.

Any other workaround please?

Herbert

"Gary Keramidas" <GKeramidasATmsn.com bl...
take a look here
http://www.ozgrid.com/forum/showthread.php?t=50961


--


Gary


"Herbert Chan" wrote in message
...
I've also thought about that but I have no idea how I can make sure that
the query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student" ...
Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a
dropdown
box to choose what I want to show on the chart and the macro ends with
a
refresh of the msquery. I want to further adjust the minimum value of
the
x-axis of the chart based on the msquery result. My code is as
follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText =
"SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." &
Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the
minimumscale to
be equal to the rounddown of the min value of column D. However, when
the
code executes, it ALWAYS uses the result of the previous msquery
refresh.
It is very baffling. How can I get the min value of the FRESH refresh
of
the msquery?

Herbert











  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default How to get current information regarding a fresh query refresh

You can try this as an experiment. Say some process (human or query) is
going to refresh a table of numbers from B9 thru B20 and we want to "pause"
the macro until the refresh occurs.

1. Before the query, we set B20 to "junk"
2. Before using the query results, we make sure "junk" is no longer there

Sub herb()
Range("B20").Value = "junk"
'
' do the query here
'
While Range("B20").Value = "junk"
DoEvents
Wend
MsgBox ("the new value is: " & Range("B20").Value)
End Sub

The DoEvents loop "shares" focus between the macro and the worksheet. It is
the manual equivalent to a change event.

The reason I said "experiment" is that I know that a user can change B20 in
this "shared" state. I don't know if the query can do the same thing.

Let us know your results.
--
Gary''s Student - gsnu200804


"Herbert Chan" wrote:

I've also thought about that but I have no idea how I can make sure that the
query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student" ...
Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a dropdown
box to choose what I want to show on the chart and the macro ends with a
refresh of the msquery. I want to further adjust the minimum value of
the
x-axis of the chart based on the msquery result. My code is as follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText =
"SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." &
Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") & "#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the minimumscale
to
be equal to the rounddown of the min value of column D. However, when
the
code executes, it ALWAYS uses the result of the previous msquery refresh.
It is very baffling. How can I get the min value of the FRESH refresh of
the msquery?

Herbert






  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default How to get current information regarding a fresh query refresh

Hello,

The following still doesn't work.

But I've just checked the property of the ODBCConnection through a dialog
box. It turns out it can be set not to perform the query in background.
After this has been set, I now get what I want.

Thank you for your help.

Herbert

"Gary''s Student" ...
You can try this as an experiment. Say some process (human or query) is
going to refresh a table of numbers from B9 thru B20 and we want to
"pause"
the macro until the refresh occurs.

1. Before the query, we set B20 to "junk"
2. Before using the query results, we make sure "junk" is no longer there

Sub herb()
Range("B20").Value = "junk"
'
' do the query here
'
While Range("B20").Value = "junk"
DoEvents
Wend
MsgBox ("the new value is: " & Range("B20").Value)
End Sub

The DoEvents loop "shares" focus between the macro and the worksheet. It
is
the manual equivalent to a change event.

The reason I said "experiment" is that I know that a user can change B20
in
this "shared" state. I don't know if the query can do the same thing.

Let us know your results.
--
Gary''s Student - gsnu200804


"Herbert Chan" wrote:

I've also thought about that but I have no idea how I can make sure that
the
query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student" ...

Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a
dropdown
box to choose what I want to show on the chart and the macro ends with
a
refresh of the msquery. I want to further adjust the minimum value of
the
x-axis of the chart based on the msquery result. My code is as
follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText =
"SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." &
Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") &
"#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the
minimumscale
to
be equal to the rounddown of the min value of column D. However, when
the
code executes, it ALWAYS uses the result of the previous msquery
refresh.
It is very baffling. How can I get the min value of the FRESH refresh
of
the msquery?

Herbert








  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default How to get current information regarding a fresh query refresh

Very good.
--
Gary''s Student - gsnu200804


"Herbert Chan" wrote:

Hello,

The following still doesn't work.

But I've just checked the property of the ODBCConnection through a dialog
box. It turns out it can be set not to perform the query in background.
After this has been set, I now get what I want.

Thank you for your help.

Herbert

"Gary''s Student" ...
You can try this as an experiment. Say some process (human or query) is
going to refresh a table of numbers from B9 thru B20 and we want to
"pause"
the macro until the refresh occurs.

1. Before the query, we set B20 to "junk"
2. Before using the query results, we make sure "junk" is no longer there

Sub herb()
Range("B20").Value = "junk"
'
' do the query here
'
While Range("B20").Value = "junk"
DoEvents
Wend
MsgBox ("the new value is: " & Range("B20").Value)
End Sub

The DoEvents loop "shares" focus between the macro and the worksheet. It
is
the manual equivalent to a change event.

The reason I said "experiment" is that I know that a user can change B20
in
this "shared" state. I don't know if the query can do the same thing.

Let us know your results.
--
Gary''s Student - gsnu200804


"Herbert Chan" wrote:

I've also thought about that but I have no idea how I can make sure that
the
query is completed before the next code of calculation is done.

Anyone can give specific advice?

Herbert

"Gary''s Student" ...

Make sure the query completes before calculating the MIN.
--
Gary''s Student - gsnu2007k


"Herbert Chan" wrote:

Hello,

I've created a chart that is based on a msquery result. I use a
dropdown
box to choose what I want to show on the chart and the macro ends with
a
refresh of the msquery. I want to further adjust the minimum value of
the
x-axis of the chart based on the msquery result. My code is as
follows:

Sub FundChange()
Dim Rng As Range, rngD As Range, cht As Chart, rngScale As Range
Set Rng = ActiveWorkbook.Worksheets("MPFData").Range("K1")
Set rngD = ActiveWorkbook.Worksheets("MPFData").Range("M1")
Set rngScale = ActiveWorkbook.Worksheets("MPFData").Range("M3")
Set cht = ActiveWorkbook.Charts(1)
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.CommandText =
"SELECT
Max(MPFChart.Date) AS CloseDate, First(MPFChart." & Rng.Value & ") AS
[Open], Max(MPFChart." & Rng.Value & ") AS High, Min(MPFChart." &
Rng.Value
& ") AS Low, Last(MPFChart." & Rng.Value & ") AS [Close] FROM MPFChart
MPFChart WHERE MPFChart.Date #" & Format(rngD.Value, "m/d/yyyy") &
"#
GROUP BY Format(Date, 'yyyy' & 'ww') ORDER BY Max(MPFChart.Date);"
ActiveWorkbook.Connections("MPFChart").ODBCConnect ion.Refresh
cht.Axes(xlValue).MinimumScale =
WorksheetFunction.RoundDown(WorksheetFunction.Min( ActiveWorkbook.Worksheets("MPFData").Range("D:D")) ,
0)
End Sub

As shown on the above last line of code, I want to make the
minimumscale
to
be equal to the rounddown of the min value of column D. However, when
the
code executes, it ALWAYS uses the result of the previous msquery
refresh.
It is very baffling. How can I get the min value of the FRESH refresh
of
the msquery?

Herbert









Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How can I 'Enable Automatic Refresh' for Query Refresh by default Anand Deshpande Setting up and Configuration of Excel 0 December 10th 06 04:47 AM
Query Refresh-Enable Automatic Refresh Dialogue Box Terri Excel Discussion (Misc queries) 0 May 6th 05 08:21 PM
Timing of automatic query refresh and macro pivot table refresh dutty Excel Programming 2 December 1st 04 07:19 PM
Excel does not close from VB!! (when i refresh Refresh query with BackgroundQuery:=False) Anant[_2_] Excel Programming 1 August 6th 03 04:22 AM
Web Query fail to Refresh All but individual refresh is ok Karyn Mak Excel Programming 2 July 17th 03 09:30 AM


All times are GMT +1. The time now is 02:09 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"