Ir para conteúdo
Fórum Script Brasil
  • 0

Importar Classe Em Aspx2.0


Oraculum

Pergunta

bom pessoal eu tinha criado uma função numa das minhas paginas da minha aplicação ela verifica se o usuario pode acessar a pagina, se pode apagar, enfim outras coisas mais, eu trabalhava em asp1.0 ela funcionava normalmente eu apenas chamava ela informando o nome da pagina onde ela tinha sido escrita:

pagina.funcao()

o problema é que ao migrar para asp2.0 eu não consigo utiliza-la apenas nas novas paginas que eu criei na versao 2.0 pois as paginas que haviam sido criadas na asp1.0 e que foram "convertidas" para a versao 2.0 a função funciona normalmente, vou colocar o codigo pra voces me falarem se eu errei alguma coisa:

Partial Class penrose_acessos
    Inherits System.Web.UI.Page
  
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim strPaginaNome As String = "Usuarios"

'essa é a classe onde está com problema, não sei mas como chama-la em asp2.0
      
If atendimento.Acesso(Me.strPaginaNome, Application("bd")).blnVer = False Then
            Response.Redirect("./acesso_bloqueado.aspx")
End If

    End Sub

end class

o vs2005 está dizendo:

Error 108 Name 'atendimento' is not declared. c:\inetpub\wwwroot\mmsdp\penrose\acessos.aspx.vb 6 12 http://localhost/mmsdp/

por favor poderiam me dizer como faço pra chamar as funções em asp2.0? tenho que importar alguma coisa antes????

Agradeço desde já a atenção dispensada...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Primeiramente gostaria de agradecer a atenção dispensada.

Também achei que o problema era pelo fato de não ter declarado o atendimento, pois quando usava o vs2003 ele declarava um monte de variaveis numa parte do código e nesse novo vs2005 ele não declara nenhuma variavel no codigo apenas imprimi:

Partial Class penrose_acessos

Inherits System.Web.UI.Page

Outro fato que tambem percebi é que no vs2005 não tem a barra de "class" onde tinha todos as classes e componentes de nosso aplicativo.

o problema é que não sei como declarar o "atendimento".

Graymalkin você poderia me dar um exemplo pratico de como fazer isso?

obs. atendimento é a pagina e a classe onde está a função Acesso

Link para o comentário
Compartilhar em outros sites

  • 0

Logo abaixo da linha "Inherits ..." você pode declarar esse objeto, porém você deverá utilizar o nome da classe (o nome da classe é "atendimento"?). Exemplo:

dim x as new atendimento()

Supondo que "atendimento" é o nome da classe e que "x" será o objeto a ser utilizado. Sendo que sem saber como você fez essa classe e onde ela está fica difícil dizer se o código acima vai ser válido no seu caso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin eu tentei declarar da forma que voce me disse mais não deu certo.

Bom Graymalkin vou postar o codigo para ver se voce pode me ajudar:

A classe onde está a funcão

'nome da aplicação
Namespace mmsdp

'pagina onde está a classe a ser utilizada, normalmente o vs2003 cria a classe com o  mesmo nome da pagina.
Partial Class atendimento
    Inherits System.Web.UI.Page

    Public Structure Permissao
        Public blnVer As Boolean
        Public blnApagar As Boolean
    End Structure


'[b]essa é a classe que eu utilizo, quando tento invocar ela do vs2003 ela funciona normalmente, mas para as paginas que foram criadas em vs2005 ela paresenta o error acima[/b]
       Public Shared Function Acesso(ByVal strPagina As String, ByVal conx As String) As Permissao

            Dim connAccessos As System.Data.OleDb.OleDbConnection
            Dim queryAcessos As System.Data.OleDb.OleDbCommand
            Dim drAcesso As System.Data.OleDb.OleDbDataReader
            Dim p As Permissao = New Permissao

            connAccessos = New System.Data.OleDb.OleDbConnection
            queryAcessos = New System.Data.OleDb.OleDbCommand

            connAccessos.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & conx
            queryAcessos.CommandText = "SELECT Acessos.* FROM Acessos WHERE (ID = @ID) AND (PaginaID = @PaginaID)"
            queryAcessos.Connection = connAccessos

            connAccessos.Open()
            queryAcessos.Parameters.Add("@ID", Convert.ToString(HttpContext.Current.User.Identity.Name))
            queryAcessos.Parameters.Add("@PaginaID", strPagina)
            drAcesso = queryAcessos.ExecuteReader 'executa a query


            While drAcesso.Read()

                If Not drAcesso.HasRows Then

                    p.blnVer = False

                Else

                    If drAcesso.Item("Apagar") = True Then
                        p.blnApagar = True
                    Else
                        p.blnApagar = False
                    End If

                    p.blnVer = True

                End If

            End While

            drAcesso.Close()
            connAccessos.Close()

            Return p
        End Function

    End Class

End Namespace
agora é a pagina onde eu tento reutilizar essa função:
Partial Class penrose_acessos
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim strPaginaNome As String = "Usuarios"
        If atendimento.Acesso(strPaginaNome, Application("bd")).blnVer = False Then
            Response.Redirect("./acesso_bloqueado.aspx")
        End If

        Me.lbMyID.Text = HttpContext.Current.User.Identity.Name
        Me.tbID.Text = Request.QueryString("ID")
    End Sub
em uma pagina criada no vs2003 eu apenas fazia isso e tava tudo certo:
Namespace mmsdp

Partial Class atendimento_rel_atendido
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then

                Me.lbMyID.Text = HttpContext.Current.User.Identity.Name

                Me.strPaginaNome = "RelatorioAtendimento"
                If atendimento.Acesso(Me.strPaginaNome, Application("bd")).blnVer = False Then
                    Response.Redirect("./acesso_bloqueado.aspx")
                End If


                  ....



Não sei como resolver esse problema é no entanto eu preciso realmente de fazer isso funcionar senão terei que reescrever boa parte do codigo destas paginas novas para poder rodar em vs2003.

Agradeço desde já a atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

beleza Oraculum? cara é o seguinte a forma que o Graymalkin passou esta correta e deveria funcionar. Mas como você disse que mesmo assim não está dando certo, eu vou tentar criar um exemplo aqui para ver se ficar melhor ok? Bom só pra deixar claro, eu não programo em vb.net prefiro C# então vai desculpando o exemplo simples ^^

'Esta seria sua classe atendimento, só para resaltar tente criar um construtor para ela, ter um construtor em suas classes é bom e você vai está seguindo o padrão POO. Veja o construtor da minha classe é o metodo Class1()

Public Class Class1

    Public Sub Class1()
        'não faz nada
    End Sub

    Public Sub testaMetodo()
        'execulta alguma coisa
    End Sub

End Class
Essa seria a classe onde você estaria tentando acessar a outra, chamada por você de pagina.
Public Class Form1

    Private x As New Class1() ' Criando um objeto da classe Class1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        x.testaMetodo() 'Invocando o metodo teste de sua classe
    End Sub
End Class

Bom como já havia dito não programo usando vb mas testei aqui em meu visual 2005 e está tudo ok, espero que agora tenha ficado mais claro apesar de que o que o Graymalkin falou desde do inicio esta correto então tentei apenas clarear um pouco mais o que ele disse.

Falws Boa Sorte!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Caraca foi sofrido mais saiu consegui resolver, aos que me deram atenção Rudolfo e Graymalkin meus sinceros agradecimentos, mas o error na verdade foi onde eu colocava a classe, eu estava colocando na pagina de atendimento (uma pagina qualquer como todas as outras) sendo que o certo seria colocar dentro do global.asax, é isso aí, não sei se esse procedimento é correto mais o que importa é que funcionou.

Agora como cheguei à solução: quando eu digitava "mmsdp" que era o nome da aplicação eu logo em seguida inseria um ponto daí ele me aparecia com uma subclasse chamada "Global" eu fiquei pensando que merda de global é esse, era pra ele me mostrar as minhas paginas inclusive a "atendimento" onde estava a função, daí eu tentei declarar do jeito que voces haviam me mostrado, infelizmente sem sucesso, eu então me lembrei do global.asax e resolvi colocar a função lá afinal não tinha nada a perder, e sabe o que aconteceu? bhan o vs2005 reconheceu a função que estava dentro da global.asax, se é o correto não sei a unica coisa que importa agora é que funcionou, agora posso até declarar ela como voces me mostraram.

Novamente Agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Beleza Oraculum, legal você ter colocado para funcionar e melhor ainda do seu jeito. Então é isso aí boa sorte no seu projeto e qualquer dúvida estaremos aqui pra tentar ajudar de alguma forma.

Abraços,

Rudolfo

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...