cancel
Showing results for 
Search instead for 
Did you mean: 

Datawindow error: ct_send() :user api layer error: this routine cannot be called because another command structure has result pending

Former Member
0 Kudos

Dear all,

when I retrieve datawindow in client PC. I always get this error as below. But the strange thing is some user got this error and the others works well.

So I don't understand what wrong with them. And I install sybase client 12.5.4 on every client PC to connect sybase. Thanks in advance

Sybase 12.5.4

Accepted Solutions (0)

Answers (3)

Answers (3)

ricardojasso
Participant
0 Kudos

If this is a call to a stored procedure you could try fetching the result set until there is no more data to retrieve, even if you were expecting to retrieve just one row.

I also remember having to place a "select 'hello'" statement at the end of the procedure when the procedure just performed actions on the database and no result set was needed hence expected to be returned from the database. I believe this applied to Sybase ASE only, not MS SQL Server.

Maybe an an open uncommitted transaction could be causing the problem too.

Former Member
0 Kudos

It is possible that the datawindow retrieve occassionally is in error and the error message is not promoted.  An example would be that a subselect has more than one row returned. This error would not necessarily happen all the time.

Former Member
0 Kudos

Hi Lars,

can you explain why the error message only occur on few people but not every one. Everyone operate the application's step is the same, include account/parameter.

Former Member
0 Kudos

If it only happens to some then they are the ones whose SQL has problems at run time.

PErhaps if you look at the SQL in the datawindow you might guess what the problem might be. Ask the user what they were doing.

JUst a suggestion.

Former Member
0 Kudos

Hi Ice;

  This message is typically received when a data communication error occurs duringing a DML operation between your PB application & the DBMS. The ct_send() method also typically denotes that you are using a native client connection mechanism.

  Can you tell us more about your DBMS, its version & how you are connecting to it.

Regards... Chris

Former Member
0 Kudos

Hi Chris,

As i say,I install sybase client 12.5.4 on every client PC. And setup on every client PC as below.

But the strange thing is the error message just occour few people, not everyone.

Former Member
0 Kudos

Hi Ice;

  The PB database client has nothing to do with this area of communication. It only acts as an interface to the real DB client that you installed from SS. It's the Microsoft layer that issues the ct_send error - not PB's.

  What is the value that you set in your Transaction Object for the DB client? That is ...

SQLCA.DBMS = "????"

Regards ... Chris

PS: PB v12.0 had a lot of issues. I would strongly recommend moving to v12.1 build 6518.

Former Member
0 Kudos

Hi Chris,

SQLCA.DBMS = 'SYC Sybase System 10/11'

SQLCA.Servername = '####'

SQLCA.Database='!!!!'

The Servername and Database of course the real name.

Former Member
0 Kudos

What version of ASE are you running?

Former Member
0 Kudos
Former Member
0 Kudos

Perfect!

Now ... what version & build of PB are you using?

Former Member
0 Kudos
Former Member
0 Kudos

You might find this vintage slightly out of warranty

Former Member
0 Kudos

OMG ... not only is that a really old, outdated, & unsupported PB release - it was never certified for the ASE 12.x  releases either.  

Former Member
0 Kudos

Yes, I know that was a really old version of PB.But, as my first post said, the strange thing is only happens on certain people, not everyone.

Former Member
0 Kudos

   The issue now is trying to help you with this with application and DB software which is now EOL'ed. I can't even suggest adding a TRY..CATCH around the DB code as the TRY..CATCH feature was not added to PB until version 8.0.

  I think that your only hope now is that this issue is because there really is another result set (or partially non-retrieved set) pending when the ct_send() error is occurring. This could be because of a work flow sequence in your application that is not often used by other users. If this is the case, then checking your logical DB transaction processing & remembering to issue a DBCancel(), Rollack and/or Commit at the end of the transaction processing will be the key to removing the pending result set before another DML request is to be sent to the DBMS.

Good luck!