Bem vindo ao nosso novo site

Após um bom tempo tentando administrar nosso site através da ferramenta usada anteriormente, resolvemos experimentar algo novo. E descobrimos no wordpress um gerenciador de conteúdo simples, prático e altamente customizável.

Depois de importar os textos publicados no site anterior, acertar os links, os acessos, as permissões… Estamos enfim de cara nova.

Sejam bem vindos.

Posted in Artigos. 1 Comentário »

SELECT TOP N: MsSQL, ORACLE e MySQL

Texto extraído do pélessê.

MsSQL:

SELECT TOP 10 Codigo, Descricao
FROM Clientes

ORACLE:

SELECT Codigo, Descricao
FROM Clientes
WHERE RowNum <= 10

MySQL:

SELECT Codigo, Descricao
FROM Clientes
LIMIT 10

FileUpload com AJAX

Texto extraído do pélessê.

Esse é um problema comum, o objeto FileUpload precisa de um ciclo completo de postback para receber um upload. Já o AJAX veio justamente para suprimir esses postbacks.
Então, quando temos um asp:FileUpload dentro de um asp:UpdatePanel, esses postbacks não ocorrem e quando consultamos a propriedade HasFile do FileUpload não recebemos nada.
No entanto, podemos contornar isso facilemente através de triggers do UpdatePanel.

<asp:UpdatePanel runat=”server” UpdateMode=”Conditional” >
<ContentTemplate>
<asp:FileUpload runat=”server” />
<asp:Button runat=”server” ID=”MeuBotao” />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID=”MeuBotao” />
</Triggers>
</asp:UpdatePanel>

No exemplo acima, definimos que o botão que faz o submit deve acionar o postback, e isso faz a mágica.

Posted in Artigos. Tags: , . Nenhum Comentário »

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

Texto extraído do pélessê.

Já me ocorreu algumas vezes de, ao tentar estabelecer uma conexão contra a base de dados, receber esse retorno. Eu checo e re-checo a connection string e tudo parece estar correto. No Firewall a porta 1433 está devidamente liberada. Nas configurações do SQL Server, os protocolos para a rede, habilitados. Tudo certinho.

Hoje me ocorreu um caso ainda mais inusitado. Criei duas conexões contra a mesma base SQL Server 2005. Uma usando o provedor SqlClient e a outra usando o OleDb. Mesmo usuário, mesmo senha, mesmo tudo. A que usava o SqlClient foi, a OleDb não. Fiquei cabrero.

Depois de um pouco apanhar, resolvi tentar o DNS ou IP para me referenciar ao servidor. Já que a conexão estava sendo feita para um SQL Server instalado na própria máquina, havia tomado a liberdade de usar a constante (local) como nome de servidor.

Buzz’s Eye… Na mosca… Foi só usar o DNS (ou IP) da máquina no lugar de usar a constante que o OleDb se localizou.

The Controls Collection Cannot be Modified Because the Control Contains Code Blocks

Texto extraído do pélessê.

Usando MasterPages no AspNet voce pode cair nesse problema ao usar CodeBlocks no Header. Vejamos o seguinte cenário:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”/favicon.ico”/>
</head>

Ficamos limitados quanto ao local onde se encontrará o favicon dependendo de como a aplicação fora hospedada. O que queremos é que o ícone seja lido da raiz da aplicação indiferente de como foi feita a hospedagem. Normalmente resolveríamos isso com Code Blocks, como abaixo:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”<%= ResolveUrl(“~/favicon.ico”)%> “/>
</head>

Porém essa sintaxe causa o erro citado no título desse post. O que podemos fazer ? Utilizar DataBind no lugar dos Code Blocks. No Head, a sintaxe é quase igual, mudando apenas o sinal = para #, como abaixo:

<head runat=”server” >
<title>webCash</title>
<link rel=”stylesheet” type=”text/css” href=”/App_Themes/Default/Master.css” />
<link rel=”shortcut icon” href=”<%# ResolveUrl(“~/favicon.ico”)%> “/>
</head>

E, no Page_Load do MasterPage, dispararemos o devido bind:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Not Me.IsPostBack Then
Page.Header.DataBind()
End If
End Sub

Em linhas gerais, é isso.
Agarceço ao seguinte post por essa ideia:

Posted in Artigos. Tags: . Nenhum Comentário »

Async em AspNet com AJAX

Texto extraído do pélessê.

Hoje duelei por um tempo com as chamadas assíncronas numa página ASP e por isso, vou postar aqui a solução para poder me lembrar caso precise.

Quadro muito comum: Criei uma classe que era instanciada e tinha um método chamado. Após isso, internamente, os processos eram executados em diversas threads para agilizar e, ao concluir tudo, um evento disparado. Se fosse windows application seria “mamão com açucar”, mas numa web aplication… temos o fator timeout da mesma.

A primeira coisa a se fazer é acrescentar na declaração da página a propriedade Async, isso definirá que a mesma pode tratar as chamadas assíncronas. Quanto ao timeout, o default é 90 segundos… se voce, como eu, tiver um processo realmente demorado e precisar aumentar isso, fazemos através da propriedade AsyncTimeout, lembrando que a unidade é segundos.

<%@ Page Async=”true” AsyncTimeout=”300″ %>

Mas isso não basta, se sua aplicação usar AJAX… Nesse caso entra o fator ScriptManager que também possui uma propriedade para indicar o timeout.

<asp:ScriptManager runat=”server” AsyncPostBackTimeout=”300″ />

E agora vai que é uma beleza.

Posted in Artigos. Tags: , . Nenhum Comentário »

AutoCompleteExtender não dispara eventos, não responde

Pela segunda vez ao começar um novo projeto AspNet usando o extender AutoCompleteExtender para auto-sugerir valores num dropdown conforme se digita num textbox, eu tenho dificuldades em fazer o recurso funcionar.

Faço todas as chamadas, crio o webService, testo o webService, tudo OK mas,.. simplesmente na página ao digitar nada é sugerido.

Após apanhar muiiiiito, comparando minhas outras aplicações (onde o recurso está funcionando) com a nova, identifiquei sutis diferenças nas declarações dos webMethods e dos webServices e… sim eram esses os problemas. Para que eu não volte a esquecer, vou documentar aqui

Declaração do webService:

<WebService(Namespace:=“http://tempuri.org/”)> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ <Script.Services.ScriptService()> _
Public Class
AutoComplete
Inherits
System.Web.Services.WebService

Declaração do webMethod (declaração é totalmente case-sensitive):

<WebMethod()> _
<Script.Services.ScriptMethod()> _

Public Function
GetTerceiros( _
ByVal
prefixText As String, _
ByVal
count As Integer) As String()

Chamada no AspX:

<ajaxToolkit:AutoCompleteExtender
ID
=”TerceiroAutoComplete”
runat
=”server”
TargetControlID
=”TerceiroTextbox”
ServicePath
=”~/Common/AutoComplete.asmx”
ServiceMethod
=”GetTerceiros”
MinimumPrefixLength
=”1″
CompletionInterval
=”1000″
CompletionSetCount
=”20″
EnableCaching
=”true”
Enabled
=”true”
/>

Ah sim, mais uma coisa, no AspX os objetos devem estar dentro de um UpdatePanel, naturalmente.

Posted in Artigos. Tags: , . Nenhum Comentário »

Como provocar um erro SQL Server

“Como provocar um erro SQL Server ?” Essa foi a pergunta do meu amigo. Achei válido catalogar aqui pois além de não precisar me lembrar, pode ser uma dúvida de outros. Eis a resposta:

– DENTRO DE UMA TRIGGER POR EXEMPLO
if AlgumCoisa = SeiLaQue begin
raiserror 30005 ‘Faz direito que funciona.’
end

– OU ALGO ASSIM NUMA PROCEDURE
if AlgumCoisa = SeiLaQue begin
RAISERROR (‘Faz direito que funciona.’, 16, 1)
end

Posted in Artigos. Tags: . Nenhum Comentário »

Definindo nova localização para os diretórios de Sistema

Se voce, como eu, cotuma particionar seu HD em pelo menos dois volumes deixando os programas instalados num drive C: com o mínimo possível de espaço e o resto num drive D: para os dados, voce já teve a necessidade de a pasta ‘Meus Documentos’ ser localizada no drive D: também para facilitar as coisas.
Bem, para alguma dessas pastas isso é bastante intuitivo, basta clicar com o botão direito na pasta e escolher a localização desejada. Porém eu vou além, eu tenho a necessidade de ter plena certeza de que meu drive C: possa ser formatado a qualquer momento sem me preocupar com dado algum que possa nele existir. E isso significa não apenas a pasta Meus Documentos, mas também Meus Favoritos por exemplo, entre outras. Fora Minhas Músicas, Vídeos, Imagens que no Windows Vista não mais ficam dentro de Meus Documentos.

Bom, no WindowsXP a chave de registro que possui essas configurações é essa logo abaixo, bastando apenas preencher seus valores com as localizações desejadas.
HKCU\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ User Shell Folders\ Favorites

Já no WindowsVista, a chave é essa abaixo. Reparem que no Vista podemos também definir a localização das pasta Public muito útil para compartilhamentos pois o próprio sistema operacional disponibiliza atalhos para ela de dentro dos diversos programas.
HKLM\ Software\ Microsoft\ Windows NT\ CurrentVersion\ ProfileList

Posted in Artigos. Tags: . Nenhum Comentário »

Desbloquear anexos no Outlook

Para desbloquear arquivos .exe, .mdb, .bat, etc… que vêm anexo às mensagens do Microsoft OutLook (XP/2003) faça o seguinte:

  • Adicione um novo valor da seqüência à chave [HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security].
  • Dê o nome de Level1Remove a novo valor.
  • Adicione as extensões que você quer que sejam desbloqueadas pelo OutLook separadas por ; (ponto e vírgula), exemplo: exe; bat; mdb


Posted in Artigos. Tags: . Comentários desativados »