Trouble with Multi-Threading (VC++ opening Access DataBase)

Hi all,

I have an application which I did not write, but I want to improve it's
performance (Obviously I do have the code).

First of all I am not a database expert so my terms may not be exact, I
appologize :-))

The application starts by reading a lot of data from the database tree
via ODBC (MFC + VC++ 6.0).
This process takes a few minuets, and I have more than one CPU, so
obviously I was thinking of multi-threading.
The point is that once I Multi-threaded the code, the program stuck
during startup. Looking with a debugger, I saw that all threads are
hanging while reading the DataBase. A code example is attached at the
end.

The problem persists even if I open the program twice (with the
original code !!), so it looks to me that the Databae/ODBC can not be
opened twice.
I thing that the problem is that I need to open the DataBase with
multiple read permision. How do I do that ?




More details regarding how do we load the data :
We read one table, the data of this table (Actually it's one of the
columns ) leads to read more tables, which leads to read more tables.
The whole code looks like million loops of the following example :
	char achFilter[100];
	CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);


	sprintf(achFilter,"lBlockID=%d", m_lId);
	blockSpecSet.m_strFilter = (CString)achFilter;

	TRY
	{
		if (blockSpecSet.Open())
		{
			while (!blockSpecSet.IsEOF())
			{
				m_SpecificsArray.Add((CSpecific*) new CSpecific(
					blockSpecSet.m_strFieldName,
					blockSpecSet.m_strFieldDescription,
					blockSpecSet.m_dValue));

				m_nNumOfSpecifics++;

				blockSpecSet.MoveNext();
			} // while
		} // if	blockSpecSet.Open()
	} // TRY
	CATCH(CDBException, e)
	{
		AfxMessageBox(e->m_strError);
	}
	END_CATCH
	blockSpecSet.Close();

Last thing is the following definition:
    CDatabase*  m_pDB;                   // Pointer to the Simulator
database. (File_DB.mdb)


Thanks
Maurice

0
zmau (3)
7/3/2005 7:21:52 PM
vc.mfc 33608 articles. 0 followers. Follow

5 Replies
425 Views

Similar Articles

[PageSpeed] 0

It sounds like you've run into a deadlock situation.  The program is 
probably not designed with multi-threading in mind, and likely makes 
assumptions about having exclusive access that would not be true in a MT 
design.

In any case, what evidence do you have that multi-threading would 
improve performance?  If your bottleneck is in hard drive reading, then 
having two or more threads pounding on the drive with read requests is 
not likely to speed it up.  In fact, it may slow it down.

If I were you, I'd be looking for inefficiencies in queries and 
processing logic, rather than doubling or tripling an inefficient 
workforce that steps on each others' toes.

In article <1120418512.337534.190190@g43g2000cwa.googlegroups.com>, 
zmau@UltimateEmail.com says...
> Hi all,
> 
> I have an application which I did not write, but I want to improve it's
> performance (Obviously I do have the code).
> 
> First of all I am not a database expert so my terms may not be exact, I
> appologize :-))
> 
> The application starts by reading a lot of data from the database tree
> via ODBC (MFC + VC++ 6.0).
> This process takes a few minuets, and I have more than one CPU, so
> obviously I was thinking of multi-threading.
> The point is that once I Multi-threaded the code, the program stuck
> during startup. Looking with a debugger, I saw that all threads are
> hanging while reading the DataBase. A code example is attached at the
> end.
> 
> The problem persists even if I open the program twice (with the
> original code !!), so it looks to me that the Databae/ODBC can not be
> opened twice.
> I thing that the problem is that I need to open the DataBase with
> multiple read permision. How do I do that ?
> 
> 
> 
> 
> More details regarding how do we load the data :
> We read one table, the data of this table (Actually it's one of the
> columns ) leads to read more tables, which leads to read more tables.
> The whole code looks like million loops of the following example :
> 	char achFilter[100];
> 	CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);
> 
> 
> 	sprintf(achFilter,"lBlockID=%d", m_lId);
> 	blockSpecSet.m_strFilter = (CString)achFilter;
> 
> 	TRY
> 	{
> 		if (blockSpecSet.Open())
> 		{
> 			while (!blockSpecSet.IsEOF())
> 			{
> 				m_SpecificsArray.Add((CSpecific*) new CSpecific(
> 					blockSpecSet.m_strFieldName,
> 					blockSpecSet.m_strFieldDescription,
> 					blockSpecSet.m_dValue));
> 
> 				m_nNumOfSpecifics++;
> 
0
7/3/2005 9:44:06 PM
I second Scott.

Rule #1 Make your app correct first! Bug free, Reliable, Ergonomic, and 
Robust.
Rule #2 don't optimize code until you know it needs optimising
Rule #3 find out what needs optimising before modifying any code.
Rule #4 Benchmark optimisations as you go and Verify the results against 
Rule#1.
(OK I just made up those rules... but they are sensible)

To do #3, compile a release build with the profiler and run it under the 
profiler. The profiler output when read correctly will tell you what needs 
opimising.

My bets are that the optimiser will tell you that most code execution Time 
will be in the Open (and subordinate functions) and MoveNext functions. 
These indicate that the best place to start are at the Database then Network 
level (if there is a network in between).

If the DBMS were SQL Server I would be recommending to use the SQL Server 
Profiler, and Query Analyzer as they will tell you What is being run, IO's 
(reads and Writes), CPU usage and Duration. Unfortunately MS Access does not 
come with equivalent tools so the Query optimisation there will be up to you 
and Benchmarking. It would be prudent to wire up your code with performance 
metrics so that you can use the existing program with minimal modification 
to show you how well your dbms optimisation efforts are going. For dbms 
optimisation, step 1 check indexes (hint the lBlockID column), then check 
you are only returning the columns needed, that joins are correct, that 
there are correct indexes on the joins, that the tables are correctly 
designed and so on and on... I would suggest taking this side of the issue 
over to one of the MS Access user groups.

IMHO, db access optimisation can result in substantial improvements in 
performance (orders of magnitude) beyond what could ever be achieved in 
code - only once these improvement options are exhausted completely should 
code optimisation be contemplated, but remember if the end result in code 
optimisation is reducing a User Interface action from 10ms to 8ms you are 
not investing your time wisely. I saw one person (I have only come across 1 
that stupid :) hand code optimising VB code to achieve sub millisecond 
improvements on button clicks .... when asked why was he doing that the 
answer "To make the program run faster!".

You say "takes a few minuets". How many records is it loading? If it is less 
than 1000 then there is a major issue. If you are loading over say 5000 
records (there are still major issues), then what practical use is that many 
records to the user? This is an important question as far too often people 
load way way to much data into lists beyond what a user can reasonably be 
expected to use at one time. If they legitimately need a "lot" then consider 
1 or perhaps 2 screens full at a time with a Next Page function. IE look at 
the design of the system and assess / ask the users what they would prefer 
(Rule #1 - Ergonomics).

- Tim





<zmau@UltimateEmail.com> wrote in message 
news:1120418512.337534.190190@g43g2000cwa.googlegroups.com...
> Hi all,
>
> I have an application which I did not write, but I want to improve it's
> performance (Obviously I do have the code).
>
> First of all I am not a database expert so my terms may not be exact, I
> appologize :-))
>
> The application starts by reading a lot of data from the database tree
> via ODBC (MFC + VC++ 6.0).
> This process takes a few minuets, and I have more than one CPU, so
> obviously I was thinking of multi-threading.
> The point is that once I Multi-threaded the code, the program stuck
> during startup. Looking with a debugger, I saw that all threads are
> hanging while reading the DataBase. A code example is attached at the
> end.
>
> The problem persists even if I open the program twice (with the
> original code !!), so it looks to me that the Databae/ODBC can not be
> opened twice.
> I thing that the problem is that I need to open the DataBase with
> multiple read permision. How do I do that ?
>
>
>
>
> More details regarding how do we load the data :
> We read one table, the data of this table (Actually it's one of the
> columns ) leads to read more tables, which leads to read more tables.
> The whole code looks like million loops of the following example :
> char achFilter[100];
> CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);
>
>
> sprintf(achFilter,"lBlockID=%d", m_lId);
> blockSpecSet.m_strFilter = (CString)achFilter;
>
> TRY
> {
> if (blockSpecSet.Open())
> {
> while (!blockSpecSet.IsEOF())
> {
> m_SpecificsArray.Add((CSpecific*) new CSpecific(
> blockSpecSet.m_strFieldName,
> blockSpecSet.m_strFieldDescription,
> blockSpecSet.m_dValue));
>
> m_nNumOfSpecifics++;
>
> blockSpecSet.MoveNext();
> } // while
> } // if blockSpecSet.Open()
> } // TRY
> CATCH(CDBException, e)
> {
> AfxMessageBox(e->m_strError);
> }
> END_CATCH
> blockSpecSet.Close();
>
> Last thing is the following definition:
>    CDatabase*  m_pDB;                   // Pointer to the Simulator
> database. (File_DB.mdb)
>
>
> Thanks
> Maurice
> 


0
Tim
7/4/2005 2:18:39 AM
Actually, those rules are pretty old, and if you "just made them up", you are showing that
you are thinking about the problems correctly (the points you make are simply good
engineering practice, and actually should be discoverable by anyone; what is frightening
is the number of people who say "I know where the problems are in my program, and I'm
going to spend weeks optimizing that code" only to discover that it generates a 0.2%
overall performance improvement). I spent about 15 years being the "resident expert" on
performance measurement, both at CMU and later in our small company. I learned several
things:

Rule 1 is violated when "optimizations" generate wrong results (the Unix philosophy: it
doesn't matter if it's right as long as it is small and fast. And Microsfot does this when
they misroute superclass calls to use Default() instead of actually calling DefWindowProc
or the actual superclass function)

Rule 2 is violated because NO programmer I've ever met (myself included!) knows where the
time is *actually* going

Rule 3 is violated by people who have not measured their code

Rule 4 is largely ignored because once you've got something running fast, it must have 
solved the problem, so why would you waste more time verifying you've done the right thing
(of course, it means you may have *reduced* performance while believing the illusion
you've *increased* performance, but without the all-important test you suggest, you don't
know...)

Example: I had just written what was one of the world's fastest and smartest
low-fragmentation storage allocators. This allocator was so good that we were thinking of
having the equivalent of malloc() be compiled as a compiler intrinsic because we could
allocate faster inline than by calling a subroutine (the subroutine call overhead was
comparable to the allocation time) [If anyone cares, the now-out-of-print book "IDL: The
Language and Its Implementation" gives the details]. I was then confronted by one of the
product groups who had measured their performance and found that the "hot spot" was the
storage allocator.

Of course, the problem was that they were using the crappy Unix "profiler" that merely
sampled the program counter every 1/60 of a second. So it showed most of the execution was
taking place in the allocator. So I reached in with the debugger and turned on the
performance analysis feature (which was in the debug version of the allocator). I found
that the reason I was the "hot spot" was that they called the allocator over 4,000,000
times! The problem was one of doing dynamic allocation under all conditions where it was
rarely needed. 

Program architecture will kill you before anything else does. A page fault is six orders
of magnitude slower than an L1 cache miss that is satisfied by the L2 cache. 

Your suggestion for profiling is the most important step of the process: if you don't know
where the time is going, you don't know what to optimize.

Now, as a side issue, there are several dimensions of optimization. For example,
optimizing user responsiveness (not having an hourglass up for an extended period) is
actually a Good Thing, and spinning off a thread to handle communication so the GUI isn't
blocked optimizes the "user experience", even though an absolute measure of time
utliization might suggest it actually increases overhead. Doing some complex computations
to avoid flicker-on-update can be really important; even though the total throughput
suffers, the quality of the user experience is enhanced. So it is important to understand
that in modern systems, optimization is not just "running faster". There's a whole lot
more that goes into the equation. And guess what: your rules apply equally well in
evaluating the user experience. Make the app correct. Don't optimize the user experience
until you know it is a problem. Find out what the problems are, and after apparently
fixing them, make sure you have actually fixed them.
				joe
 
On Mon, 4 Jul 2005 14:18:39 +1200, "Tim" <Tim@NoSpam> wrote:

>I second Scott.
>
>Rule #1 Make your app correct first! Bug free, Reliable, Ergonomic, and 
>Robust.
>Rule #2 don't optimize code until you know it needs optimising
>Rule #3 find out what needs optimising before modifying any code.
>Rule #4 Benchmark optimisations as you go and Verify the results against 
>Rule#1.
>(OK I just made up those rules... but they are sensible)
>
>To do #3, compile a release build with the profiler and run it under the 
>profiler. The profiler output when read correctly will tell you what needs 
>opimising.
>
>My bets are that the optimiser will tell you that most code execution Time 
>will be in the Open (and subordinate functions) and MoveNext functions. 
>These indicate that the best place to start are at the Database then Network 
>level (if there is a network in between).
>
>If the DBMS were SQL Server I would be recommending to use the SQL Server 
>Profiler, and Query Analyzer as they will tell you What is being run, IO's 
>(reads and Writes), CPU usage and Duration. Unfortunately MS Access does not 
>come with equivalent tools so the Query optimisation there will be up to you 
>and Benchmarking. It would be prudent to wire up your code with performance 
>metrics so that you can use the existing program with minimal modification 
>to show you how well your dbms optimisation efforts are going. For dbms 
>optimisation, step 1 check indexes (hint the lBlockID column), then check 
>you are only returning the columns needed, that joins are correct, that 
>there are correct indexes on the joins, that the tables are correctly 
>designed and so on and on... I would suggest taking this side of the issue 
>over to one of the MS Access user groups.
>
>IMHO, db access optimisation can result in substantial improvements in 
>performance (orders of magnitude) beyond what could ever be achieved in 
>code - only once these improvement options are exhausted completely should 
>code optimisation be contemplated, but remember if the end result in code 
>optimisation is reducing a User Interface action from 10ms to 8ms you are 
>not investing your time wisely. I saw one person (I have only come across 1 
>that stupid :) hand code optimising VB code to achieve sub millisecond 
>improvements on button clicks .... when asked why was he doing that the 
>answer "To make the program run faster!".
>
>You say "takes a few minuets". How many records is it loading? If it is less 
>than 1000 then there is a major issue. If you are loading over say 5000 
>records (there are still major issues), then what practical use is that many 
>records to the user? This is an important question as far too often people 
>load way way to much data into lists beyond what a user can reasonably be 
>expected to use at one time. If they legitimately need a "lot" then consider 
>1 or perhaps 2 screens full at a time with a Next Page function. IE look at 
>the design of the system and assess / ask the users what they would prefer 
>(Rule #1 - Ergonomics).
>
>- Tim
>
>
>
>
>
><zmau@UltimateEmail.com> wrote in message 
>news:1120418512.337534.190190@g43g2000cwa.googlegroups.com...
>> Hi all,
>>
>> I have an application which I did not write, but I want to improve it's
>> performance (Obviously I do have the code).
>>
>> First of all I am not a database expert so my terms may not be exact, I
>> appologize :-))
>>
>> The application starts by reading a lot of data from the database tree
>> via ODBC (MFC + VC++ 6.0).
>> This process takes a few minuets, and I have more than one CPU, so
>> obviously I was thinking of multi-threading.
>> The point is that once I Multi-threaded the code, the program stuck
>> during startup. Looking with a debugger, I saw that all threads are
>> hanging while reading the DataBase. A code example is attached at the
>> end.
>>
>> The problem persists even if I open the program twice (with the
>> original code !!), so it looks to me that the Databae/ODBC can not be
>> opened twice.
>> I thing that the problem is that I need to open the DataBase with
>> multiple read permision. How do I do that ?
>>
>>
>>
>>
>> More details regarding how do we load the data :
>> We read one table, the data of this table (Actually it's one of the
>> columns ) leads to read more tables, which leads to read more tables.
>> The whole code looks like million loops of the following example :
>> char achFilter[100];
>> CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);
>>
>>
>> sprintf(achFilter,"lBlockID=%d", m_lId);
>> blockSpecSet.m_strFilter = (CString)achFilter;
>>
>> TRY
>> {
>> if (blockSpecSet.Open())
>> {
>> while (!blockSpecSet.IsEOF())
>> {
>> m_SpecificsArray.Add((CSpecific*) new CSpecific(
>> blockSpecSet.m_strFieldName,
>> blockSpecSet.m_strFieldDescription,
>> blockSpecSet.m_dValue));
>>
>> m_nNumOfSpecifics++;
>>
>> blockSpecSet.MoveNext();
>> } // while
>> } // if blockSpecSet.Open()
>> } // TRY
>> CATCH(CDBException, e)
>> {
>> AfxMessageBox(e->m_strError);
>> }
>> END_CATCH
>> blockSpecSet.Close();
>>
>> Last thing is the following definition:
>>    CDatabase*  m_pDB;                   // Pointer to the Simulator
>> database. (File_DB.mdb)
>>
>>
>> Thanks
>> Maurice
>> 
>

Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15975)
7/4/2005 3:55:26 AM
In addition to all the other fine advice in this thread, consider that 'add'
function can bog down when the array gets large.  You can use the 'SetSize'
function to allocate a large array intially, and grow it by larger chunks.

There was a recent thread on this topic:

http://groups-beta.google.com/group/microsoft.public.vc.mfc/browse_frm/threa
d/f385cd485257d479/957dd9fc97437f32#957dd9fc97437f32

-or-

http://tinyurl.com/d9q3p

<zmau@UltimateEmail.com> wrote in message
news:1120418512.337534.190190@g43g2000cwa.googlegroups.com...
> Hi all,
>
> I have an application which I did not write, but I want to improve it's
> performance (Obviously I do have the code).
>
> First of all I am not a database expert so my terms may not be exact, I
> appologize :-))
>
> The application starts by reading a lot of data from the database tree
> via ODBC (MFC + VC++ 6.0).
> This process takes a few minuets, and I have more than one CPU, so
> obviously I was thinking of multi-threading.
> The point is that once I Multi-threaded the code, the program stuck
> during startup. Looking with a debugger, I saw that all threads are
> hanging while reading the DataBase. A code example is attached at the
> end.
>
> The problem persists even if I open the program twice (with the
> original code !!), so it looks to me that the Databae/ODBC can not be
> opened twice.
> I thing that the problem is that I need to open the DataBase with
> multiple read permision. How do I do that ?
>
>
>
>
> More details regarding how do we load the data :
> We read one table, the data of this table (Actually it's one of the
> columns ) leads to read more tables, which leads to read more tables.
> The whole code looks like million loops of the following example :
> char achFilter[100];
> CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);
>
>
> sprintf(achFilter,"lBlockID=%d", m_lId);
> blockSpecSet.m_strFilter = (CString)achFilter;
>
> TRY
> {
> if (blockSpecSet.Open())
> {
> while (!blockSpecSet.IsEOF())
> {
> m_SpecificsArray.Add((CSpecific*) new CSpecific(
> blockSpecSet.m_strFieldName,
> blockSpecSet.m_strFieldDescription,
> blockSpecSet.m_dValue));
>
> m_nNumOfSpecifics++;
>
> blockSpecSet.MoveNext();
> } // while
> } // if blockSpecSet.Open()
> } // TRY
> CATCH(CDBException, e)
> {
> AfxMessageBox(e->m_strError);
> }
> END_CATCH
> blockSpecSet.Close();
>
> Last thing is the following definition:
>     CDatabase*  m_pDB;                   // Pointer to the Simulator
> database. (File_DB.mdb)
>
>
> Thanks
> Maurice
>


0
billt61 (145)
7/4/2005 4:14:21 AM
Note in a previous thread I have pointed out that Add after SetSize(0, n) for large values
of n does not "bog down" as the array gets large. Add uses SetAtGrow, and thus the use of
SetSize with a large grow amount minimizes the overheads. See the thread a couple days ago
"ObArray with huge number of elements"
					joe
On Sun, 3 Jul 2005 23:14:21 -0500, "Bill Thompson" <billt61@rgv.rr.com> wrote:

>In addition to all the other fine advice in this thread, consider that 'add'
>function can bog down when the array gets large.  You can use the 'SetSize'
>function to allocate a large array intially, and grow it by larger chunks.
>
>There was a recent thread on this topic:
>
>http://groups-beta.google.com/group/microsoft.public.vc.mfc/browse_frm/threa
>d/f385cd485257d479/957dd9fc97437f32#957dd9fc97437f32
>
>-or-
>
>http://tinyurl.com/d9q3p
>
><zmau@UltimateEmail.com> wrote in message
>news:1120418512.337534.190190@g43g2000cwa.googlegroups.com...
>> Hi all,
>>
>> I have an application which I did not write, but I want to improve it's
>> performance (Obviously I do have the code).
>>
>> First of all I am not a database expert so my terms may not be exact, I
>> appologize :-))
>>
>> The application starts by reading a lot of data from the database tree
>> via ODBC (MFC + VC++ 6.0).
>> This process takes a few minuets, and I have more than one CPU, so
>> obviously I was thinking of multi-threading.
>> The point is that once I Multi-threaded the code, the program stuck
>> during startup. Looking with a debugger, I saw that all threads are
>> hanging while reading the DataBase. A code example is attached at the
>> end.
>>
>> The problem persists even if I open the program twice (with the
>> original code !!), so it looks to me that the Databae/ODBC can not be
>> opened twice.
>> I thing that the problem is that I need to open the DataBase with
>> multiple read permision. How do I do that ?
>>
>>
>>
>>
>> More details regarding how do we load the data :
>> We read one table, the data of this table (Actually it's one of the
>> columns ) leads to read more tables, which leads to read more tables.
>> The whole code looks like million loops of the following example :
>> char achFilter[100];
>> CBlockSpecSet blockSpecSet(m_pDoc->m_pDB);
>>
>>
>> sprintf(achFilter,"lBlockID=%d", m_lId);
>> blockSpecSet.m_strFilter = (CString)achFilter;
>>
>> TRY
>> {
>> if (blockSpecSet.Open())
>> {
>> while (!blockSpecSet.IsEOF())
>> {
>> m_SpecificsArray.Add((CSpecific*) new CSpecific(
>> blockSpecSet.m_strFieldName,
>> blockSpecSet.m_strFieldDescription,
>> blockSpecSet.m_dValue));
>>
>> m_nNumOfSpecifics++;
>>
>> blockSpecSet.MoveNext();
>> } // while
>> } // if blockSpecSet.Open()
>> } // TRY
>> CATCH(CDBException, e)
>> {
>> AfxMessageBox(e->m_strError);
>> }
>> END_CATCH
>> blockSpecSet.Close();
>>
>> Last thing is the following definition:
>>     CDatabase*  m_pDB;                   // Pointer to the Simulator
>> database. (File_DB.mdb)
>>
>>
>> Thanks
>> Maurice
>>
>

Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15975)
7/5/2005 2:08:19 PM
Reply:

Similar Artilces:

trouble sending/forwarding mail in RTF or plain text via VPN
While using a VPN on a wireless network, Outlook functions fine EXCEPT that I cannot send/forward mail that is not in HTML format. When doing so, I only get the message that Outlook is searching for my corporate mail server. Other functions seem to work fine. Any clues?! Thanks-- ...

hyperlink open in new window
How do you create a hyperlink and have it open in a new window? refer to http://www.davidbartosik.com/pub2002/pub2002_13.htm -- David Bartosik - MS MVP for Publisher help: www.davidbartosik.com enter to win Pub 2003: www.davidbartosik.com/giveaway.aspx "sharin" <anonymous@discussions.microsoft.com> wrote in message news:2180BE5B-1783-4F9A-A167-D8E3BF34B3CC@microsoft.com... > How do you create a hyperlink and have it open in a new window? ...

Outlook does not open all of a sudden
I have Office 2007 Business I cannot open Outlook all of a sudden. I get a message that The Outlook Folders cannot be opened, that the server is not available (?). I run Microsoft Office Diagnostic with no apparent problems, I tried to fix , to uninstall and reinstall. All other programs ( Excel, Word, power point, etc) are working fine. Can anybody give me a suggestion before I get another hard disk and reinstall everything? What is the exact error message? Paraphrasing does not help. Have you tried a new mail profile? --=81 Milly Staples [MVP - Outlook] Post all replies to the grou...

Dotnet Lead Engineers opening in Pune
Hi, We are Bangalore based leading HR consulting company retained by top IT companies like SAP Labs, TCS, i-Gate, AztecSoft, GE, Symphony Services, HCL to hunt talent. Excellent opening for Lead Engineers at AT CMM Level-5 & Largest IT Company for their Pune ODC. Mandatory Skills: 1) ASP.Net 2) C# 3) SQL Programming 4) Must have strong experience on ASP/VB script and good exposure to ASP.NET. 5) Should have min two years experience in Classic ASP/VB script and min one year experience on ASP.NET 6) Should be willing to work on classic ASP development 7) Good knowledge of MS Sql server, H...

Can I make a database in Word with Excel Data
I know this may be a "DUH" question, but... I am making a list of area dentists that I have copied and pasted of of the Dex website into Excel. I am wondering if I can take this inf and make a database in Word for printing address labels. Does anyon know if this can be done, and HOW?:confused -- Myn77 ----------------------------------------------------------------------- Myn777's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=2958 View this thread: http://www.excelforum.com/showthread.php?threadid=49283 For help on Word mail merge using Excel as the...

clicking TOOLS/OPTIONS gives me error msg "cannot access dir D:/"
I need to change settings in the TOOLS/OPTIONS menu. But when I click on any tab in the OPTIONS menu it gives me the error message "cannot access dir D:/documents" I may have changed the name of that directory at some point and I suspect that is the problem. However I still need to change settings in the TOOLS/OPTIONS menu. How do I fix it? Hi Lori Close Excel Add this directory D:/documents and try again And try again -- Regards Ron de Bruin http://www.rondebruin.nl "Lori Rossi" <Lori Rossi@discussions.microsoft.com> wrote in message news:34A25E1A-D...

Splitting a database
Hi, I have broken my database into several stages. I have implemented the first stage and this is simply the database (with basic features) on a central computer and a shortcut added to each user's computer. I know this is quite risky but at this stage only one person is cupturing and editing the data and the rest is viewing information and printing reports. I am still building on new features of the database and this would include adding more fields to some tables. 1 - Could i now split my database and give each user a FE, given the fact that i will still be adding and removin...

tab in access
-- I added a tab control to a form what do i do so it should be from right to left? Gal On Sun, 21 Mar 2010 02:57:01 -0700, Gal <Gal@discussions.microsoft.com> wrote: That is currently not supported. Why do you need it? -Tom. Microsoft Access MVP > >-- I added a tab control to a form what do i do so it should be from right >to left? >Gal I am programing for a company in Israel and they write in hebrew plz help me if u can -- Gal "Gal" wrote: > > -- I added a tab control to a form what do i do so it should be from right ...

Outlook failure to send Access reports
I email reports from Access using Outlook. At times, the email will hang up in my outbox and will not send even if I open it and try to send it manually. Any of you fine folks know what's going on and how to fix this? Thanks - Ken Smith -- KMS Technical Solutions ...

Access ODBC problem: Excel cannot get float columns
I need some help I'm trying to get Access external data from an Excel workbook, using the MS Query feature. Everything is ok except when I try to fetch some tables that ODBC refuses to get data from. The error message tells that the MS Access ODBC driver doesn't allow some columns to be transmited because of its number of characters. The most strange thing is that I can see the data from MS Query correctly, but I caannot get it back from Excel. After some tries, I thing it occurs only with real typed columns. Can anybody help me? I use Windows XP Home + Office 2000 spanish versio...

Create form similar to MS Access 2000 Help
Is it possible to create a form that works similar to the Help - Index form in Access 2000? My StreetTable consists of the following fields: Street_ID(autonumber), StreetName(text), Directions(memo). I want to be able to type the beginning letters of the street and the List of StreetNames continually reduces until I see the street I need in the StreetNames window. I would then click on that street and the Directions would appear in the third window panel. Since I'm dealing with approx. 5000 streets, scrolling really isn't an option that I want to consider. I found that a combo ...

Open document from previous version
How do I open a document from a previous version of Publisher..I have 2000? Are you certain it is an earlier version? Do you have Norton? Disable "script blocking" and try again. -- Mary Sauer MS MVP http://office.microsoft.com/ http://www.msauer.mvps.org/ news://msnews.microsoft.com "Jan" <jan0704@msn.com> wrote in message news:44cc01c4a49e$a8fcbbe0$a601280a@phx.gbl... > How do I open a document from a previous version of > Publisher..I have 2000? Jan wrote: > How do I open a document from a previous version of > Publisher..I have 2000? If it ...

Sending emailes from Access
Once i week i would like an easy way from access to send out a a email to some customer that query will find. Whats the eaasyest wasy to send a email to about 20- 30 people, the email will be the same to every one, I know i could go throught outlook and do a mail merge but is there a way i can just have a button on a access form that will automatical send out an email to lots of people Thanks very much Any help would be great Best Regards Simon Dickson Poke around the Access EMail FAQ that Tony Toews has at http://www.granite.ab.ca/access/email.htm. There's likely something there...

Outlook Web Access error
Got this error message when trying to access my mailbox from Outlook Web Access. "Unable to get renderer" This happened on a particular machine but work fine on other machine. Anyone know what going on? ...

Fix: Visio 2007 x64 Hangs During Database model Creation
I'm posting this here, so hopefully others will have an easier time finding the solution than I did... On Windows XP (x64) Visio 2007 hangs when I try to create a new database model diagram. Performing a "repair" doesn't help at all. For some reason, turning off the "Print Spooler" Service makes things work just fine. I have no idea why this is, but it did the trick. -- Chris Mullins, MCSD.NET, MCPD:Enterprise, MVP C# http://www.coversant.net/blogs/cmullins Hi Chris, Thanks for sharing this information. Do you see the hang when creating other new draw...

Access Reports Disappear
I had a database that I had used for years with no problem. Lately I've noticed that some of the reports are disappearing. Yet, if I try to create a new report with the same name, Access says "Name conflicts with existing module, project or object library." So, I created a new database. The only thing I imported was the tables from the old database. Yet, I'm having the same problem. Has anyone seen this before? Make sure you have SHOW HIDDEN OBJECTS set to YES. Then take a look around for those "missing" reports... "JG" wrote: > I had a da...

Change opening postion /Form
From my Main Form I have a control that open a smaller form overtop of main Form, It always opens in the middle of my Main Form, can I reposition it to open higher on my Main Form, Thanks for any Help.....Bob On Mon, 6 Aug 2007 11:13:29 +1200, Bob V wrote: > From my Main Form I have a control that open a smaller form overtop of main > Form, It always opens in the middle of my Main Form, can I reposition it to > open higher on my Main Form, > Thanks for any Help.....Bob Look up the MoveSize method in VBA help. DoCmd.MoveSize 2 *1440, 3 * 1440 will position a form 2 inch...

How to add summary fields to Group Footer in Access Reports?
How do you add a Summary fields to Group Footers in Access? I have a Detail field I want to Sum in the Group Footer in my report. -- Pat Dools ...

Opening tab-delimited files in Excel... how to stop the autoformat of dates?
Hello, I'm doing bioinformatics work in which I often download tab-delimited files describing genomes and open them in Excel. Unfortunately, Excel decides that genes with names like APR1 and SEP7 are actually dates, and reformats them as such. This is a huge headache, as I often don't notice these problems until much later. Is there anyway to completely disable this date autoformatting? I've searched high and low and have yet to find a solution. Thanks! P.S. I'm using Excel 2002 -- salamander ------------------------------------------------------------------------ sa...

Thread Problems
Found this from MSDN->codeguru, can't seem to figure out the problem.... class ThreadClass { protected: HANDLE m_hThread; //Thread handle bool m_bActive; //activity indicator DWORD m_lpId; //Thread ID public: ThreadClass(){} virtual ~ThreadClass(){Kill();} //Thread Management bool CreateNewThread() { m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)_ThreadFunc, (LPVOID) this, 0, (LPDWORD) &m_lpId); if (m_hThread == NULL) return false; m_bActive = true; return true; }; //Wait for thread to end bool Wait() {return (WAIT_OBJECT_0 == WaitForSingleObject(m_hT...

Trouble Printing Checks #2
I'm using Money 2004. I have a list of checks to be printed, but no 'Print Checks' on the left side panel. When I go the 'File' menu to print checks it gives me a "You don't have any accounts with checks to be printed." message. What can I do? David See http://umpmfaq.info/faqdb.php?q=91. "David" wrote: > What can I do? I would run a file repair to see if that will correct the number do indicate the number of checks that have been set to "print". "David" <David@discussions.microsoft.com> wrote in message news...

VBA code to hide all the tables on form open
I don't want people to use a blank mdb to import my tables. I manually hide them all. However, after running the macro to delete all records and import from .txt, the table become unhide. I do the importation on daily basis. I posted to macro newsgroup and asked way to hide table after importation action macro but got no answer. Maybe it cannot be done in macro? If so, I need VBA code to hide all the tables on form open. Thanks. Hiding your tables won't prevent people from being able to import them into a blank mdb. All they have to do is ensure that they've set the datab...

VC 7.1: Preview DC
With Visual C++ MFC 7.1 when doing a print preview the Attribute HDC and the Output HDC of the CDC differ. Whenever a pen, brush or font is selected into this CDC via SelectObject an assert is triggered as the two HDC's do not match. This was never a problem using Visual C++ MFC 6.0. Is there any way to get around this or am I missing something blindlingly obvious ? Thanks, Brett Hi Brett, For the conveniece to investigate this issue, would you please give us some code snippet to illustrate this problem? Thanks for your understanding! Best regards, Gary Chang Microsoft Online...

Are there functions/Or Events that are called automatically when the database file first opens and When it closes?
All, I'm assuming its "Public Function init_something()" but I can't seem to find a reference to the correct syntax. I'm using Access 2007. Basically what I'm trying to do is initialize a list of global variables and I can't seem to figure out how to do it. Option Compare Database Public VariableName As String 'Call Init - Will throw an error 'VariableName = "Hello World" - Will throw an error Option Explicit Public Function Init() VariableName = "Hello World" End Function Private Sub btName_Click() ...

Please help with New Database Query
Newbie to New Database Query - Can you change a spreadsheet to a table if so how? I have a lot of spreadsheets that I would like to work with in New Database Query. Can this be done. Any help will be greatly appreciated. In general, if you select a range and give it a name....MS Query will recognize it as a data source: Example for data in Cells A1:Z500, with column headings (EmpID, FName, Lname, etc): Select A1:Z500 In the Names box (just above the Col_A heading) type rngMyData1 Press [Enter] Next, save your workbook. Then...Data>Import External Data>New Database Query When y...