Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcos-rj

Dll C# com ASP Classico

Recommended Posts

Boa tarde amigos!

Criei uma DLL C# e fiz as configurações necessárias para ficar visivel no registro de componentes e poder ser consumida pelo ASP clássico...

 

Criei 3 métodos nessa DLL:

 

public int Calculo(int a, int B)
public string strMensagem(string texto)
public DataSet RetornaDados(string strSql)

 

 

No 1º meto faz um cálculo e retorna o valor, no 2º somente retorna a string passada e no terceiro preciso que retorne uma consulta na base de dados.

 

To tentando fazer o retorno no ASP assim:

 

Set Listar = CreateObject("dllok.ComPlusClass")
Set Listar1 = Listar.RetornaDados("SELECT TOP 50 NomClasseCertif ,Sig_Oc FROM classe_c WHERE Sig_Oc is not null")

 

E faço o loop

Do While not Listar1.EOF
Response.Write Listar1("NomClasseCertif")
Listar1.MoveNext
Loop

 

Erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário

/teste.asp, line 31

 

Linha 31: Do While not Listar1.EOF

 

É como se não criasse o objeto.

 

alguém da uma ajuda aí?

 

Obrigado

 

 

O código da minha DLL

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;

[assembly: ApplicationName("_DLLTeste")]
[assembly: Description("ComPlus Assmebly")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationAccessControl(false)]

namespace dllok
{

#region iInterface

public interface iCldllok
{
	int Calculo(int a, int B);
	string strMensagem(string texto);
	DataSet RetornaDados(string strSql);
}

#endregion

[EventTrackingEnabled(true)]

public class ComPlusClass : ServicedComponent, iCldllok
{
	//private string connectionString = "Data Source=RDES01S;Initial Catalog=PRODUTOS_RWEB;User Id=MIMONTREAL;Password=MIDESENV;";
	private string connectionString = "Provider=SQLOLEDB;Data Source=RDES01S;Initial Catalog=PRODUTOS_RWEB;User Id=mimontreal;Password=midesenv;";

	public int Calculo(int a, int B)
	{
		try
		{
			return a * b;
		}
		catch
		{
			return 0;
		}
	}

	public string strMensagem(string texto)
	{
		return texto;
	}

	public DataSet RetornaDados(string strSql)
	{
		OleDbConnection conn = new OleDbConnection(connectionString);
		OleDbDataAdapter adp = new OleDbDataAdapter(strSql, conn);
		DataSet ds = new DataSet();
		adp.Fill(ds);
		conn.Close();
		return ds;

	}
}
}

 

 

 

tentei aqui e nada!

 

no ASP:

Set Listar = CreateObject("dllok.ComPlusClass")
Metodos OK:
Response.Write Listar.strMensagem("Testando...Marcos")&"<br><br>"

Response.Write FormatCurrency(Listar.calculo(530,20))&"<br><br>"

 

O 3º metodo:

Set Listar1 = Listar.RetornaDados("SELECT TOP 50 NomClasseCertif ,Sig_Oc FROM classe_c WHERE Sig_Oc is not null")
response.write Listar1

 

Dessa maneira retorna o erro:

Objeto Response, ASP 0106 (0x80020005)

Um tipo de dados não identificado foi encontrado.

 

se tento fazer um loop:

Do While not Listar1.EOF

Response.Write Listar1("NomClasseCertif")

Listar1.MoveNext

Loop

retorna o Erro:
Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário

/teste.asp, line 29

 

Mas o objeto já foi criado la em cima "Set Listar1 = ..."

 

Este problema pode ser por causa dos dados retornados, o formato, um dataset c# ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.