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;
}
}
}
Pergunta
Marcos-rj
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:
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 loopDo While not Listar1.EOF Response.Write Listar1("NomClasseCertif") Listar1.MoveNext LoopErro: 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 DLLusing 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; } } }Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.