Hello,
Modify your Axapta code to be of the nature
changeCompany("xxx") {
<code you want to run>
}
Barry.
-----Original Message-----
From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of philwallker
Sent: Friday, 17 March 2006 1:19 AM
To: [email protected]
Subject: [development-axapta] AxaptaCOMConnector using incorrect
Company/DataAreaID
Hi All,
Context: I'm looking at integrating our stock-counting system
(Microsoft Access/VBA) more closely with Axapta using the
AxaptaCOMConnector. The intention is to automate the transfer of
results from the stock-counting system into an Axapta table called
SynStockTake. This will remove much user intervention to export/import
several batches of data.
Setup: I have created an Axapta class called SynStkTkRemote with a
method called countLinesAdd intended to be called from Access which
will add a record into the Axapta table. To create the standard COM I
created a new configuration called 'Connector' with the appropriate
application, database and company (DataAreaID) setup. I have tested
the AxaptaCOMConnector with the Axapta Class using VB6 and Microsoft
Access and VBA - and on the surface seems fine. The VB program creates
the COM Objects, Logs onto Axapta, executes Axapta methods, Logs Off
Axapta, and finally the objects are destroyed.
Problem: When the VB program launches, the button clicked to execute
the CountLinesAdd method works fine ONLY the first time it is used -
i.e. the records are added to SynStockTake as expected into the
correct company (SYN). There-after the class uses the 'DAT' company
instead - i.e. countLinesAdd() adds records to, and getCheckQty()
queries the 'DAT' dataAreaID. The only way to make sure the correct
company is used again is to completely close the program and re-run it
- which will not be feasible in a live environment. The class works
fine everytime within Axapta itself.
Attempted Solutions:
1) I've tried to force the Axapta Class to use the 'SYN' company
by adding ChangeCompany('SYN') and SynStockTake.company('SYN') with no
sucess.
2) It crossed my mind the AxaptaCOMConnector might be picking up
the Company from the 'Original (installed configuration)' Axapta
configuration so I amended the registry settings accordingly and
re-registered the COM Components, again with no sucess.
3) In the AxaptaCOMConnector.Axapta class, the logon() method
includes a parameter to specify the configuration used - this makes no
difference.
Axapta Version: Navision Axapta 3.0 Build #1951.210/514-90 SP2/OP023-19
User Operating System: WinXP
AxaptaCOMConnector version: 1.2
I've googled this problem with no result. Has anybody else experienced
this? I would be extremely grateful for any help/suggestions.
Axapta Class:
Code:
public class SynStkTkRemote
{
SynStockTake SynStockTake;
}
Static void Main(Args _args)
{
}
void new()
{
;
ChangeCompany('SYN')
SynStockTake.company('SYN');
}
private void setCompany()
{
;
ChangeCompany('SYN')
SynStockTake.company('SYN');
}
public int countLinesAdd(ItemID _ItemID, WMSLocationID _WMSLocationID,
WMSPalletID _WMSPalletID, InventQty _QtyCounted,
SynStkCntType _RecordType)
{
;
this.setCompany();
ttsbegin;
SynStockTake.clear();
SynStockTake.initValue();
SynStockTake.ItemId = _ItemID;
SynStockTake.WMSLocationId = _WMSLocationID;
SynStockTake.WMSPalletID = _WMSPalletID;
SynStockTake.QtyCounted = _QtyCounted;
SynStockTake.RecordType = _RecordType;
SynStockTake.insert();
ttscommit;
return 1; // to develop: return 0 if insert failed.
}
public real getCheckQty()
{
real checkQty;
;
this.setCompany();
SynStockTake.company('SYN');
checkQty = (Select Sum(QtyCounted) From SynStockTake).QtyCounted;
return checkQty;
}
VB6/VBA Code:
Code:
Private Sub cmdAddRecord_Click()
Dim Axapta As AxaptaCOMConnector.Axapta
Dim axStk As AxaptaCOMConnector.IAxaptaObject
Set Axapta = New AxaptaCOMConnector.Axapta
Axapta.Logon
Set axStk = Axapta.CreateObject("SynStkTkRemote")
MsgBox axStk.Call("countLinesAdd", Me.txtItemID.Text,
Me.txtLocation.Text, Me.txtStillage.Text, CInt(Me.txtQtyCounted), 1)
Axapta.Logoff
Set axStk = Nothing
Set Axapta = Nothing
End Sub
Private Sub cmdCheckQty_Click()
Dim Axapta As AxaptaCOMConnector.Axapta
Dim axStk As AxaptaCOMConnector.IAxaptaObject
Set Axapta = New AxaptaCOMConnector.Axapta
Axapta.Logon , , , "Connector"
Set axStk = Axapta.CreateObject("SynStkTkRemote")
MsgBox axStk.Call("getCheckQty")
Axapta.Logoff
Set axStk = Nothing
Set Axapta = Nothing
End Sub
Yahoo! Groups Links
SPONSORED LINKS
| Computer part | Programming languages | Microsoft axapta |
| Support exchange |
YAHOO! GROUPS LINKS
- Visit your group "development-axapta" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.

