Custom Workflow Activity - Web Service Authentication Problems

I have create a custom workflow activity for CRM 4.0 and have
installed via dll on CRM server, however I cannot get it to
authenticate against the CRM service as I cannot find credentials
anywhere which are passed through.

See below code, neither CredentialCache.DefaultCredentials or
CredentialCache.DefaultNetworkCredentials contain any credentials
(having looked into their properties in the watch window), resulting
in no organisations being returned in orgResponse?

Any ideas as to where I can obtain the credentials in a workflow
activity to pass through?

            // STEP 1: Instantiate and configure the
CrmDiscoveryService Web service.
            discoveryService = new
CRMDiscoveryService.CrmDiscoveryService();
            discoveryService.Credentials =
CredentialCache.DefaultCredentials;
            discoveryService.Url = CRMDiscoveryService_Url;

            // STEP 2: Retrieve the organization name and endpoint Url
from the
            // CrmDiscoveryService Web service.
            RetrieveOrganizationsRequest orgRequest = new
RetrieveOrganizationsRequest();
            RetrieveOrganizationsResponse orgResponse =
                (RetrieveOrganizationsResponse)discoveryService.Execute
(orgRequest);

Thanks in advance.

Jim
0
jimtait00 (18)
12/10/2008 6:01:45 PM
crm 35858 articles. 1 followers. Follow

4 Replies
587 Views

Similar Articles

[PageSpeed] 2

This is a multi-part message in MIME format.

------=_NextPart_000_0073_01C95B96.81A3FDC0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi Jimtait,

In workflow CRM 4.0,you can create object of ICrmService and =
IMetadataService to connect to crm. For example.

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ICrmService service;

IMetadataService metadata;


protected override ActivityExecutionStatus =
Execute(ActivityExecutionContext

executionContext)

{

try

{


// Get the context service.

IContextService contextService =3D

(IContextService)executionContext.GetService(typeof(IContextService));

IWorkflowContext context =3D

contextService.Context;

//Create CRM Services

service =3D context.CreateCrmService();

metadata =3D context.CreateMetadataService();

strEntityId =3D

context.PrimaryEntityId.ToString();

strEntityName =3D

context.PrimaryEntityName.ToString();


}


}

The CRM service object obtained so already takes care of authentication.

HTH


Sam=20
_______________
Inogic
Innovative Logic
Innovative solutions for your SME ERP/CRM products
E-mail: crm@inogic.com
Web: www.inogic.com
--------------------------



"jimtait" <jimtait00@gmail.com> wrote in message =
news:f574d322-1c00-49f8-83ec-bdebc49ded44@v5g2000prm.googlegroups.com...
>I have create a custom workflow activity for CRM 4.0 and have
> installed via dll on CRM server, however I cannot get it to
> authenticate against the CRM service as I cannot find credentials
> anywhere which are passed through.
>=20
> See below code, neither CredentialCache.DefaultCredentials or
> CredentialCache.DefaultNetworkCredentials contain any credentials
> (having looked into their properties in the watch window), resulting
> in no organisations being returned in orgResponse?
>=20
> Any ideas as to where I can obtain the credentials in a workflow
> activity to pass through?
>=20
>            // STEP 1: Instantiate and configure the
> CrmDiscoveryService Web service.
>            discoveryService =3D new
> CRMDiscoveryService.CrmDiscoveryService();
>            discoveryService.Credentials =3D
> CredentialCache.DefaultCredentials;
>            discoveryService.Url =3D CRMDiscoveryService_Url;
>=20
>            // STEP 2: Retrieve the organization name and endpoint Url
> from the
>            // CrmDiscoveryService Web service.
>            RetrieveOrganizationsRequest orgRequest =3D new
> RetrieveOrganizationsRequest();
>            RetrieveOrganizationsResponse orgResponse =3D
>                (RetrieveOrganizationsResponse)discoveryService.Execute
> (orgRequest);
>=20
> Thanks in advance.
>=20
> Jim
------=_NextPart_000_0073_01C95B96.81A3FDC0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV>
<P><FONT face=3DArial size=3D2>Hi Jimtait,</FONT></P>
<P><FONT face=3DArial size=3D2>In workflow CRM 4.0,you can create object =
of=20
ICrmService and IMetadataService to connect to crm. For =
example.</FONT></P>
<P><FONT face=3DArial=20
size=3D2>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</FONT></P=
>
<P><FONT face=3DArial size=3D2>ICrmService service;</FONT></P>
<P><FONT face=3DArial size=3D2>IMetadataService metadata;</FONT></P>
<P><FONT face=3DArial size=3D2></FONT></P>
<P><FONT face=3DArial size=3D2>protected override =
ActivityExecutionStatus=20
Execute(ActivityExecutionContext</FONT></P>
<P><FONT face=3DArial size=3D2>executionContext)</FONT></P>
<P><FONT face=3DArial size=3D2>{</FONT></P>
<P><FONT face=3DArial size=3D2>try</FONT></P>
<P><FONT face=3DArial size=3D2>{</FONT></P>
<P><FONT face=3DArial size=3D2></FONT></P>
<P><FONT face=3DArial size=3D2>// Get the context service.</FONT></P>
<P><FONT face=3DArial size=3D2>IContextService contextService =
=3D</FONT></P>
<P><FONT face=3DArial=20
size=3D2>(IContextService)executionContext.GetService(typeof(IContextServ=
ice));</FONT></P>
<P><FONT face=3DArial size=3D2>IWorkflowContext context =3D</FONT></P>
<P><FONT face=3DArial size=3D2>contextService.Context;</FONT></P>
<P><FONT face=3DArial size=3D2>//Create CRM Services</FONT></P>
<P><FONT face=3DArial size=3D2>service =3D =
context.CreateCrmService();</FONT></P>
<P><FONT face=3DArial size=3D2>metadata =3D=20
context.CreateMetadataService();</FONT></P>
<P><FONT face=3DArial size=3D2>strEntityId =3D</FONT></P>
<P><FONT face=3DArial =
size=3D2>context.PrimaryEntityId.ToString();</FONT></P>
<P><FONT face=3DArial size=3D2>strEntityName =3D</FONT></P>
<P><FONT face=3DArial =
size=3D2>context.PrimaryEntityName.ToString();</FONT></P>
<P><FONT face=3DArial size=3D2></FONT></P>
<P><FONT face=3DArial size=3D2>}</FONT></P>
<P><FONT face=3DArial size=3D2></FONT></P>
<P><FONT face=3DArial size=3D2>}</FONT></P>
<P><FONT face=3DArial size=3D2>The CRM service object obtained so =
already takes care=20
of authentication.</FONT></P>
<P><FONT face=3DArial size=3D2>HTH</FONT></P><FONT face=3DArial =
size=3D2>
<P><BR>Sam&nbsp;<BR>_______________<BR>Inogic<BR>Innovative =
Logic<BR>Innovative=20
solutions for your SME ERP/CRM products<BR>E-mail: <A=20
href=3D"mailto:crm@inogic.com">crm@inogic.com</A><BR>Web: <A=20
href=3D"http://www.inogic.com">www.inogic.com</A><BR>--------------------=
------</P>
<P></FONT>&nbsp;</P></DIV>
<DIV><FONT face=3DArial size=3D2>"jimtait" &lt;</FONT><A=20
href=3D"mailto:jimtait00@gmail.com"><FONT face=3DArial=20
size=3D2>jimtait00@gmail.com</FONT></A><FONT face=3DArial size=3D2>&gt; =
wrote in=20
message </FONT><A=20
href=3D"news:f574d322-1c00-49f8-83ec-bdebc49ded44@v5g2000prm.googlegroups=
..com"><FONT=20
face=3DArial=20
size=3D2>news:f574d322-1c00-49f8-83ec-bdebc49ded44@v5g2000prm.googlegroup=
s.com</FONT></A><FONT=20
face=3DArial size=3D2>...</FONT></DIV><FONT face=3DArial size=3D2>&gt;I =
have create a=20
custom workflow activity for CRM 4.0 and have<BR>&gt; installed via dll =
on CRM=20
server, however I cannot get it to<BR>&gt; authenticate against the CRM =
service=20
as I cannot find credentials<BR>&gt; anywhere which are passed =
through.<BR>&gt;=20
<BR>&gt; See below code, neither CredentialCache.DefaultCredentials =
or<BR>&gt;=20
CredentialCache.DefaultNetworkCredentials contain any =
credentials<BR>&gt;=20
(having looked into their properties in the watch window), =
resulting<BR>&gt; in=20
no organisations being returned in orgResponse?<BR>&gt; <BR>&gt; Any =
ideas as to=20
where I can obtain the credentials in a workflow<BR>&gt; activity to =
pass=20
through?<BR>&gt;=20
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; //=20
STEP 1: Instantiate and configure the<BR>&gt; CrmDiscoveryService Web=20
service.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;=20
discoveryService =3D new<BR>&gt;=20
CRMDiscoveryService.CrmDiscoveryService();<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
discoveryService.Credentials =3D<BR>&gt;=20
CredentialCache.DefaultCredentials;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
discoveryService.Url =3D CRMDiscoveryService_Url;<BR>&gt;=20
<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; //=20
STEP 2: Retrieve the organization name and endpoint Url<BR>&gt; from=20
the<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp; //=20
CrmDiscoveryService Web=20
service.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;=20
RetrieveOrganizationsRequest orgRequest =3D new<BR>&gt;=20
RetrieveOrganizationsRequest();<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
RetrieveOrganizationsResponse orgResponse=20
=3D<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
(RetrieveOrganizationsResponse)discoveryService.Execute<BR>&gt;=20
(orgRequest);<BR>&gt; <BR>&gt; Thanks in advance.<BR>&gt; <BR>&gt;=20
Jim</FONT></BODY></HTML>

------=_NextPart_000_0073_01C95B96.81A3FDC0--

0
inogic (83)
12/11/2008 8:13:52 AM
On 11 Dec, 08:13, "Sam" <ino...@gmail.com> wrote:
> Hi Jimtait,
>
> In workflow CRM 4.0,you can create object of ICrmService and IMetadataSer=
vice to connect to crm. For example.
>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>
> ICrmService service;
>
> IMetadataService metadata;
>
> protected override ActivityExecutionStatus Execute(ActivityExecutionConte=
xt
>
> executionContext)
>
> {
>
> try
>
> {
>
> // Get the context service.
>
> IContextService contextService =3D
>
> (IContextService)executionContext.GetService(typeof(IContextService));
>
> IWorkflowContext context =3D
>
> contextService.Context;
>
> //Create CRM Services
>
> service =3D context.CreateCrmService();
>
> metadata =3D context.CreateMetadataService();
>
> strEntityId =3D
>
> context.PrimaryEntityId.ToString();
>
> strEntityName =3D
>
> context.PrimaryEntityName.ToString();
>
> }
> }
>
> The CRM service object obtained so already takes care of authentication.
>
> HTH
>
> Sam
> _______________
> Inogic
> Innovative Logic
> Innovative solutions for your SME ERP/CRM products
> E-mail: c...@inogic.com
> Web:www.inogic.com
> --------------------------
>
>
>
> "jimtait" <jimtai...@gmail.com> wrote in messagenews:f574d322-1c00-49f8-8=
3ec-bdebc49ded44@v5g2000prm.googlegroups.com...
> >I have create a custom workflow activity for CRM 4.0 and have
> > installed via dll on CRM server, however I cannot get it to
> > authenticate against the CRM service as I cannot find credentials
> > anywhere which are passed through.
>
> > See below code, neither CredentialCache.DefaultCredentials or
> > CredentialCache.DefaultNetworkCredentials contain any credentials
> > (having looked into their properties in the watch window), resulting
> > in no organisations being returned in orgResponse?
>
> > Any ideas as to where I can obtain the credentials in a workflow
> > activity to pass through?
>
> > =A0 =A0 =A0 =A0 =A0 =A0// STEP 1: Instantiate and configure the
> > CrmDiscoveryService Web service.
> > =A0 =A0 =A0 =A0 =A0 =A0discoveryService =3D new
> > CRMDiscoveryService.CrmDiscoveryService();
> > =A0 =A0 =A0 =A0 =A0 =A0discoveryService.Credentials =3D
> > CredentialCache.DefaultCredentials;
> > =A0 =A0 =A0 =A0 =A0 =A0discoveryService.Url =3D CRMDiscoveryService_Url=
;
>
> > =A0 =A0 =A0 =A0 =A0 =A0// STEP 2: Retrieve the organization name and en=
dpoint Url
> > from the
> > =A0 =A0 =A0 =A0 =A0 =A0// CrmDiscoveryService Web service.
> > =A0 =A0 =A0 =A0 =A0 =A0RetrieveOrganizationsRequest orgRequest =3D new
> > RetrieveOrganizationsRequest();
> > =A0 =A0 =A0 =A0 =A0 =A0RetrieveOrganizationsResponse orgResponse =3D
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(RetrieveOrganizationsResponse)discovery=
Service.Execute
> > (orgRequest);
>
> > Thanks in advance.
>
> > Jim- Hide quoted text -
>
> - Show quoted text -

Thanks for that Sam, problem is when I change to this method of
authentication get a load of invalid reference errors, as I've changed
my CRMService.CrmService mService reference to ICrmService mService;
I now get error like DynamicEntity not recognised etc.

Will I need to change all my CrmService calls now to use different
parameters etc?

Thanks.

Jim
0
jimtait00 (18)
12/11/2008 10:16:15 AM
Yes, if you use the ICRMService object you will need to use Dynamic Entities 
and yes there is quite a bit of change that will be required. :(

But using ICRMService.GetService() is a recommended way to get the correct 
CRM service object. It also takes care of recurrsive calls to the workflow 
plugin so it would be better if you go that way though it involves quite a 
bit of rewriting.

HTH


Sam
_______________
Inogic
Innovative Logic
Innovative solutions for your SME ERP/CRM products
E-mail: crm@inogic.com
Web: www.inogic.com
--------------------------


"jimtait" <jimtait00@gmail.com> wrote in message 
news:79c69446-fd30-4b8b-a4e8-f0382cf46a77@s1g2000prg.googlegroups.com...
On 11 Dec, 08:13, "Sam" <ino...@gmail.com> wrote:
> Hi Jimtait,
>
> In workflow CRM 4.0,you can create object of ICrmService and 
> IMetadataService to connect to crm. For example.
>
> ====================================================================
>
> ICrmService service;
>
> IMetadataService metadata;
>
> protected override ActivityExecutionStatus 
> Execute(ActivityExecutionContext
>
> executionContext)
>
> {
>
> try
>
> {
>
> // Get the context service.
>
> IContextService contextService =
>
> (IContextService)executionContext.GetService(typeof(IContextService));
>
> IWorkflowContext context =
>
> contextService.Context;
>
> //Create CRM Services
>
> service = context.CreateCrmService();
>
> metadata = context.CreateMetadataService();
>
> strEntityId =
>
> context.PrimaryEntityId.ToString();
>
> strEntityName =
>
> context.PrimaryEntityName.ToString();
>
> }
> }
>
> The CRM service object obtained so already takes care of authentication.
>
> HTH
>
> Sam
> _______________
> Inogic
> Innovative Logic
> Innovative solutions for your SME ERP/CRM products
> E-mail: c...@inogic.com
> Web:www.inogic.com
> --------------------------
>
>
>
> "jimtait" <jimtai...@gmail.com> wrote in 
> messagenews:f574d322-1c00-49f8-83ec-bdebc49ded44@v5g2000prm.googlegroups.com...
> >I have create a custom workflow activity for CRM 4.0 and have
> > installed via dll on CRM server, however I cannot get it to
> > authenticate against the CRM service as I cannot find credentials
> > anywhere which are passed through.
>
> > See below code, neither CredentialCache.DefaultCredentials or
> > CredentialCache.DefaultNetworkCredentials contain any credentials
> > (having looked into their properties in the watch window), resulting
> > in no organisations being returned in orgResponse?
>
> > Any ideas as to where I can obtain the credentials in a workflow
> > activity to pass through?
>
> > // STEP 1: Instantiate and configure the
> > CrmDiscoveryService Web service.
> > discoveryService = new
> > CRMDiscoveryService.CrmDiscoveryService();
> > discoveryService.Credentials =
> > CredentialCache.DefaultCredentials;
> > discoveryService.Url = CRMDiscoveryService_Url;
>
> > // STEP 2: Retrieve the organization name and endpoint Url
> > from the
> > // CrmDiscoveryService Web service.
> > RetrieveOrganizationsRequest orgRequest = new
> > RetrieveOrganizationsRequest();
> > RetrieveOrganizationsResponse orgResponse =
> > (RetrieveOrganizationsResponse)discoveryService.Execute
> > (orgRequest);
>
> > Thanks in advance.
>
> > Jim- Hide quoted text -
>
> - Show quoted text -

Thanks for that Sam, problem is when I change to this method of
authentication get a load of invalid reference errors, as I've changed
my CRMService.CrmService mService reference to ICrmService mService;
I now get error like DynamicEntity not recognised etc.

Will I need to change all my CrmService calls now to use different
parameters etc?

Thanks.

Jim 


0
inogic (83)
12/12/2008 6:49:12 AM
On 12 Dec, 06:49, "Sam" <ino...@gmail.com> wrote:
> Yes, if you use the ICRMService object you will need to use Dynamic Entities
> and yes there is quite a bit of change that will be required. :(
>
> But using ICRMService.GetService() is a recommended way to get the correct
> CRM service object. It also takes care of recurrsive calls to the workflow
> plugin so it would be better if you go that way though it involves quite a
> bit of rewriting.
>
> HTH
>
> Sam
> _______________
> Inogic
> Innovative Logic
> Innovative solutions for your SME ERP/CRM products
> E-mail: c...@inogic.com
> Web:www.inogic.com
> --------------------------
>
> "jimtait" <jimtai...@gmail.com> wrote in message
>
> news:79c69446-fd30-4b8b-a4e8-f0382cf46a77@s1g2000prg.googlegroups.com...
> On 11 Dec, 08:13, "Sam" <ino...@gmail.com> wrote:
>
>
>
>
>
> > Hi Jimtait,
>
> > In workflow CRM 4.0,you can create object of ICrmService and
> > IMetadataService to connect to crm. For example.
>
> > ====================================================================
>
> > ICrmService service;
>
> > IMetadataService metadata;
>
> > protected override ActivityExecutionStatus
> > Execute(ActivityExecutionContext
>
> > executionContext)
>
> > {
>
> > try
>
> > {
>
> > // Get the context service.
>
> > IContextService contextService =
>
> > (IContextService)executionContext.GetService(typeof(IContextService));
>
> > IWorkflowContext context =
>
> > contextService.Context;
>
> > //Create CRM Services
>
> > service = context.CreateCrmService();
>
> > metadata = context.CreateMetadataService();
>
> > strEntityId =
>
> > context.PrimaryEntityId.ToString();
>
> > strEntityName =
>
> > context.PrimaryEntityName.ToString();
>
> > }
> > }
>
> > The CRM service object obtained so already takes care of authentication.
>
> > HTH
>
> > Sam
> > _______________
> > Inogic
> > Innovative Logic
> > Innovative solutions for your SME ERP/CRM products
> > E-mail: c...@inogic.com
> > Web:www.inogic.com
> > --------------------------
>
> > "jimtait" <jimtai...@gmail.com> wrote in
> > messagenews:f574d322-1c00-49f8-83ec-bdebc49ded44@v5g2000prm.googlegroups.com...
> > >I have create a custom workflow activity for CRM 4.0 and have
> > > installed via dll on CRM server, however I cannot get it to
> > > authenticate against the CRM service as I cannot find credentials
> > > anywhere which are passed through.
>
> > > See below code, neither CredentialCache.DefaultCredentials or
> > > CredentialCache.DefaultNetworkCredentials contain any credentials
> > > (having looked into their properties in the watch window), resulting
> > > in no organisations being returned in orgResponse?
>
> > > Any ideas as to where I can obtain the credentials in a workflow
> > > activity to pass through?
>
> > > // STEP 1: Instantiate and configure the
> > > CrmDiscoveryService Web service.
> > > discoveryService = new
> > > CRMDiscoveryService.CrmDiscoveryService();
> > > discoveryService.Credentials =
> > > CredentialCache.DefaultCredentials;
> > > discoveryService.Url = CRMDiscoveryService_Url;
>
> > > // STEP 2: Retrieve the organization name and endpoint Url
> > > from the
> > > // CrmDiscoveryService Web service.
> > > RetrieveOrganizationsRequest orgRequest = new
> > > RetrieveOrganizationsRequest();
> > > RetrieveOrganizationsResponse orgResponse =
> > > (RetrieveOrganizationsResponse)discoveryService.Execute
> > > (orgRequest);
>
> > > Thanks in advance.
>
> > > Jim- Hide quoted text -
>
> > - Show quoted text -
>
> Thanks for that Sam, problem is when I change to this method of
> authentication get a load of invalid reference errors, as I've changed
> my CRMService.CrmService mService reference to ICrmService mService;
> I now get error like DynamicEntity not recognised etc.
>
> Will I need to change all my CrmService calls now to use different
> parameters etc?
>
> Thanks.
>
> Jim- Hide quoted text -
>
> - Show quoted text -

Thanks Sam, rewrote as advised and works like a charm. :-)
0
jimtait00 (18)
12/13/2008 11:19:08 AM
Reply:

Similar Artilces: