Ir para conteúdo
Fórum Script Brasil

Marcos-rj

Membros
  • Total de itens

    638
  • Registro em

  • Última visita

Posts postados por Marcos-rj

  1. Eu fiz isso, quando postei a segunda resposta. estou tentando refazer aqui, de uma outra maneira. sem usar o DataSet.

    Marcos, é preciso abrir a conexão com o banco na sua DLL.

    public DataSet RetornaDados(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(connectionString);
                OleDbDataAdapter adp = new OleDbDataAdapter(strSql, conn);
    
                            conn.Open(); // Está faltando abrir a conexão com o banco
    
                DataSet ds = new DataSet();
                adp.Fill(ds);
                conn.Close();
                return ds;
    
            }

  2. 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# ?

  3. 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;
    
            }
        }
    }

  4. Pelo que vejo, seu erro esta aqui: IF(@codprofissional='EXISTE') THEN

    Não vi você criar esta variável em nenhum lugar: @codprofissional

    tenta fazer assim:

    SELECT count(codprofissional) FROM tab_b WHERE "CONDIÇÃO" INTO @codprofissional;
    
    IF (@codprofissional > 0) THEN
    ...
    END IF;

  5. Boa noite amigos,

    to com uma aplicação em ASP.NET que dá o seguinte erro:

    Erro de Servidor no Aplicativo '/PortaldoConsumidor/back153/enquetes'.

    --------------------------------------------------------------------------------

    StartIndex não pode ser menor que zero.

    Nome do parâmetro: startIndex

    Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.ArgumentOutOfRangeException: StartIndex não pode ser menor que zero.

    Nome do parâmetro: startIndex

    Erro de Origem:

    Exceção não tratada foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

    Rastreamento de Pilha:

    [ArgumentOutOfRangeException: StartIndex não pode ser menor que zero.

    Nome do parâmetro: startIndex]System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) +7494975

    System.String.Substring(Int32 startIndex) +17

    _telaEnquetes.IncluirEnquete(Object sender, CommandEventArgs e) +1679

    System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e) +8738446

    System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +176

    System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10

    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13

    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36

    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

    --------------------------------------------------------------------------------

    Informações sobre a Versão: Microsoft .NET Framework Versão:2.0.50727.3615; Versão do ASP.NET:2.0.50727.3614

    Esta parte do sistema é uma ENQUETE, que faz upload de uma imagem no cadastro.

    Quando rodo o sistema localmente não dá erro. tipo LOCALHOST.

    Agora via WEB, ou acessando o sistema por outra máquina acontece este erro.

    alguém já viu isso??

  6. Bom dia amigos!

    Estou com o seguinte problema, to montando um relatório onde preciso listar os clientes que mais compraram na loja.

    to usando a seguinte SQL:

    ComandoSQL = "SELECT Count(p.idcompra) as totais, c.id, c.nome, c.sobrenome, c.data_cadastro, c.ativo, c.estado, p.idcompra, p.clienteid, p.status, p.totalcompra FROM clientes c, compras p WHERE c.id = p.clienteid AND p.status = '4' ORDER BY totais

    Só que acontece o seguinte:

    Só esta me listando 1 cliente usando a SQL desta maneira q postei.

    qundo tiro o Count(p.idcompra) a consulta me retorna todos os clientes compradores, mas como faço a ordenação pelo q mais comprou?

    aguadeço pela ajuda.

  7. Posso estar enganado, mas no include você não pode colocar este monte de variaveis.

    no include você coloca somente o nome do arquivo q vai incluir.

    ex: <!--#include file="pagina.asp"-->

  8. Usando a propriedade Session.TimeOut.

    A propriedade Session.TimeOut tem um máximo de 24 horas (1440 minutos).

    Ex: Session.timeout = 20

    -

    Complementando.

    Session.TimeOut = 60, isto significa 1 minuto.

    Session.TimeOut = 1200, aí você terá 20 minutos.

  9. Eu utilizo a seguinte função p/ calculo de fretes nos correios:

    'CALCULO DE FRETE
    function calcular_frete(origem, destino, peso, servico, declarar)
    sc_url="http://www.correios.com.br/encomendas/precos/calculo.cfm?Servico="& servico &"&CepDestino="& destino &"&CepOrigem="& origem &"&ValorDeclarado="&declarar&"&Peso="& peso&""&adicional_sc&"&resposta=xml"
    Set xml = Server.CreateObject("msxml2.DOMDocument.3.0")
    xml.async = false
    xml.setProperty "ServerHTTPRequest", True
    xml.validateOnParse =false
    xml.preserveWhiteSpace = false
    folha = xml.Load(sc_url)
    If Not folha Then
    calcular_frete = "0"
    Else
    Set preco_postal = xml.getElementsByTagName("preco_postal")
    preco_postal_ = preco_postal.item(0).text
    Set codigo = xml.getElementsByTagName("codigo")
    codigo_ = codigo.item(0).text
    if codigo_ = "0" then
    calcular_frete = formatnumber(replace(preco_postal_, ".", ","),2)
    else
    calcular_frete = "0"
    end if
    end if
    end function
    Exemplos de como chamar a função:
    '41017 - Encomenda Normal
    '41106 - PAC
    PAC = calcular_frete(cep_origem, cep_destino, peso, "41106", valor_declarado)
    '*****************************************************************
    
    '40010 = Sedex Convencional
    SEDEX = calcular_frete(cep_origem, cep_destino, peso, "40010", valor_declarado)
    '*****************************************************************
    
    '40215 = Sedex 10
    SEDEX10 = calcular_frete(cep_origem, cep_destino, peso, "40215", valor_declarado)
    '*****************************************************************
    
    '40045 = Sedex à cobrar
    SEDEXC = calcular_frete(cep_origem, cep_destino, peso, "40045", valor_declarado)
    '*****************************************************************

    Lembre-se que para Sedex à cobrar tem que declarar o Valor!

    T+

×
×
  • Criar Novo...