marcos-rj 0 Denunciar post Postado Outubro 25, 2011 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.EOFResponse.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
Ivan.Teles 23 Denunciar post Postado Outubro 25, 2011 Eu creio que sim! Acho que no asp clássico não da pra trabalhar com o objeto DataSet. Compartilhar este post Link para o post Compartilhar em outros sites