231 - All pipe instances are busy when connecting a pipe

Hi,

I'm working on a pipe server & client program. The pipe server is 
asynchronous and multithreaded. I used the following method to create the 
server:

// code below is inside the Run() method of the server thread class
OVERLAPPED  ol;
ZeroMemory(&ol, sizeof(OVERLAPPED));
HANDLE hArray[2];
hArray[0] = ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
hArray[1] = m_hStopEvent;    // a global shutdown event
while(bStop==FALSE)
{
    HANDLE hServerPipe = CreateNamedPipe (m_szServerName, 
PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED|WRITE_DAC,PIPE_TYPE_MESSAGE | 
PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 8192, 8192, 
NMPWAIT_USE_DEFAULT_WAIT, &saPipeSecurity);
    if (hServerPipe && hServerPipe != INVALID_HANDLE_VALUE)
    {
        BOOL bClientConnected = ConnectNamedPipe(hServerPipe, &ol);
        switch (WaitForMultipleObjects(2, hArray, FALSE, INFINITE))
        {
        case WAIT_OBJECT_0:
            if (GetOverlappedResult(hServerPipe, &ol, &dwOverlappedBytes, 
TRUE))
            {
                // calling _beginthreadex & CloseHandle here to process 
requests
            }
            break;
        case WAIT_OBJECT_0+1:
            // shut down server
            bStop=TRUE;
            CloseHandle(hServerPipe);
            break;
        }
    }
}

The _beginthreadex part isn't that complicated. It passes hServerPipe as a 
parameter so that the created thread can process it. The client code is as 
below:

// code below is inside a client thread
// the client launches multiple threads to send requests to the server
HANDLE hPipe = CreateFile(m_szServerName, GENERIC_READ|GENERIC_WRITE,0,NULL, 
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if(hPipe && hPipe != INVALID_HANDLE_VALUE)
{
    OVERLAPPED ol;
    ZeroMemory(&ol, sizeof(OVERLAPPED));
    ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    BOOL bResult = WriteFile(hPipe,szPipeQuery,szPipeQuery.GetLength(), 
&cbBytes, &ol);
    if (!bResult && GetLastError() == ERROR_IO_PENDING)
        bResult = GetOverlappedResult(hPipe, &ol, &cbBytes, TRUE);
    while(true)
    {
        // here is the part to read pipe server responses
        // accomplished with ReadFile and GetOverlappedResult with parsing
        // abort the loop when the content is completely retrieved
        // or an error is occurred
    }
}


And here comes my problem. The server works for 30 requests or sometimes 200 
requests. It's random. After that, the client starts to receive 231 error in 
CreateFile. The actual client code handles this error and attempt 2 retries. 
But from a certain point, the client will always receive 231 error when 
connecting. At this point, from server trace messages, I saw that the server 
has successfully processed previous requests, and waiting for new 
connections. When the client receive 231, the server is actually at 
WaitForMultipleObjects and hServerPipe is successfully created.

This might be because of some bug in the code I didn't post. But I found it 
very difficult to debug. The server can successfully process several dozens 
of requests. There is no error reported whatsoever. And all of the sudden, 
the client just can't connect anymore. If I start a new instance of the 
client. It'll also receive 231. Seems like the server is dead for some 
reason.

How should I debug this problem? Could this be a thread synchronization 
issue?

-- 
Best regards,
Bill Holt 

0
Bill
9/29/2008 3:37:48 AM
vc.mfc 33608 articles. 0 followers. Follow

7 Replies
2319 Views

Similar Articles

[PageSpeed] 27

Hi again, I also discovered that if I reduce the number of server pipe 
instances from PIPE_UNLIMITED_INSTANCES to a lower value like 5. This 
problem will appear very soon.

-- 
Best regards,
Bill Holt
 

0
Bill
9/29/2008 3:47:17 AM
I've just been investigating a similar problem today.  Similar in that I'm 
getting 231 on my named pipe clients, different in that I've written the 
client and server using .NET and have not yet added the overlapped stuff in 
yet.

At any rate, my server would create a named pipe and wait for a connection.  
After sending a couple messages to the client the communication was over and 
it would disconnect the client and try connecting another client.  This all 
worked fine when I ran the client one at a time and the client just had this 
one conversation.  I then wanted to see how many conversations I could have 
per second.  I simply added a 1 to 100 loop in the client and once I did that 
most of the requests failed.  I attributed this to the client being ready to 
open the file (pipe) again before the server go around to trying to 
reconnect.  By the way, I'm running this on my single processor laptop.

I figured I could fix this by creating two of the server threads which 
create the pipe and communicate with the client.  Surprisingly this didn't 
fix the problem.  My thought was that if the thread which was communicating 
with the client was still shutting down things and had not looped around to 
ConnectNamedPipe() that the other thread would have its pipe available for 
the connection.  Not sure why the two thread solution didn't fix the problem, 
but again I'm running on a single processor laptop and multi-threaded issues 
behave oddly.

After reading some posts it was suggested that I call WaitNamePipe() in the 
client.  I added that call if the first call to CreateFile() fails and this 
seems to have resolved my problem.  Code snippet:

..
..
..
pipe = Win32.File.CreateFile(pipeName,
      Win32.File.GENERIC_READ | Win32.File.GENERIC_WRITE,
      0, null, Win32.File.OPEN_EXISTING, 0, IntPtr.Zero);
if (pipe == Win32.File.INVALID_HANDLE_VALUE)
   {
   if (Marshal.GetLastWin32Error() == Win32.NamedPipe.ERROR_PIPE_BUSY)
      {
      if (Win32.NamedPipe.WaitNamedPipe(pipeName, 20) != 0)
         {
         pipe = Win32.File.CreateFile(pipeName,
               Win32.File.GENERIC_READ | Win32.File.GENERIC_WRITE,
               0, null, Win32.File.OPEN_EXISTING, 0, IntPtr.Zero);
         }
      }
   }

if (pipe == Win32.File.INVALID_HANDLE_VALUE)
   Console.WriteLine("Error opening pipe, result = {0}", 
Marshal.GetLastWin32Error());
else
   {
   .
   .
   .
-- 
Thanks,
Nick

nicknospamdu@community.nospam
remove "nospam" change community. to msn.com

0
10/2/2008 7:19:02 PM
See below...
On Mon, 29 Sep 2008 11:37:48 +0800, "Bill Holt" <mailbill(NOSPAM)@21cn.com.nospam> wrote:

>Hi,
>
>I'm working on a pipe server & client program. The pipe server is 
>asynchronous and multithreaded. I used the following method to create the 
>server:
>
>// code below is inside the Run() method of the server thread class
>OVERLAPPED  ol;
>ZeroMemory(&ol, sizeof(OVERLAPPED));
>HANDLE hArray[2];
>hArray[0] = ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
>hArray[1] = m_hStopEvent;    // a global shutdown event
>while(bStop==FALSE)
****
NEVER compare a boolean variable to a boolean literal.  It is silly, and also error-prone.
You would not write
	if((a > 0) == TRUE)
so why are you comparing bStop to FALSE, when what you meant to write was
	if(!bStop)
???
****
>{
>    HANDLE hServerPipe = CreateNamedPipe (m_szServerName, 
>PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED|WRITE_DAC,PIPE_TYPE_MESSAGE | 
>PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 8192, 8192, 
>NMPWAIT_USE_DEFAULT_WAIT, &saPipeSecurity);
****
Message pipes are a bit suspect
****
>    if (hServerPipe && hServerPipe != INVALID_HANDLE_VALUE)
>    {
>        BOOL bClientConnected = ConnectNamedPipe(hServerPipe, &ol);
****
The correct code is
          BOOL bClientConnected = ConnectNamedPipe(hServerPipe, &old) 
		? TRUE
		:  ::GetLastError() == ERROR_PIPE_CONNECTED;

RTFM.  This is described in the Remarks section of ConnectNamedPipe.
****
          
>        switch (WaitForMultipleObjects(2, hArray, FALSE, INFINITE))
>        {
>        case WAIT_OBJECT_0:
>            if (GetOverlappedResult(hServerPipe, &ol, &dwOverlappedBytes, 
>TRUE))
>            {
>                // calling _beginthreadex & CloseHandle here to process 
****
Note that if this is MFC, you must call AfxBeginThread; otherwise _beginthreadex is fine.
But if your plan is to close the thread handle immediately, you could also use
_beginthread unless you need the additional capability of _beginthreadex
****
>requests
>            }
>            break;
>        case WAIT_OBJECT_0+1:
>            // shut down server
>            bStop=TRUE;
>            CloseHandle(hServerPipe);
>            break;
>        }
>    }
>}
>
>The _beginthreadex part isn't that complicated. It passes hServerPipe as a 
>parameter so that the created thread can process it. The client code is as 
>below:
>
>// code below is inside a client thread
>// the client launches multiple threads to send requests to the server
>HANDLE hPipe = CreateFile(m_szServerName, GENERIC_READ|GENERIC_WRITE,0,NULL, 
>OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
****
What happened to 
if(hPipe == INVALID_HANDLE_VALUE)
    {
     DWORD err = ::GetLastError();
     TRACE(_T("CreateFile Error: \"%s\" error %d (0x%08x) %s\n"),
                        m_szServerName,
                        err, err,
                        ErrorString(err));
     ... or other error logging, and properly abort the transaction
    }
???

For the ErrorString function in MFC, see my MVP Tips site on using FormatMessage, and
adapt the code as needed for a non-MFC application.
****
>if(hPipe && hPipe != INVALID_HANDLE_VALUE)
****
The only test required is
if(hPipe != INVALID_HANDLE_VALUE)
because actually 0 could be a valid handle, surprisingly.  That's why the special value
INVALID_HANDLE_VALUE (which is actually ((HANDLE)-1)) was defined.  It *is* weird, but
there is no reason to assume that 0 is not a valid handle value.
****
>{
>    OVERLAPPED ol;
>    ZeroMemory(&ol, sizeof(OVERLAPPED));
>    ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
>    BOOL bResult = WriteFile(hPipe,szPipeQuery,szPipeQuery.GetLength(), 
>&cbBytes, &ol);
>    if (!bResult && GetLastError() == ERROR_IO_PENDING)
>        bResult = GetOverlappedResult(hPipe, &ol, &cbBytes, TRUE);
****
So let's see.  If you get ERROR_IO_PENDING, you block waiting for the I/O to complete.  If
you get any other error, you just immediately drop through and start reading data even
though there was an error.  What happened to
      else
         {
           DWORD err = ::GetLastError();
           ...print out error code and error message
           ...abort transaction, close handles, etc.
         }
????
****
>    while(true)
>    {
>        // here is the part to read pipe server responses
>        // accomplished with ReadFile and GetOverlappedResult with parsing
>        // abort the loop when the content is completely retrieved
>        // or an error is occurred
>    }
****
You seem to be doing synchronous reads even though you have an overlapped result, because
the thread blocks if there isn't data.  I'd be inclined to get rid of all of this code and
use an I/O Completion Port to handle the notification.  Solves a lot of problems.
****
>}
>
>
>And here comes my problem. The server works for 30 requests or sometimes 200 
>requests. It's random. After that, the client starts to receive 231 error in 
>CreateFile. The actual client code handles this error and attempt 2 retries. 
>But from a certain point, the client will always receive 231 error when 
>connecting. At this point, from server trace messages, I saw that the server 
>has successfully processed previous requests, and waiting for new 
>connections. When the client receive 231, the server is actually at 
>WaitForMultipleObjects and hServerPipe is successfully created.
****
In the absence of knowing what error it gets, there seems to be no way to determine what
is going wrong.  You have not said what value GetLastError returns.  It is probably code
5, Access Denied, which means the m_szServerName file is already open (you specify 0,
meaning "exclusive access").  If there is an error, you should at least do a TRACE of the
file name and ::GetLastError value, as I indicated above, and you may want to additiona
logging.  But it looks like you have potential multiple connections trying to log to the
same file.
****
>
>This might be because of some bug in the code I didn't post. But I found it 
>very difficult to debug. The server can successfully process several dozens 
>of requests. There is no error reported whatsoever. And all of the sudden, 
>the client just can't connect anymore. If I start a new instance of the 
>client. It'll also receive 231. Seems like the server is dead for some 
>reason.
****
You have some timing-sensitive situation that causes concurrent file access to the same
file name.  Most of the time you are avoiding whatever the bug is, but from what I saw of
the above code, the fact tht you have a variable called m_szServerName that is not
dependent upon the connection ID is fundamentally suspect.
****
>
>How should I debug this problem? Could this be a thread synchronization 
>issue?
****
Almost certainly, but not in the way you think.  Unless that filename is guaranteed to be
unique for each thread (for example, by creating a name that includes the thread ID, or a
unique counter, or something like that as part of the name) then it is inevitable that the
error you are seeing is going to happen.
				joe
****
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15974)
10/12/2008 6:36:39 AM
See my previous post.  You have a race condition that causes concurrent access to the same
filename.
				joe

On Mon, 29 Sep 2008 11:47:17 +0800, "Bill Holt" <mailbill(NOSPAM)@21cn.com.nospam> wrote:

>Hi again, I also discovered that if I reduce the number of server pipe 
>instances from PIPE_UNLIMITED_INSTANCES to a lower value like 5. This 
>problem will appear very soon.
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15974)
10/12/2008 6:37:24 AM
"nickdu" wrote:
> [...]
> pipe = Win32.File.CreateFile(pipeName,
>       Win32.File.GENERIC_READ | Win32.File.GENERIC_WRITE,
>       0, null, Win32.File.OPEN_EXISTING, 0, IntPtr.Zero);
> if (pipe == Win32.File.INVALID_HANDLE_VALUE)
>    {
>    if (Marshal.GetLastWin32Error() == Win32.NamedPipe.ERROR_PIPE_BUSY)
>       {
>       if (Win32.NamedPipe.WaitNamedPipe(pipeName, 20) != 0)
>          {
>          pipe = Win32.File.CreateFile(pipeName,
>                Win32.File.GENERIC_READ | Win32.File.GENERIC_WRITE,
>                0, null, Win32.File.OPEN_EXISTING, 0, IntPtr.Zero);
>          }
>       }
>    }
> [...]

Wow, I'm amazed that someone else is actually observing this.  I thought I 
was alone.  I'm getting almost the exact same results as you guys are.  

Except that in my situation I fisrt get error 231 (which is ERROR_PIPE_BUSY, 
by the way) and then I call WaitNamedPipe, but WaitNamedPipe fails also, and 
GetLastError returns 161 (ERROR_BAD_PATHNAME).  So then I try to CreateFile 
again, and get ERROR_PIPE_BUSY again, and WaitNamedPipe gives 
ERROR_BAD_PATHNAME again, etc. forever.  There's no amount of waiting or 
re-creating the file that will solve this problem on the client end.  The 
only solution is to kill the server end of the pipe (by stopping the server 
process and restarting it).  Your single-retry after a single WaitNamedPipe 
doesn't work for me.

So this makes me think that it's the fault of the implementation on the 
server's side that is to blame for the problem.  

Is there an explanation for this?  Did you figure out why this is happening?

- Wyck
0
Wyck (1)
11/7/2008 6:49:02 PM
Bill Holt wrote:
> Hi again, I also discovered that if I reduce the number of server pipe
> instances from PIPE_UNLIMITED_INSTANCES to a lower value like 5. This
> problem will appear very soon.

This makes me think that in some cases you forget to close the pipe on the 
server side, the thread ends before you close, or some such.  Use a tool 
that will show you how many open handles you really have in the server, I 
think oh.exe from the Windows Resource Kit and/or Process Explorer can help 
here. 


0
rbv (46)
11/12/2008 11:25:14 PM
"Bill Holt" <mailbill(NOSPAM)@21cn.com.nospam> wrote in message 
news:07EBF019-2108-48B0-86B6-9BD5FBB8BC0D@microsoft.com...
> Hi,
>
> I'm working on a pipe server & client program. The pipe server is 
> asynchronous and multithreaded. I used the following method to create the 
> server:

> // code below is inside the Run() method of the server thread class
[snip server]

> // code below is inside a client thread
> // the client launches multiple threads to send requests to the server
> HANDLE hPipe = CreateFile(m_szServerName, 
> GENERIC_READ|GENERIC_WRITE,0,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 
> NULL);
> if(hPipe && hPipe != INVALID_HANDLE_VALUE)
> {
>    OVERLAPPED ol;
>    ZeroMemory(&ol, sizeof(OVERLAPPED));
>    ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
>    BOOL bResult = WriteFile(hPipe,szPipeQuery,szPipeQuery.GetLength(), 
> &cbBytes, &ol);

etc...

I've actually had to debug one of these scenarios before and it was 
extremely tricky to just get a feel for what's going on in the first place. 
Anyway, eventually in our case (which wasn't overlapped) it boiled down to 
either a blocking read or a blocking write causing either the server or 
client thread to enter an infinite wait state. It looks to me here like the 
server side could possibly enter an infinite (or at least non-zero-time) 
wait state before each successful connection (but I doubt that's the 
problem):

BOOL bClientConnected = ConnectNamedPipe(hServerPipe, &ol);  <-- BLOCKING 
(hServerPipe is global)
        switch (WaitForMultipleObjects(2, hArray, FALSE, INFINITE)) <--  
BLOCKING (hArray is global)
....

So now if a 2nd client is wanting to connect, it will have to wait for the 
first client to successfully connect to, and then signal the server :

"BOOL bResult = WriteFile(hPipe,szPipeQuery,szPipeQuery.GetLength(), 
&cbBytes, &ol);"

is what (hopefully) signals "ol.hEvent" on the server side [this may never 
occur btw! if WriteFile returned false but *without* an IO pending error 
(could be pipe busy, or too many connections or whatever)]. Well that may 
happen right away, but only as long as the server is pulling data out of the 
pipe to allow for more Write requests given the number of instances allowed 
and their max buffer sizes. Meanwhile more clients attempt to connect and 
are also waiting on the server to dequeue some data from the another client.

Well if the rate at which the server is being signaled to begin a new read 
thread (ie. and then complete that particular session allowing one pipe 
instance to close) is slower than the rate at which new clients are 
successfully to making connections, then the number of connections (pipe 
instances) will gradually rise until you reach the limit of the number of 
instances allowed for that particular pipe.

My guess is you should try some debug tracing of the number of pipe 
instances (from the server side) and see if that number is increasing, and 
then try to determine why. Keeping in mind that the server is blocked every 
time it's waiting for a new client and the last client may not have signaled 
that it's time to begin reading in reasonable time, or even at all.

Hope that helps ;) Tough problems...

- Alan Carre


0
alan314 (63)
11/24/2008 9:12:06 PM
Reply:

Similar Artilces:

IMAP Dies With Concurrent Connections [E2K3]
I have an Exchange 2003 server that's been running fine for the past nine months or so, and I decided to turn on IMAP/S and set up a new SMTP/S virtual server. It seems to work fine until there's more than one connection to the same mailbox. For example, if I leave my mail client open at home, I won't be able to retrieve my mail when I open it at work. Restarting IMAP4svc resolves the issue temporarily, but I have a couple of group mailboxes where multiple people would access the same account... so I can't spend my day restarting IMAP ;) Has anyone encountered this? Is...

Sales Tax in Money Small business
How do you split the sales tax into both state and local? I can only see how to add one percentage! thanks, Kelley ...

piping dsquery output to a file
Hi, I've been given a list of close to one hundred users that need to have their password reset. I am planning on using dsmodify to do this. I only have the users first and last name. using dsquery user -name "lastname, firstname" I can get the full DN of the user which I can they put in a file to run dsmodify. I want to be able to do dsquery user -name "lastname, firstname" >dsquery.txt The problem is, that if I do this for the one hundred users I have, it overwrites the file so that when I'm done it only displays the last user that I ran the ...

Business Portal Time & Expense Approval
Hi, It would be nice to be able to customize the 'Details' screens that a Time or Expense Approver sees? I have a customer that wants to be able to see Expense notes but there appears no way to do it as these pages are compiled. Thanks, Graham. ---------------- This post is a suggestion for Microsoft, and Microsoft responds to the suggestions with the most votes. To vote for this suggestion, click the "I Agree" button in the message pane. If you do not see the button, follow this link to open the suggestion in the Microsoft Web-based Newsreader and then click "I...

Visio Partner Webcast May 16th
Register at: http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032295871&Culture=en-US An LOB (line-of-business) application is one of the set of critical computer applications that are vital to running an enterprise, such as accounting, supply chain management, and resource planning applications. LOB applications are usually large progams that contain a number of integrated capabilities and tie into databases and database management systems. Examples of popular LOB applications are SAP, Microsoft Synamics and Oracle. Increasingly, LOB applications are being conne...

What is the solution for the 2-4 store business?
Okay, I noticed that Microsoft POS comes with Office Accounting Professional now, so I assume that it integrates with it. I can't find any information on how to integrate RMS with Office Accounting Professional. I have a number of small business retailers that have between 2-4 stores each (okay I have 5 retailers). They haven't really outgrown Office Accounting, but I am not sure what POS to start them with. I hate to have to tell them to move to Quickbooks. As far as I know, POS doesn't handle more than one store. I'd like to provide a solution with Office Accounti...

Excel Automation
Using KB # 308407 and 307473 in Visual C++ 2003, on Win2000 1. I make the header files for the Excel Type Library as described in KB # 307473 - for the Excel interfaces as described in KB # 308407 (_Application, _Workbook, etc.) 2. Put following line in header: CApplication m_appExcel; 3. put following code in .cpp file: bool CMyClass::RunExcel() { COleException oleError; if (!m_appExcel.CreateDispatch("Excel.Application", &oleError)) { oleError.ReportError(); return false; } m_appExcel.Quit(); return true; } 4. Run code ( myc...

How can i get some powershell instance~
Hello i'm a powershell learner. Could any one share some hyperlinks or scripts. The more the better. I would like to collect some scripts that can use in the company's daily work. Thanks a lot. : ) http://www.powershell.com http://www.poshcode.org http://pshscripts.blogspot.com http://gallery.technet.microsoft.com/ScriptCenter/en-us/ "Kino" <Kino@discussions.microsoft.com> wrote in message news:27913049-6880-43AE-8000-57EEA0FE960F@microsoft.com... > Hello i'm a powershell learner. > Could any one share some hyperlinks or scripts. The more the ...

Deny Connections to Exchange Mailbox Store.
Hi, - Windows 2003 SP1 + Exchange 2003 SP1 - Situation, in example: - have one exchange server - two Storage Groups - each SG (Storage groups) (SG1 and SG2) have two (2) Mailbox stores - SG1 - MS1/MS2 - SG2 - MS3/MS4 - I have computers (standard domain workstations) listed in several AD security groups (lets say per IP range) - I want to Restrict access to specified Mailbox Stores for some computer IP ranges, thus not effecting users connecting to other mailbox stores from computers which reside in some other IP ranges (OU_s). - I want computer f...

business card formatting?
I am making business cards. I have formatted the first one and now I don't know how to format them all to look like the first one. I tried the format painter but I don't think that's the right way to do it. please help! On Mon, 1 Feb 2010 15:54:01 -0800, THCooks <THCooks@discussions.microsoft.com> wrote: >I am making business cards. I have formatted the first one and now I don't >know how to format them all to look like the first one. I tried the format >painter but I don't think that's the right way to do it. please help! See http://ww...

Money 2004 Deluxe does not work with windos vista business (32-bit)
I have money 2004 Deluxe (standalone version) and bookkeeping all my financial stuff there for a four years. I just upgrade to wondows vista business 2004(32-bit) and install the money 2004 deluxe. The installation is smooth. But it report some problems and vista close it once I click the icon. Is there any workaround or have I upgrade to a new version. The function in 2004 is pretty much enough for me and I feel that I do not need any new function in newer version. :( BTW: I also try to set it into the compatible mode as winXP and it does not work either. On Mar 27, 1:50 pm, "G...

viewed records from a business unit
We have created a number of business units and set the security roles so users can Read only records from their own business unit. We have 3-users from 1-business unit that are all seeing a different number of records even though they all have read access to records from their business unit. 1 of these users even sees records from the organisational unit when they are not a member of that unit and do not have any access to that unit in there security role. Any help will be appreciated. Thanks, Brett ------=_NextPart_0001_50547160 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi...

save as pipe delimited
hi, please help me in this, it is an urgent requirement. i have an excel file with several columns of data, spanning over 6500 rows. i would like to extract the data to a file with the data separated wit a pipe '|' character, instead of tab or comma. can this be done? if so, how do i go about achieving this? thanks in advance, mac -- icestationzbr ----------------------------------------------------------------------- icestationzbra's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=458 View this thread: http://www.excelforum.com/showthread.php?threa...

Creating connecting arrows for process flow charts
Version: 2008 Operating System: Mac OS X 10.5 (Leopard) Processor: Intel Is it possible to create connecting arrows which snap between process flow chart boxes such that when you drag the boxes afterwards the arrows will stay connected with the boxes? Unfortunately [?] Word got the short end of the stick with the new graphics engine � probably due to time constraints. Apparently it isn't something that can be resolved by an update... At least it hasn't been so far. If the SmartArt Graphics won't provide what you need create your flow chart in either Excel or PowerPoint...

background instance..
Hi All, I have some problem sharing data between two instances of same application.Below is the design and the problem. The requirement is to have one single application running in the background and with one or many UI windows in the foreground. Currently iam thinking of using the mutex method to restrict to one instance of the exe.But the problem is everytime the instance of the exe can launched with different command line parameters.So based on the parameters i have to either create a dialog(which can again launch the UI Windows) or directly create some UI windows.First question is how c...

open every workbook in a new instance of excel
Is there a way to make every workbook I open, open in a new excel instance? If I open a workbook attachment, or a workbook on my desktop .... I'd like it in a totally seperated workbook, not 'windowed' in a currently open workbook. > Is there a way to make every workbook I open, open in a new excel > instance? If I open a workbook attachment, or a workbook on my > desktop .... I'd like it in a totally seperated workbook, not > 'windowed' in a currently open workbook. The only way that I have been able to do this is to start a new instance of Excel and ...

How can I connect to MySQL?
Hi,there, I have no way to connect to MySQL database which is setup on Linux with statement below in my MFC application. mysql_real_connect(MyData,"202.44.131.11","username","password","dbname",MYS QL_PORT,NULL,0) However, I can connect to MySQL database which is set up on Windows. What's the possible problem? BTW, I use libMySQL.lib and libMySQL.dll when connecting. -- Best regards. Susan (Kong Rui) www.365rainbow.com susan@365rainbow.com Ph: (86)10 65802501 Fax: (86) 10 65802503 803 Huapu Internationational Plaza 19 ChaoyangmenWai Avenue ...

Using Money Plus 2008 Home and Business in the UK
I have been having ongoing problems with my current version of Money (2005) which is the latest release in the UK and now out of support! Does anyone in this forum use the US version of Money Plus 2008 or Plus Home and Business on a regular basis in the UK? If so are there any problems associated with using the US version? My Bank does not provide facilities for background banking and I currently just download and iport OFX V2 file for all my accounts so thats not an issue. I have downladed the trial version and I am able via a QIF file to import my accounts but have not tried entering ...

Pipe Delimitation
Looking for an add in or macro that will allow export as pipe delimited file. one way: http://www.mcgimpsey.com/excel/textfiles.html In article <22c4f01c45d69$636c07b0$a001280a@phx.gbl>, "Joe" <Joe_Simmerer@educaid.com> wrote: > Looking for an add in or macro that will allow export as > pipe delimited file. ...

Connecting to an addin in Outlook 2010 (or not)
Well, this is really a VB question, but this discussion group seems to be as close as I can get. Please redirect me if there is a better place to ask this question. I'm trying to set up an Outlook addin using 2010 beta. A skeleton of the code is shown below. When I start Outlook, the addin shows up in the list of active addin. I get the "Mail Checker addin created" and "Mail Checker addin deleted" messages at the appropriate times. But I never seem to enter any of the IDTExtensibility2 subroutines. Equivalently, Outlook never seems to actually connect ...

Money Small Business 2004
How do i track employer matching in my retirement account? ...

Business contact manager
If I set a reminder in business contact manager with a reminder date, it doesn't show up on the listing of Business contacts (which I have set up as a table). I set up the 'Reminder Time' field from 'All Contact fields' in the field chooser. If I enter a date into the field on the table it momentarily gets reformatted to show day of week for example, but within half a second the entry blanks out. Bob ...

Returning Last Instance of a Duplicate
I have a table with Multiple records for the same serial number. I need to return only the latest record and the next previous record based on the date of the occurence. Can any one help me wit this scenario? -- Message posted via http://www.accessmonster.com You can use one of the four methods presented at http://www.mvps.org/access/queries/qry0020.htm Hoping it may help, Vanderghast, Access MVP "Dopple444 via AccessMonster.com" <u33839@uwe> wrote in message news:724722e065db5@uwe... >I have a table with Multiple records for the same serial number. I need to &...

How do I Disable Outlook 2003 Network connectivity or other warnings/notifications?
Does anyone know how to disable the warnings/notifications indicating "Outlook is trying to retrieve data from the Microsoft Exchange Server computer". These things pop up every couple of seconds it seems like and would like to turn them off. I found some documentation on how to disable them at the time of install, but nothing on how to make the change after. If anyone can help me with it will be greatly appreciated. Thanks, -Jose click on the tray icon? -- Diane Poremsky [MVP - Outlook] Author, Teach Yourself Outlook 2003 in 24 Hours Coauthor, OneNote 2003 for Windows (Visua...

Keep Excel from opening new instance
I have Excel 202 and with a dozen or two open programs sometimes forget I have excel open and press the Excel icon on my taskbar. If it was Word it would open a new file for me to start writing, but Excel opens a new window, tells me it is in use and can open as read only. I have to tell it to cancel, at which time it continues to open. Then I have to close it and click on the file I have open. HOW can I either get Excel to behave like Word or get it to not even bother opening like that. Sometimes one of these works: Tools|Options|General|Ignore other applications (uncheck it) --- ...