C
Claire
Hello,
I have a COM object and I am trying to convert to early binding code to
late
binding code
How can I convert the half of my codes, any idea pls
Why I am trying to do this is I dont want to register my COM for all the
client installation, when referencing, my application is searching for COM
Object (as u know
)
Thanks for all
PART I ( My Normal Code to be converted )
//
private void SaveOrderToAccounting()
{
MYCOMOBJ.MYCOMOBJApplication ComApp = new
MYCOMOBJ.MYCOMOBJApplication(); // Com Object Instance Created
if (ComApp.Login("UserName", "UserPass", "DesiredFirmCode")) //
Logged In By Using Com Object Login Method
{
MYCOMOBJ.MYData MyOrder =
ComApp.NewDataObject(MYCOMOBJ.DataObjectType.doSalesOrderSlip); // MyData is
a Type In COM Object, Order Header
MyOrder.New(); // New Order Created
MyOrder.DataFields.FieldByName("NUMBER").Value = "9999"; //
Set Header Field
MyOrder.DataFields.FieldByName("TOTAL").Value = "90000"; //
Set Header Field
MYCOMOBJ.MyLines MyOrderLines =
MyOrder.DataFields.FieldByName("TRANSACTIONS").Lines; // MyLines is a Type
In COM Object, Order Lines
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[0].FieldByName("TYPE").Value = 0; // Set Line
Field
MyOrderLines[0].FieldByName("LINECODE").Value =
"STOCKCODE1"; // Set Line Field
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[1].FieldByName("TYPE").Value = 0; // Set Line
Field
MyOrderLines[1].FieldByName("LINECODE").Value =
"STOCKCODE2"; // Set Line Field
MyOrder.Post(); // New Order Posted
}
else MessageBox.Show(ComApp.GetLastError().ToString()); // Catch
Error Why Cannot Connect
}
//
PART II ( My Half Converted Code )
//
private void SaveOrderToAccounting_DynamicLoad()
{
System.Type oType =
System.Type.GetTypeFromProgID("MYCOMOBJ.MYCOMOBJApplication");
object o = System.Activator.CreateInstance(oType);
try
{
bool Logged = Convert.ToBoolean(oType.InvokeMember("Login",
System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {
"UserName", "UserPass", "DesiredFirmCode" }));
if (Logged)
{
/// UnSuccessfull Part Start
/// How Can I Convert Below Lines ?
/// My NewDataObject methow must return MyOrder
MYCOMOBJ.MYData MyOrder =
ComApp.NewDataObject(MYCOMOBJ.DataObjectType.doSalesOrderSlip); // MyData is
a Type In COM Object, Order Header
MyOrder.New(); // New Order Created
MyOrder.DataFields.FieldByName("NUMBER").Value = "9999";
// Set Header Field
MyOrder.DataFields.FieldByName("TOTAL").Value = "90000";
// Set Header Field
MYCOMOBJ.MyLines MyOrderLines =
MyOrder.DataFields.FieldByName("TRANSACTIONS").Lines; // MyLines is a Type
In COM Object, Order Lines
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[0].FieldByName("TYPE").Value = 0; // Set
Line Field
MyOrderLines[0].FieldByName("LINECODE").Value =
"STOCKCODE1"; // Set Line Field
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[1].FieldByName("TYPE").Value = 0; // Set
Line Field
MyOrderLines[1].FieldByName("LINECODE").Value =
"STOCKCODE2"; // Set Line Field
MyOrder.Post(); // New Order Posted
/// UnSuccessfull Part End
///
///
}
else
{
string ErrCode =
Convert.ToString(oType.InvokeMember("GetLastError",
System.Reflection.BindingFlags.InvokeMethod, null, o, null));
MessageBox.Show(ErrCode);
}
}
}
//
I have a COM object and I am trying to convert to early binding code to
late
binding code
How can I convert the half of my codes, any idea pls
Why I am trying to do this is I dont want to register my COM for all the
client installation, when referencing, my application is searching for COM
Object (as u know

Thanks for all
PART I ( My Normal Code to be converted )
//
private void SaveOrderToAccounting()
{
MYCOMOBJ.MYCOMOBJApplication ComApp = new
MYCOMOBJ.MYCOMOBJApplication(); // Com Object Instance Created
if (ComApp.Login("UserName", "UserPass", "DesiredFirmCode")) //
Logged In By Using Com Object Login Method
{
MYCOMOBJ.MYData MyOrder =
ComApp.NewDataObject(MYCOMOBJ.DataObjectType.doSalesOrderSlip); // MyData is
a Type In COM Object, Order Header
MyOrder.New(); // New Order Created
MyOrder.DataFields.FieldByName("NUMBER").Value = "9999"; //
Set Header Field
MyOrder.DataFields.FieldByName("TOTAL").Value = "90000"; //
Set Header Field
MYCOMOBJ.MyLines MyOrderLines =
MyOrder.DataFields.FieldByName("TRANSACTIONS").Lines; // MyLines is a Type
In COM Object, Order Lines
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[0].FieldByName("TYPE").Value = 0; // Set Line
Field
MyOrderLines[0].FieldByName("LINECODE").Value =
"STOCKCODE1"; // Set Line Field
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[1].FieldByName("TYPE").Value = 0; // Set Line
Field
MyOrderLines[1].FieldByName("LINECODE").Value =
"STOCKCODE2"; // Set Line Field
MyOrder.Post(); // New Order Posted
}
else MessageBox.Show(ComApp.GetLastError().ToString()); // Catch
Error Why Cannot Connect
}
//
PART II ( My Half Converted Code )
//
private void SaveOrderToAccounting_DynamicLoad()
{
System.Type oType =
System.Type.GetTypeFromProgID("MYCOMOBJ.MYCOMOBJApplication");
object o = System.Activator.CreateInstance(oType);
try
{
bool Logged = Convert.ToBoolean(oType.InvokeMember("Login",
System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {
"UserName", "UserPass", "DesiredFirmCode" }));
if (Logged)
{
/// UnSuccessfull Part Start
/// How Can I Convert Below Lines ?
/// My NewDataObject methow must return MyOrder
MYCOMOBJ.MYData MyOrder =
ComApp.NewDataObject(MYCOMOBJ.DataObjectType.doSalesOrderSlip); // MyData is
a Type In COM Object, Order Header
MyOrder.New(); // New Order Created
MyOrder.DataFields.FieldByName("NUMBER").Value = "9999";
// Set Header Field
MyOrder.DataFields.FieldByName("TOTAL").Value = "90000";
// Set Header Field
MYCOMOBJ.MyLines MyOrderLines =
MyOrder.DataFields.FieldByName("TRANSACTIONS").Lines; // MyLines is a Type
In COM Object, Order Lines
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[0].FieldByName("TYPE").Value = 0; // Set
Line Field
MyOrderLines[0].FieldByName("LINECODE").Value =
"STOCKCODE1"; // Set Line Field
MyOrderLines.AppendLine(); // Insert Order Line
MyOrderLines[1].FieldByName("TYPE").Value = 0; // Set
Line Field
MyOrderLines[1].FieldByName("LINECODE").Value =
"STOCKCODE2"; // Set Line Field
MyOrder.Post(); // New Order Posted
/// UnSuccessfull Part End
///
///
}
else
{
string ErrCode =
Convert.ToString(oType.InvokeMember("GetLastError",
System.Reflection.BindingFlags.InvokeMethod, null, o, null));
MessageBox.Show(ErrCode);
}
}
}
//