Resolved ADM2 - SDO using temp-table populated by AppServer program

djahn66

New Member
OpenEdge 10.2B
Windows 7
UNIX

I've created a SDO using a temp-table (based on a table in a database - the SDO has 3 fields). I'm trying to populate the SDO by calling an AppServer procedure that takes 2 input parameters and outputs a temp-table (with the same name as the temp-table of the SDO - tt-vbin).

But I'm getting the AppServer error message "App Server ERROR: Parameter number 3 (table tt-vbin) mismatch - has 3 fields - client schema has 210 fields (8030)".

Has anyone ever run into this error? If so, how did you correct it?

Any guidance appreciated. Thanks.
 

RealHeavyDude

Well-Known Member
The error message tells you that the version of the Temp-Table compiled into the server part and the client proxy of the SDO do not match. If you use an include file for the Temp-Table definition I would speculate: You did not distribute the same version of the include file on the client and on the server side. But to give you a better advise you would need to give more information or post some code. Especially you should elaborate on how and when you call the AppServer and how your ASPartition property is set. When you do ( post some code ), please wrap it in code tags for better readability.

Heavy Regards, RealHeavyDude.
 

djahn66

New Member
Per my boss, I cannot split the SDO client server. But, I need to populate the SDO using a temp table that is created on the server then passed to the SDO via parameter. The temp table has 3 elements that are defined exactly the same in both the SDO and the AppServer procedure.

Here's the server code:

Code:
 define temp-table tt-vbin no-undo
 
  field cust-no          like shiphead.cust-no
 
  field acct-coor        like shiphead.acct-coor
 
  field id                like shiphead.id.

And here's the code from the SDO:

Code:
&Scoped-Define ENABLED-FIELDS
&Scoped-Define DATA-FIELDS  ID Cust-no Acct-Coor
&Scoped-define DATA-FIELDS-IN-tt-vbin ID Cust-no Acct-Coor
&Scoped-Define MANDATORY-FIELDS
&Scoped-Define APPLICATION-SERVICE
&Scoped-Define ASSIGN-LIST
&Scoped-Define DATA-FIELD-DEFS "imp/vbin2.i"
&Scoped-Define DATA-TABLE-NO-UNDO NO-UNDO
&Scoped-define QUERY-STRING-Query-Main FOR EACH tt-vbin NO-LOCK INDEXED-REPOSITION
{&DB-REQUIRED-START}
&Scoped-define OPEN-QUERY-Query-Main OPEN QUERY Query-Main FOR EACH tt-vbin NO-LOCK INDEXED-REPOSITION.
{&DB-REQUIRED-END}
&Scoped-define TABLES-IN-QUERY-Query-Main tt-vbin
&Scoped-define FIRST-TABLE-IN-QUERY-Query-Main tt-vbin

SDO .i file:
Code:
  FIELD ID LIKE Shiphead.ID~
 
  FIELD Cust-no LIKE Shiphead.Cust-no~
 
  FIELD Acct-Coor LIKE Shiphead.Acct-Coor
 

RealHeavyDude

Well-Known Member
Please bear with me - it is a long time ago since I had something to with ADM2.

Your boss is right. You can not split a SDO that is based on a Temp-Table across the AppServer boundary - and it does not make any sense. Most likely your AppServer is stateless and therefore the server part of the SDO gets run and instantiated with every request. If you think about what that means for the lifecycle of your Temp-Table you might see this.

Usually you run a SDO based on a Temp-Table client side only. To achieve it you can set the AppService property of the SDO to blank so that it only lives on the client side and the standard logic will never call the server. Then you would have a logic, say in initializeObject, that would call you custome logic on the AppSever to fetch the Temp-Table and then some other logic to save changes back - if applicable.

Heavy Regards, RealHeavyDude.
 

djahn66

New Member
You've got it, RHD.

Unfortunately, I'm still getting the error. Of course, Progress' Kbase sucks and I can no longer search based on error message number and a search using the number has come up empty.
 

Stefan

Well-Known Member
You can also search the online knowledge base with Google search, although error 8030 seems to have no hits, but 132 (for example) does:

site:knowledgebase.progress.com error132
 
Top