Arquivo

Arquivo da Categoria ‘VB.NET’

Resolvendo problemas com Vista/7 64, IIS e Access.

20, setembro, 2011 Sem comentários

Dica: Resolvendo problemas com Vista 64, IIS e Access

Pessoal vai uma dica importante para quem pretende desenvolver com Windows 64 bits rodando os sites no IIS utilizando Access.

Bom o primeiro problema é que utilizando OleDb ele não funciona caso o aplicativo não esteja compilado para x86, então ao tentar executar algo aparece a seguinte mensagem de erro:

O provedor “Microsoft.Jet.OLEDB.4.0” não está registrado na máquina local.

Bom então para resolver esse problema devemos forçar a compilação do nosso aplicativo para x86, clique com o botão direito no projeto dentro do Solution Explorer e depois em Propriedades. Na guia Compile, clique em Advanced Compile Options e altere Plataform target para x86.

Feito isso publique novamente o site no IIS, e agora outro erro ocorrerá, o site não vai mais abrir, agora para resolver o problema temos que configurar o Application Pool do IIS para aceitar aplicativos 32 bits.

Bom, agora o site volta a funcionar e o erro do provider não ocorre mais, mas temos que tomar cuidado com mais um detalhe, como é Access o arquivo pode estar configurado como Somente Leitura, caso esteja o seguinte erro vai ocorrer ao tentar salvar algo no banco.

Microsoft OLE DB Provider for ODBC Drivers
A operação deve usar uma consulta atualizável.

Caso isso ocorra é só dar permissão de escrita para o usuário do IIS no arquivo.

Bom é isso ai, caso forem utilizar Windows 64bits, IIS e access é só seguir os passos descritos aqui que tudo funcionará.

Fonte: Blog do Márcio Fábio Althmann

Upoad no AJAX

5, julho, 2010 Sem comentários

Eu estou desenvolvendo um projeto onde há um módulo de webmail, após aluns meses (e poe mês nisso) estou de volta com essa funcionalidade, dentre os ajustes é permitir que a mensagem seja aberta em pop-up, assim o usuário pode arrasta-la pra onde quiser.

O problema começou quando eu coloquei os objetos dentro do UpdadePanel, então as reclamações chegaram, “Não consigo anexar !!”. Foi aí que eu me lembrei q upload não roda em AJAX, dentro do UpdatePanel. Coisa de gente enferrujada.

Então pensei, esse problema já existe há algum tempo, será que alguém já conseguiu resolver ???

Após uma pesquisa que levou um dia inteiro em fóruns pelo mundo afora, e ler diversos códigos que não servem para nada, e respostas a perguntas que não foram feitas, vi um cara falando sobre abrir o upload dentro de um IFRAME, logo que vi aquilo pensei… Meu Deus, iframe agora é crime federal, os browsers não aceitam, não dá pra chamar métodos dele, e por ai vai…

Bom, apostei na idéia, cheguei até o ponto de criar o iframe, mas não conseguia abrir diversos uploads de uma vez, ee já fazia isso, com um DataGrid com TemplateColumn e dentro dele um UploadFile, mas nesse caso seriam diversos iframes.

No IE funcionou que foi uma maravilha, mas no FireFox não ia, mas nem com reza brava, o erro estava justamente abaixo:

Meu código:

parent.document.getElementById(‘nomedoiframe’).document.getElementById(‘btSubir’).click();

Então procurei sobre como acessar os objetos da janela que foi aberta pelo iframe, então descobri um abençoado que resolveu o problema, e ainda puxou a orelha do pig coder, está no guia de referncia do FireFox.

document.getElementById(”nomedoiframe”).contentWindow.document.getElementById(‘btSubir’).click();

O Segredo todo está no contentWindow, terminei meu protótipo e segue abaixo o link pra baixar:

Upload Ajax

ViewState, um problema sério a ser resolvido.

3, novembro, 2009 Sem comentários

Como todos os que trabalham com .NET em web applications, o ViewState é um recurso que torna o desenvolvimento muito mais ágil do que no antigo ASP, eu mesmo, fiz diversas vezes asjutes técnicos (vulgo gambiarra) para pegar valores de postback, eu sempre trabalhei com uma página para cara entidade, e isso me custou muito tempo de desenvolvimento para cada módulo.

Quando iniciei minhas atividades na plataforma .NET, com o VB.NET 2002, eu não liguei muito para o ViewState, achava ele bonitinho, mas pesado demais. Hoje ele se tornou um empecilho muito grande para algumas aplicações, pois,  dependendo do número de objetos que tenho em uma página, ele fica imenso.

Após pesquisar por diversos fóruns sobre o assunto, descobri que antes de aplicar qualquer script miraculoso, devemos seguir os passos que vi no Site do Macoratti.

Segundo ele, devemos desabilitar o ViewState para controles onde não é necessário o ViewState, como por exemplo, botões, eles têm suas propriedades pré-definidas em tempo de desenvolvimento, e muitas delas não são alteradas durante a execução, mas mesmo assim consomem tráfego de rede.

A partir daqui, podemos aplicar duas soluções que encontrei, são elas:

– Armazenar o conteúdo de ViewState em Session, isso consome recurso no servidor, mas reduz o tráfego de página consideravelmente, separei dois links sobre o assunto:

http://social.msdn.microsoft.com/forums/pt-BR/aspnetpt/thread/d54b5ef6-35e3-4709-807f-f5ba8706274f/

http://www.codeproject.com/KB/viewstate/ServerViewState.aspx

O primeiro simplestemte grava o ViewState em uma variável Session, e lê o valor da mesma. O segundo faz um controle mais minucioso, pois envolve a página e outros controles, só têm um defeito, ele pede a conversão de uma Session em DataTable, se você trabalha com o projeto com a diretiva Strict ativa deve-se converter a Session em DataTable.

Outro método para isso, é compactar o ViewState utilizando o componente GZip do próprio .NET, veja como no link abaixo:

http://www.linhadecodigo.com.br/Artigo.aspx?id=1461

Eu escrevi duas classes que estarei testando, e avalizando o custo x benefício de ambas, assim que eu tiver um resultado volot a postar aqui.

Para baixar, clique ao lado: CompactViewState

Para aplicar automaticamente no seu projeto, crie um Code File no seu projeto web, e altere a herança das páginas ASPX de System.Web.UI.Page para MDViewState ou VSPage, pois ambas já herdam o System.Web.UI.Page.

Outro link interessante sobre o assunto, está em inglês, mas é muito educativo:

http://www.aspnetresources.com/articles/ViewState.aspx

Categories: VB.NET Tags: , , ,

Totalizar campo em DataTable.

15, outubro, 2009 Sem comentários

Caros,

Sempre que eu tinha que totalizar um campo em um datatable, eu aproveitava o looping que eu fazia após carregar o DataGrid, eu já havia pesquisado sobre como totalizar um campo de um DataTable, mas não tive tempo de colocar em prática.

Mistério desvendado, então segue o código:

Dim strSQL as String = “”
Dim tbNotaFiscal as New DataTable
Dim I as int32 = 0
Dim FaturamentoTotal as Double = 0

strSQL = “SELECT NUMERONOTA, VALOR FROM NOTAFISCAL”
With New Conexao.Oracle
           tbNotaFiscal = .CarregarDataTable(strSQL, “NOTAFISCAL”)
           .Fechar
End With

(Versão Anterior)
For I = 0 to tbNotaFiscal.rows.count -1
      FaturamentoTotal += Convert.ToDouble(tbNotaFiscal.Rows(i).Item(“VALOR”))
Next

(Versão com Compute)
FaturamentoTotal = tbNotaFiscal.Compute(“SUM(VALOR)”)

Isso impacta diretamente na performance, pois não é preciso fazer looping em um DataTable para que seja feita a soma, nesse caso a totalização é feita pelo própria função do objeto DataTable.

Outro ponto importante, nunca, mas nunca se esqueça de fechar a conexão com o Banco de Dados após seu uso.

Categories: VB.NET Tags: , , ,

Erro no Visual Studio novamente.

25, setembro, 2009 2 comentários

O erro anterior no Visual Studio não foi resolvido apenas desinstalando o MSXML4.0, estou partindo para a remoção e reinstalação da ferramenta, afinal a Microsoft não apresenta solução para o problema, vamos ver no que dá.

Categories: VB.NET Tags: ,

Erro no Visual Studio 2005 (Visual Studio Explorer and Designer Package)

24, setembro, 2009 Sem comentários

Estava mexendo no Visual Studio 2005, fiz as alterações que eu precisava no projeto, quando mandei dar o build, recebi diversos erros relativos aos webservices que tenho no projeto.

Cliquei com o botão direito na referencia do Webservice e cliquei em Update Web Reference. E não é que recebi a mensagem abaixo na cara…

Package ‘Visual Studio Explorer and Designer Package’ has failed to load properly (GUID={8D8529D3-625D-4496-8354-3D1D630ECC1B}). Please contact package vendor for assistance. Application restart is recommended, due to possible environment corruption. Would you like to disable loading this package in the future? You may use ‘devenv/resetskippkgs’ to re-enable package loading.

Bom, fui ao São Google e fui digitando as palavras do erro, quando ele completou o erro completo com um zilhão de resultados.

Depois de olhar várias soluções, e não encontrar nenhuma solução plausível, pois todas tratavam da versão Beta 2, e VS 2008, um cara disse que depois que ele removeu um addon do VS tudo voltou ao normal, então eu procurei esse cara e não encontrei, mas lembrei q a minha máquina tinha feito um update recentemente, e descobri q foi instalado o MSXML4.0 SP2, removi os ditos e tudo se normalizou.

Biblioteca de conexão.

22, setembro, 2009 Sem comentários

Quando comecei a programar em .NET eu utilizava o VS 2003. Fui a um evento da Microsoft, o PDC 2004, e lá em uma palestra nos passaram uma biblioteca de conexão com banco de dados chamada SQL Helper, eu utilizei a mesma em alguns projetos, mas depois que comecei a utilizar o VS 2005 com o Framework 2.0 essa biblioteca ficou obsoleta, então eu resolvi pergar as funções mais importantes, e resumi em uma biblioteca mais enxuta.

A Biblioteca possui 3 classes, são elas:

  • MSSQL – Conexão com SQL Server
  • Oracle – Conexão com Oracle
  • ODBC – Conexão ODBC genérica

Todas as classes possuem as seguintes funções:

  • ExecutarLeitura – Função que retorna um SqlDataReader para leitura.
  • ExecutarNonQuery – Função para executar uma query SQL que não precisa retornar nada.
  • ExecutarScalar – Função que executa uma query SQL e retorna um valor Long.
  • CarregarDataSet – Função que retorna um DataSet com uma DataTable populada de acordo com a query SQL informada.
  • CarregarDataTable – Função que retorna somente uma DataTable de acordo com a query SQL informada.

Utilização:

Carregando um DataTable.

With new Conexao

tbUsuario = .CarregarDataTable(“SELECT * FROM USUARIO”)

.Fechar <– não se esqueça de chamar o método para fechar a conexão com o banco.

End With

Executando uma query simples.

With new Conexao

.ExecuteNonQuery(“DELETE FROM USUARIO WHERE ID = 3”)

.Fechar

End With

Para baixar a biblioteca, utilize o link abaixo:

Conexao

Categories: VB.NET Tags: , , , ,

Envio de ítens de um ListBox para Outro

17, setembro, 2009 Sem comentários

Quando temos dois listbox, um tem um conjunto de informações e queremos passá-los para outro listbox, por exemplo, categoria x produto, temos que verificar os ítens que estão em um listbox e inserirmos no outro.

Por isso criei uma função que pode ser adicionada a biblioteca de funções do seu projeto, ele é super simples.

Podem baixá-lo, se houver alguma sugestão, enviem um comentário.

EnviaLST

Categories: VB.NET Tags:

Construindo aplicações ricas de internet com Adobe Flex 3 e ASP.NET

17, setembro, 2009 Sem comentários

Vagando pela Internet encontrei um artigo muito interessante e muito explicativo, para criação de aplicações usando o Flex 3 da Adobe, é uma versão mais atualizada, mas funcional do antigo Flash.

Eu cheguei a testar o RIA da Macromedia, estive inclusive com um especialista deles, mas eles não conseguiram conectar um “datagrid” deles com um dataset meu feito em aspnet.

O artigo vale a pena.

http://imasters.uol.com.br/artigo/12375/aspnet/construindo_aplicacoes_ricas_de_internet_com_adobe_flex_3_e_aspnet/

Categories: VB.NET Tags: , , , , ,