domingo, 30 de dezembro de 2001

0

Ler dados com o ADO.net

Neste simples exemplo, mostrarei como fazer, para substituir o ADO tradicional, pelo ADO.net para retornar os dados de uma base de dados, usando VB.net.


obs: uso a leitura e inserção dos dados num listbox, no evento load da página


Imports System.Data
' declaração de chamada necessária, para usar ado.net


Sub Page_Load  ' evento load (carregamento) da página
Dim conn as New System.DATA.OledbConnection(SUA STRING DE CONEXÃO AQUI)
Dim SQL as string = "SELECT * FROM tabela"
Dim comando as new OleDBCommand(SQL, conn)
conn.open

Dim leitor as OLEDbDataReader
Leitor = Command.ExecuteReader
' no .net não há o Set

' Abaixo o LOOP num listbox:

While Leitor.READ
List.Items.ADD Leitor.Item("campo")
End While

End sub



Esta matéria foi postada originalmente no ASP4Developers por Oscar Pires (BLADE) (site), que na época era "Desenvolvedor ASP e Visual Basic, desenvolve sites interativos e sistemas para empresas. ". Hoje, vai saber...

segunda-feira, 24 de dezembro de 2001

0

HOHOHO!

Hohoho! Feliz Natal!


Como prometido (ok, tardo, mas ardo), eis a nova versão do ASP4Developers, estreiando em seu novo endereço: www.ASP4Developers.com.br . Registrei o domínio e agora podemos ir esquecendo o lance do CJB.NET e seus banners escondidos.


Nesta nova versão do site, tentei remodelar um pouco a parte visual, para algo mais agradável e num formato que eu sempre quis fazer. O site usa alguma coisa de DirectX, CSS2 e foi testado com o IE6. Caso tenha algum problema com a visualização do mesmo, não deixe de notificar-me, ok ?


Muitas mudanças foram efetuadas, além do layout. Algum código incorreto/desatualizado na rotina de autenticação foi consertado; rouba... errr.. digo, implementamos um intercomunicador que não tem nada a ver com o do FatorX;criamos uma forma de comentar os artigos postados e a possibilidade de postar uma foto no formato SVG/SVGZ, que irá no final dos artigos dos autores. Mais profundamente, passamos a utilizar a MSXML4 para o processamento do banco de dados XML, que agora utiliza Schemas para verificar a integridade do banco de dados. Todas estas mudanças, e todas as outras que esqueci de documentar, refletem o amadurecimento do site e dos colaboradores do mesmo.


Gostaria de agradecer, do fundo do coração, à todos aqueles que não importam-se em ceder uma pequena fração de seu tempo para ajudar os iniciantes, iniciantes esses que todos nós já fomos um dia.


Seria arriscado citar todas as pessoas que colaboraram com o lançamento desta nova versão, por corrermos o risco de esquecermos alguém. Mas, assim mesmo, obrigado, Darkness, Al Bundy, Blade, Motoman, etc, etc, etc.


Sem mais delongas, bem vindo! Aproveita a estadia e


UM FELIZ NATAL!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

sexta-feira, 21 de dezembro de 2001

0

Merry XMas!

Você comeu os legumes, fez sua lição de casa, arrumou seu quarto, tirou boas notas e não bateu no seu irmão mais novo. Conversei com o Papai Noel e ele promoteu algumas surpresas para a noite de Natal. Fique atento!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quinta-feira, 13 de dezembro de 2001

0

Connection Pooling com ODBC

Todos sabem o peso que têm as conexões com o banco de dados no tempo de resposta da execução de páginas dinâmicas e mesmos dos softwares cliente/servidor.


Uma solução para este problema é chamado de Connection Pooling. O C.P. é uma pool, um conjunto, de conexões já abertas com o banco de dados, evitando assim que toda nova requisição de conexão com o banco precise ser novamente criada, tomando tempo e recursos da máquina.


O Pool libera uma das conexões abertas para cada requisitante de conexão com o BD, que depois é liberada, mas não fechada.


Portanto, todos os usuários do sistema compartilhariam um pool de conexões em comum, ganhando performance de acesso. O número de conexões do pool pode ser delimitado, variando de acordo com o número de usuários e requisições por tempo.


Para ter mais informações sobre usar o Pool de Conexões implementado pelo ODBC 3.0 visite o link (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmdac/html/pooling2.asp).



Esta matéria foi postada originalmente no ASP4Developers por Daniel Destro do Carmo (site), que na época era "Analista de Sistemas, Web Developer e Programador Java certificado pela Sun.". Hoje, vai saber...

quinta-feira, 6 de dezembro de 2001

0

Mascara para CNPJ 99.999.999-99

Após muita dor de cabeça e muitas tentativas, finalmente a função que formata CGC/CNPJ, aliás, formata muito mais coisa ... hhahaahh é só dar uma olhada q vc entende como funciona.


Por favor preservar os direitos do autor.

================================


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<html>
<head>
 <title>Mascara CNPJ</title>
</head>


<body>
<form name=FormCpf>
<INPUT maxlength="14" size=25 name="cpf_cnpj" onkeypress="FormataCPF(document.FormCpf,'cpf_cnpj',11,8,5,2,event);">
</form>
<Script language="javascript">


//***************************
// ismael@admin.com.br
// se mudar, envia para que possamos ver.
// http://meuregistro.zardack.com.br
//***************************


function FormataCPF(pForm,pCampo,pTamMax,pPos1,pPos2,pPosTraco,pTeclaPres){
 var wTecla, wVr, wTam;
 
       // alert(pForm[pCampo].value);
  
 wTecla = pTeclaPres.keyCode;
 wVr = pForm[pCampo].value;
 wVr = wVr.toString().replace( "-", "" );
 wVr = wVr.toString().replace( ".", "" );
 wVr = wVr.toString().replace( ".", "" );
 wVr = wVr.toString().replace( "/", "" );
 wTam = wVr.length ;


 if (wTam < pTamMax && wTecla != 8) {
    wTam = wVr.length + 1 ;
 }


 if (wTecla == 8 ) {
    wTam = wTam - 1 ;
 }
   
 if ( wTecla == 8 || wTecla == 88 || wTecla >= 48 && wTecla <= 57 || wTecla >= 96 && wTecla <= 105 ){
  if ( wTam <= 2 ){
    pForm[pCampo].value = wVr ;
  }
  if (wTam > pPosTraco && wTam <= pTamMax) {
        wVr = wVr.substr(0, wTam - pPosTraco) + '-' + wVr.substr(wTam - pPosTraco, wTam);
  }
  if ( wTam == pTamMax){
        wVr = wVr.substr( 0, wTam - pPos1 ) + '.' + wVr.substr(wTam - pPos1, 3) + '.' + wVr.substr(wTam - pPos2, wTam);
  }
  pForm[pCampo].value = wVr;
 
 }


}
</script>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 5 de dezembro de 2001

0

Evite que suas páginas fiquem no CASH da Máquina

Assim suas páginas não ficaram mas no CASH da sua máquina facilitando as suas atualizações...


<%
Response.addHeader "pragma", "no-cache"
Response.CacheControl = "Private"
Response.Expires = 0
%>



Esta matéria foi postada originalmente no ASP4Developers por Thiago Machado Souza (site), que na época era "Programador Desbravador, buscando quebrar todas as fronteiras além do horizonte da arte de programar !
www.thiagomachado.com.br". Hoje, vai saber...

sexta-feira, 30 de novembro de 2001

0

Passe as variaveis por valor sem ByVal

Se você deseja passar as variáveis por valor, para uma Sub ou Function que não teve seus argumentos declarados com ByVal, use '('e ')' em torno da variável que vc está passando como parâmetro.


Veja o código do exemplo. A variával Var2 tem seu valor alterado, porque foi passada por referência (default no VB até a versão 6), enquanto que a variável Var1 não, embora a sub MudaValor não teve seus primeiro argumento declarado como ByVal.


Sub MudaValor(Var1 As String, Var2 As String)


Var1 = "Valor alterado"
Var2 = "Valor alterado"


End Sub


'====================


Private Sub Form_Click()


Dim Var1 As String
Dim Var2 As String


Var1 = "O valor não foi alterado"
Var2 = "O valor não foi alterado"


MudaValor (Var1), Var2


Print Var1
Print Var2


Print


Var1 = "O valor não foi alterado"
Var2 = "O valor não foi alterado"


MudaValor Var1, Var2


Print Var1
Print Var2


End Sub


'===========================


Execute o programa, e no form que abrir, dê um clique no mesmo. O resultado das chamadas à Sub MudaValor aparecerão impressas no próprio form



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quinta-feira, 22 de novembro de 2001

0

Validar Cartao de Credito

' Valida numero de cartao de credito
' Retorna True se valido, False se invalido
'
' Exemplo:
'  If ValidaCartaoCredito(Value:="1234-123456-12345") Then


Function ValidaCartaoCredito(Value As Variant) As Boolean
    Dim strTemp As String
    Dim intCheckSum As Integer
    Dim blnDoubleFlag As Boolean
    Dim intDigit As Integer
    Dim i As Integer


    On Error GoTo ErrorHandler


    ValidaCartaoCredito = True
    Value = Trim$(Value)


    If Len(Value) = 0 Then
        ValidaCartaoCredito = False
 Exit function
    End If


    ' Se mesmo depois de retirar nao-numericos, nao sobrou nada, foi digitado lixo
    For i = 1 To Len(Value)
        If IsNumeric(Mid$(Value, i, 1)) Then strTemp = strTemp & Mid$(Value, i, _
            1)
    Next
    If Len(strTemp) = 0 Then
        ValidaCartaoCredito = False
    End If


    'Diferentes tamanhos para diferentes bandeiras de CC
    Select Case Mid$(strTemp, 1, 1)
        Case "3"    'Amex
            If Len(strTemp) <> 15 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    6) & "-" & Mid$(strTemp, 11, 5)
            End If
        Case "4"    'Visa
            If Len(strTemp) <> 16 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & "-" & Mid$(strTemp, 9, 4) & "-" & Mid$(strTemp, 13, 4)
            End If
        Case "5"    'Mastercard
            If Len(strTemp) <> 16 Then
                ValidaCartaoCredito = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & "-" & Mid$(strTemp, 9, 4) & "-" & Mid$(strTemp, 13, 4)
            End If
        Case Else      'Lixo - nao e numero de cartao de credito
            If Len(strTemp) > 20 Then
                ValidaCartaoCredito = False
            End If
    End Select


    'Check Sum (Mod 10)
    intCheckSum = 0                                    
    blnDoubleFlag = 0                                  


    For i = Len(strTemp) To 1 Step -1                  
        intDigit = Asc(Mid$(strTemp, i, 1))             ' Isola o caracter


        If intDigit > 47 Then                           ' Pula se nao e um inteiro


            If intDigit < 58 Then
                intDigit = intDigit - 48                ' Remove ASCII bias


                If blnDoubleFlag Then                  
                    intDigit = intDigit + intDigit      ' primeiro duplica-o


                    If intDigit > 9 Then
                        intDigit = intDigit - 9        
                    End If


                End If
                blnDoubleFlag = Not blnDoubleFlag      
                intCheckSum = intCheckSum + intDigit   


                If intCheckSum > 9 Then                
                    intCheckSum = intCheckSum - 10      ' (mesmo que MOD 10 mas mais rapido)
                End If
            End If
        End If
    Next


    If intCheckSum <> 0 Then                            '  Deve totalizar zero
        ValidaCartaoCredito = False
    End If


ErrorHandler:
    Err.Raise Err.Number, "ValidaCartaoCredito", Err.Description


End Function



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quarta-feira, 21 de novembro de 2001

0

Arquivo -> BLOB: Copie o conteudo de um arquivo para um campo BLOB

' Este codigo copia o conteudo de um arquivo para um campo BLOB.


Sub FileToBlob(fld As ADODB.Field, filename As String, _
    Optional ChunkSize As Long = 8192)
    Dim fnum As Integer, bytesLeft As Long
    Dim bytes As Long
    Dim tmp() As Byte
   
    ' Gera erro se o campo nao suporta o GetChunk.
    If (fld.Attributes And adFldLong) = 0 Then
        Err.Raise 1001, , "Field doesn't support the GetChunk method."
    End If


    ' Abre o arquivo; Gera erro se ele nao existir.
    If Dir$(filename) = "" Then Err.Raise 53, , "Ops! Arquivo nao encotrado."
   
    fnum = FreeFile
    Open filename For Binary As fnum


    ' Le o arquivo em pedacos e inclui dados ao campo BLOB.
    bytesLeft = LOF(fnum)
    Do While bytesLeft
        bytes = bytesLeft
        If bytes > ChunkSize Then bytes = ChunkSize
        ReDim tmp(1 To bytes) As Byte
        Get #1, , tmp
        fld.AppendChunk tmp
        bytesLeft = bytesLeft - bytes
    Loop
   
    Close #fnum
End Sub



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

0

BLOB -> Arquivo: Copie o conteudo de um campo BLOB para um arquivo

' Este codigo copia o conteudo de um campo BLOB para um arquivo.

Sub BlobToFile(fld As ADODB.Field, filename As String, _
Optional ChunkSize As Long = 8192)
Dim fnum As Integer, bytesLeft As Long
Dim bytes As Long
Dim tmp() As Byte

' Gera erro se o campo nao suporta o GetChunk.
If (fld.Attributes And adFldLong) = 0 Then
Err.Raise 1001, , "Campo nao suporta o metodo GetChunk."
End If

' Apaga o arquivo se ele ja existe

' e cria um novo.

If Dir$(filename) <> "" Then Kill filename

fnum = FreeFile
Open filename For Binary As fnum
' Le o conteudo e escreve os dados no arquivo.
bytesLeft = fld.ActualSize

Do While bytesLeft
bytes = bytesLeft
If bytes > ChunkSize Then bytes = ChunkSize
tmp = fld.GetChunk(bytes)
Put #fnum, , tmp
bytesLeft = bytesLeft - bytes
Loop

Close #fnum
End Sub


Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

segunda-feira, 19 de novembro de 2001

0

Use a função Sleep da API para adicionar pausas ao seu programa


Não use um For...Next vazio para adicionar pausas
ao seus programas. Use a função Sleep da API, que
libera a CPU e deixa as outras aplicações
efetivamente trabalharem no sistema:

Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)

' pause for 5 seconds
Sleep 5000

Esta tecnica só funciona em edições 32 bits do Visual Basic; Não há função equivalente na API Win16 bits.




Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

0

Conte substrings com a função Replace

Voce pode usar a função Replace para simplificar (e até
otimizar) seu código. Por exemplo, a fim de contar o
número de ocorrências de uma substring dentro de uma
string, geralmente se precisa de um loop baseado na
função InStr:

Dim i As Long, count As Long
i = InStr(source, search)
Do While i
count = count + 1
i = InStr(i + 1, source, search)
Loop
Aqui vai um código em uma linha que faz
exatamente o mesmo. O truque esta em trocar
cada substring com outra string que é um
caracter maior, e então determinar a diferença
entre a string obtida e a original. Este
número é igual ao número de substituições
feitas, e portanto igual ao número de
substituições encontradas. (Note que o
código é mais conciso que o anterior, porém
um pouco mais lento que a solução anterior).
count = Len(Replace(Source, Search, Search & "*")) - Len(Source)


Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

sexta-feira, 16 de novembro de 2001

0

Global.asa, Contador de page views e de usuários on-line

Em várias listas que sou assinante, vejo colegas em busca de uma solução para conhecer o total de usuários que estão acessando o site no momento. Este tipo de solução é bastante simples de ser implementada através do arquivo globa.asa.

O arquivo global.asa deve ser salvo no diretório raiz do site. É de boa prática, ter apenas um arquivo global.asa por aplicativo.

O objetivo será de criar um simples contador de page views e também um contador para usuários on-line. Abaixo, o script de nosso global.asa.

Arquivo Global.asa
*******************************************************
<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Sub Application_OnStart
      Application("intTotUser") = 0
      Application("datServerUp") = Now()
      Application("intTotOnLine") = 0
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
      Session.TimeOut = 10
      Application.Lock
            Application("intTotUser") = Application("intTotUser") + 1
            Application("intTotOnLine") = Application("intTotOnLine") + 1
      Application.Unlock
End Sub

Sub Session_OnEnd
      Application.Lock
            Application("intTotOnLine") = Application("intTotOnLine") - 1
      Application.Unlock
End Sub

</SCRIPT>

*******************************************************

:::::::::::::EXCLARECENDO AS DÚVIDAS:::::::::::::

-------------------------------------------------------
Sub Application_OnStart
      Application("intTotUser") = 0
      Application("datServerUp") = Date()
      Application("intTotOnLine") = 0
End Sub

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

O procedimento Sub Application_OnStart somente é executado uma única vez após a primeira requisição atendida pelo aplicativo.

O ASP executa automaticamente o procedimento Sub Application_OnStart toda a vez que o aplicativo é iniciado. Exemplo: O servidor web é reiniciado, e em seguida um navegador requisita uma página do aplicativo.

Neste caso, o procedimento Sub Application_OnStart é executado e três novas variáveis Application serão criadas:

-------------------------------------------------------
Application("intTotUser") -> Nesta variável será armazenado o total de usuário que acessaram o site desde a ultima vez que o servidor web foi reinicializado.

Application("datServerUp") -> Nesta variável será armazenada a data da primeira requisição atendida pelo aplicativo.

Application("intTotOnLine") -> Nesta variável será armazenado o total de usuários que estão acessando a aplicação no momento.

-------------------------------------------------------
Sub Session_OnStart
      Session.TimeOut = 10
      Application.Lock
            Application("intTotUser") = Application("intTotUser") + 1
            Application("intTotOnLine") = Application("intTotOnLine") + 1
      Application.Unlock
End Sub
-------------------------------------------------------

O procedimento Sub Session_OnStart será executado toda a vez que uma nova sessão é criada.

Neste caso, foi usado esse procedimento para incrementar a variável Application "intTotUser" e "intTotOnLine". Toda a vez que uma nova sessão for criada, as variáveis Application serão incrementadas de um.

Observe que foi usado o método "Lock" e "Unlock" do objeto Application. Esses métodos já foram explicados em um artigo já publicado, mas para relembrar: O método "Lock" é usado para garantir que dois usuários não atualizem a mesma variável ao mesmo tempo. E "Unlock", é usado para liberar a variável e permitir uma nova atualização.

-------------------------------------------------------
Sub Session_OnEnd
      Application.Lock
            Application("intTotOnLine") = Application("intTotOnLine") - 1
      Application.Unlock
End Sub

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

O procedimento Sub Session_OnEnd é executado toda a vez que uma sessão é finalizada pelo servidor. Um dos eventos poderia ser: 1) Foi usado o método Abandon do objeto Session 2) Tempo de inatividade da sessão foi atingida 3) O navegador foi finalizado.

Neste caso, foi usado este procedimento para subtrair 1 (um) da variável Application "intTotOnLine". Desta forma será possível saber a quantidade exata de usuários conectados à aplicação.

O procedimento Sub Application_OnEnd é executado toda a vez que a aplicação é finalizada. Não é comum você ver procedimentos neste evento, isso porque executar um evento depois que o aplicativo e finalizado está fora do escopo de produção. Um bom uso talvez deste evento seria para registrar em log a data e hora que o aplicativo foi finalizado.

SCRIPT PARA MOSTRAR O RESULTADO
-------------------------------

script_001.asp
*******************************************************
<%Response.Buffer=True%>

<html>
<head>
<title>Acessos On-Line</title>
</head>
<body>

<%
Dim intSessionId
intSessionId = Session.SessionID

Dim intTotOnLine
intTotOnLine = Application("intTotOnLine")

Dim intTotUser
intTotUser= Application("intTotUser")
%>

<p><b>Sessão Identificada:</b> <%=intSessionId%></p>
<p><b>Informações úteis:</b></p>
<p><b>Usuários On-Line:</b> <%=intTotOnLine%></p>
<p><b>Total de acessos até o momento:</b> <%=intTotUser%></p>
<p><b>Data da última inicialização:</b> <%=datServerUp%></p>

</body>
</html>

*******************************************************


Boa Programação!


Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

0

Informações adicionais sobre Cookies

Os cookies são pequenos arquivos do tipo texto armazenados no computador do usuário. Estes pequenos arquivos armazenam informações diversas definidas pelo programador do site. O usuário poderá bloquear o aceite dos cookies através do próprio navegador ou por outros programas com o mesmo objetivo. O uso de cookies é bastante comum em sistemas para medir audiência de visitação, registrar as preferências do usuário ou até mesmo rastrear seus cliques no site.

******************************************************
Atributo Descrição

Domain: Se especificado, o cookie será enviado somente para os solicitações deste domínio.

Expires: A data em que o cookie expira. Essa data deve ser definida para que o cookie seja armazenado no computador do usuário após a conclusão da sessão. Se este atributo não for definido com uma data posterior a atual, o cookie expirará quando a sessão for finalizada.

HasKeys: Especifica se o cookie contém chave retornando True/ False.

Path: Se especificado, o cookie será enviado sempre que houver uma requisição neste caminho. Se este atributo não for definido, o caminho do script asp que o criou será utilizado.

Secure: Indica que o cookie deve ser enviado somente se o Secure Sockets Layer estiver ativo.
******************************************************

Criar um cookie
Se o cookie especificado não existir, ele será criado. Se existir, ele apanhará o novo valor e o valor antigo será descartado. O script abaixo cria um cookie chamado MyCookie:

<%
Response.Cookies("MyCookie") = "Novo Cookie"
%>


Usa-se o objeto "Request" para recuperar o valor do cookie :

<%
Dim MyVar
MyVar = Request.Cookies("MyCookie")

Response.Write "<p><b>"&MyVar&"</b></p>"
%>


Armazenar o valor de uma variável
Para gravar um cookies com o conteúdo de uma variável, é necessário que você utilize a função CStr() para converte-la no tipo string.

<%
MyVar = Request.Form("strName")
Response.Cookies("MyCookie") = CStr(MyVar)
%>

Várias informações em um único Cookie
A coleção Cookie poderá armazenar múltiplos valores em um único Cookie

<%
Response.Cookies("MyCookie")("MyCity") = "Belo Horizonte"
Response.Cookies("MyCookie")("MySite") = "Suportebrasil.NET"
%>


Para recuperar o valor de uma das chaves :

******************************************************
<%
Dim MyCity
MyCity = Request.Cookies("MyCookie")("MyCity")

Dim MySite
MySite = Request.Cookies("MyCookie")("MySite")

Response.Write "<p><b>Cidade : "&MyCity&"</b></p>"
Response.Write "<p><b>Site : "&MySite&"</b></p>"
%>
******************************************************

A regra para atribuir o valor de uma variável a uma das chaves de um cookie é a mesma empregada para criar um cookie sem chave. Usa-se a função "CStr()".

Muita atenção a essa regra:

Uma atribuição subseqüente a "MyCookie" criado no script acima, sem a especificação de uma chave, causaria a destruição das chaves "MyCity" e "MySite". Veja o script abaixo :

<%
Response.Cookies("MyCookie") = "Belo Horizonte"
%>

No script acima, as chaves "MyCity" e "MySite" são destruídas e seus valores descartados. O cookie "MyCookie", agora contém o valor "Belo Horizonte".

Como complemento, se você atribuir uma chave a um cookie que não tem chave, o valor não chave desse cookie será destruído. Por exemplo : Se depois do código anterior for feito:

<%
Response.Cookies("MyCookie")("MyJob") = "Programador"
%>

O valor "Belo Horizonte" é destruído e a sub chave MyJob estará armazenando o valor Programador.

Cookie com Chaves
Para determinar se um cookie tem chaves, utilize a seguinte sintaxe :

<%
Response.Write Request.Cookies("MyCookie").HasKeys
%>

Se "MyCookie" for um dicionário de cookie, o valor impresso será "TRUE" caso contrário "FALSE".

Interagir entre as chaves de um cookie
Podemos interagir entre as chaves de um Cookie através da instrução For Each.

******************************************************
<%
For Each Subkey in Request.Cookies("MyCookie")
        Response.Write SubKey &" - "& Request.Cookies("MyCookie")(Subkey)
Next
%>

******************************************************

Se você interagir em um cookie que não tem chave, o mesmo não será executado. É uma boa prática checar se o cookie tem chaves. O script acima ficaria mais correto se fosse escrito dessa forma :

******************************************************
<%
If Request.Cookies("MyCookie").HasKeys then
        For Each Subkey in Request.Cookies("MyCookie")
               Response.Write SubKey &" - "& Request.Cookies("MyCookie")(Subkey)
        Next
End If
%>
******************************************************

Atributos de um cookie

******************************************************
<%
Response.Cookies("UserLogin") = "joses"
Response.Cookies("UserLogin").Expires = #31/12/2000#
Response.Cookies("UserLogin").Domain = "/suportebrasil.net/"
Response.Cookies("UserLogin").Path = "/artigos"
Response.Cookies("UserLogin").Secure = FALSE
%>

******************************************************

Boa Programação!


Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

0

Armazenando Informações em Cookies

A personalização está fazendo com que todos os usuários sejam identificados, mesmo para saber de onde vieram que hora chegaram e o que fizeram. Isso é bom ou ruim para a performance do servidor e da aplicação asp?

A minha resposta é : Tudo vai depender da real necessidade de manter a informação. Você como programador deve saber que os cookies podem ser destruídos pelos usuários assim que eles quiserem, por isso se for para manter uma informação de grande importância, que essa informação seja mantida no banco de dados da aplicação e não em cookies, que são pequenos arquivos armazenados no computador do usuário.

Um bom exemplo para o uso de cookies é a identificação do acesso do usuário e de suas preferências dentro do site. Isso é apenas para os webmasters conhecerem seu público. Mas os cookies também podem ser usados para manter informações ativas durante a permanência do usuário na aplicação. Ex: Controle de Acesso.

Vou mostrar um exemplo bem completo que tem como objetivo mostrar a funcionalidade básica do cookie. Como já foi dito, cookies são informações que podemos gravar no computador do usuário.

A coleção Cookies é usada para enviar um cookie para o navegador do usuário. Permite atribuir um novo valor a um cookie (se ele já existir); caso contrário, o cookie será criado e o valor será atribuído. Por alterarem valores do cabeçalho HTTP response, os valores da coleção Cookies devem ser enviados antes que qualquer código HTML seja enviado para o navegador, exceto se Response.Buffer estiver como True.

1) A página HTML cadastro1.htm cria um formulário simples para receber dois valores do usuário, que neste caso serão o nome e e-mail. Estes valores serão submetidos para página asp cadastro2.asp.

**************************************************
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<form method="post" name="cookiesform" action="cadastro2.asp">
<input type="text" name="nome" size="50"><br>
<input type="text" name="email" size="50"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

2) A página asp cadastro2.asp receberá os valores enviados pelo formulário da página cadastro1.htm e criará os cookies: nome e e-mail. Nesta mesma página, criaremos um formulário para solicitar os campos Cidade e Uf.

**************************************************
<%Response.Buffer=True%>
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<%
Dim nome,email
nome = Request.Form("nome")
email = Request.Form("email")
Response.Cookies("nome") = CStr(nome)
Response.Cookies("email") = CStr(email)
%>
<form method="post" name="cookiesform" action="cadastro3.asp">
<input type="text" name="cidade" size="50"><br>
<input type="text" name="uf" size="2"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

Os cookies armazenam dados do tipo string. É bom usar a função Cstr() para converter a variável para esse tipo.

3) A página asp cadastro3.asp vai ler o conteúdo dos cookies nome e email que foram criados pela página cadastro2.asp e apresentá-los como conteúdo de seu campo de formulário correspondente.

**************************************************
<%Response.Buffer=True%>
<html>
<head>
<title> Trabalhando com cookies</title>
</head>
<body>
<%
Dim nome,email,cidade,uf
nome = Request.Cookies("nome")
email = Request.Cookies("email")
cidade = Request.Form("cidade")
uf = Request.Form("uf")
%>
<form method="post" name="cookiesform" action="inserirdados.asp">
<input type="text" name="nome" size="50" value="<%=nome%>"><br>
<input type="text" name="email" size="50" value="<%=email%>"><br>
<input type="text" name="cidade" size="50" value="<%=cidade%>"><br>
<input type="text" name="uf" size="2" value="<%=uf%>"><br>
<input type="submit" value="Enviar dados"><br><br>
</form>
</body>
</html>

**************************************************

Se você executar os scripts acima, vai ver que o campo "nome" e "email" foram preenchidos pelos valores recuperados de seus respectivos cookies. Na prática é deste jeito que manipulamos cookies via script asp.

Boa Programação!

Esta matéria foi postada originalmente no ASP4Developers por Leonardo da Silva Calado (site), que na época era "Usuário avançado de Dreamweaver ultradev e programador ASP, JSP, PHP, VISUAL BASIC e Condfusion.
tenho preferência por ASP uma linguagem de facil aprendizado.". Hoje, vai saber...

quinta-feira, 8 de novembro de 2001

0

Matando uma variavel do tipo Session() (ASP)

Para remover uma classe da memoria em um script, basta voce setar o objeto como nothing:


set myObjecto.myClass = nothing


Para fazer o mesmo com variaveis de sessao (session("<nome>"),  basta voce seta-la como Null:


session("blablabla") = null


e ela estara removida da memoria. Tome cuidado ao matar uma variavel. Voce pode precisar dela mais adiante!  8>)



Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

quinta-feira, 25 de outubro de 2001

0

Senhas Aleatórias com Números e Letras

<%
Function GerarChave(valores)


Dim chr_Array(35)


chr_array(0) = "0"
chr_array(1) = "1"
chr_array(2) = "2"
chr_array(3) = "3"
chr_array(4) = "4"
chr_array(5) = "5"
chr_array(6) = "6"
chr_array(7) = "7"
chr_array(8) = "8"
chr_array(9) = "9"
chr_array(10) = "a"
chr_array(11) = "b"
chr_array(12) = "c"
chr_array(13) = "d"
chr_array(14) = "e"
chr_array(15) = "f"
chr_array(16) = "g"
chr_array(17) = "h"
chr_array(18) = "i"
chr_array(19) = "j"
chr_array(20) = "k"
chr_array(21) = "l"
chr_array(22) = "m"
chr_array(23) = "n"
chr_array(24) = "o"
chr_array(25) = "p"
chr_array(26) = "q"
chr_array(27) = "r"
chr_array(28) = "s"
chr_array(29) = "t"
chr_array(30) = "u"
chr_array(31) = "v"
chr_array(32) = "w"
chr_array(33) = "x"
chr_array(34) = "y"
chr_array(35) = "z"


Randomize
do while len(chave) < 06
num = chr_array(Int(35 * Rnd ))
chave = chave + num
loop
GerarChave = chave
End Function


response.write "Senha gerada:  " & GerarChave(06) '& vbcrlf


%>



Esta matéria foi postada originalmente no ASP4Developers por Marcio Lima (Guardião) (site), que na época era "Programador ASP e VBA, apaixonado por Design, futurismo e ficção.
". Hoje, vai saber...

quinta-feira, 18 de outubro de 2001

0

MSXML4

Estou impressionado. Estava fazendo uns testes com o recém lançado MSXML4, a respeito do divulgado aumento de performance de 4 a 8 vezes. Uma página que levava ~3.5 segundos para ser processada com XSLT, passou a ser em ~0.5 segundo! O único incoveniente foi declarar o namespace do documento XSL, antes de exeutar uns XPaths (o que tem um certo sentido).


Segundo a documentação divulgada em http://msdn.microsoft.com/xml/ , o suporte ao SAX está mais rápido, adere aos padrões do W3C e possui "uma verdadeira funcionalidade side-by-side", o que significa que instalando a versão 4.0 não é perdido o suporte as versões anteriores e nem as futuras. Com a remoção do "replace mode", os recursos da versão 4.0 só serão utilizados caso utilize os Version-Dependent ProgID


Caso vc vá instalar e está confuso em qual pacote baixar, vá direto no "Installer", pois ele já possui o SDK tbém. Mas note, vc precisa desregistrar a msxml4.dll, caso tenha instalado os Tecnology Preview. Para isso faça:


regsvr32 /u msxml4.dll
regsvr32 msxml3.dll


No prompt de comando e depois comece a instalação. Um link para a documentação será colocado no seu desktop. Aí é só correr pro abraço!


Aproveitando o papel, aviso que dentro de pouco tempo o ASP4D 2.0 vai ser publicado. terminei o layout e estou trabalhando no fórum. Não vou prometer datas, mas ressalto que vai ser logo mesmo! Stay tunned!


Cya!



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quarta-feira, 17 de outubro de 2001

3

Fade de Texto em ASP

Hahahaha, dpois q tudo q me falam que dá pra fazer isto com CSS, bom agora q já ta feito ...
Hehehehe, espero q sirva para alguem.


Nivel  - Intermediário


<%


' Uma produção dos estudios Half Malf


' Obrigado aos amigos "Underground",
' "Voodoo", "Th3V1rus","ED+","Hand Full", "Xanddinho"
' q constantemente tiram as minhas dúvidas.


' str Variavel a ser "FADEADA"


' R1 A quantidade de vermelho inicial ( 0 - 255 )
' G1 A quantidade de verde inicial    ( 0 - 255 )
' B1 A quantidade de Azul inicial     ( 0 - 255 )


' R2 A quantidade de vermelho final ( 0 - 255 )
' G2 A quantidade de verde final    ( 0 - 255 )
' B2 A quantidade de Azul final     ( 0 - 255 )


function fadeText(str, R1, G1, B1, R2,G2, B2)
   
 Dim htmlTxtxt, X
 
    if str = "" Then Exit function
 
    R2 = ((R2 - R1) / Len(str))
    G2 = ((G2 - G1) / Len(str))
    B2 = ((B2 - B1) / Len(str))
   
 For X = 0 To Len(str) - 1
     R = Abs(Int(R1 + (R2 * X)))
     G = Abs(Int(G1 + (G2 * X)))
     B = Abs(Int(B1 + (B2 * X)))
     
  htmlTxt = htmlTxt & "<FONT color="
     htmlTxt = htmlTxt & Chr(34) & "#"
     
  if R < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(R)
     if G < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(G)
     if B < 17 Then htmlTxt = htmlTxt & "0"
      htmlTxt = htmlTxt & Hex(B)
      htmlTxt = htmlTxt & Chr(34)
      htmlTxt = htmlTxt & ">"
      htmlTxt = htmlTxt & Mid(str, X + 1, 1)
      htmlTxt = htmlTxt & "</FONT>"
    Next
 
    fadeText = htmlTxt
 
    End function
%>
 


<%= fadeText("ASP4Developers ASP4Developers ASP4Developers", 0,0,0,255,255,255) %>


 



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 10 de outubro de 2001

0

Diferença entre horas pré-definidas

Uma maneira bem simples de calcular diferenças entre horários.
Eu bati neste problema quando montava um sisteminha para controlar meus horarios ( tipo consultor ).
Assim q ele estiver pronto vou colocar para Download.
Qualquer melhoria, não esqueçam de postar.


<%


function horas(intervalo,Entrada01,Saida01,Entrada02,Saida02)


 'pega a diferença em segundos
 dia01 = DateDiff (intervalo,Entrada01,Saida01)
 dia02 = DateDiff (intervalo,Entrada02,Saida02)


 'faz a somatória dos segundos
 totalSegundos = dia01 - dia02


 'separa horas:minutos do total
 segundos = (totalSegundos) mod  60
 minutos = (( totalSegundos - segundos) / 60) mod 60
 horas = int((totalSegundos) / 3600)
 
 response.write horas &":"&minutos&":"&segundos
end function


response.write horas("s","08:59:0","18:46:00","12:00:00","13:00:00")


%>



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quarta-feira, 3 de outubro de 2001

0

Função para ajudar a depurar ASP

Esta função é feita em ASP com javascript, basta passa a mensagem ou variável desejada como parâmetro para ser exibida.
Espero ter ajudado!!


<html>
<head>
<title>Função de Depuração - Myers :: mayersk@hotmail.com</title>
</head>


<body bgcolor="#FFFFFF">
<%
'Exibe em uma janela Pop-up a mensagem passada como parêmetro
Function MsgBox(msg)
   MsgBox = "<script>alert('"&replace(msg,"'","""")&"')</script>"
End Function


   variavel = 0
   response.write MsgBox("valor inicial:"&variavel)
   response.write "<br>Valor Inicial:"&variavel


   '-- Seção 1 --
   variavel = variavel + 1
   response.write MsgBox("Secao 1\nvalor:"&variavel)
   response.write "<br>Seção 1 >> valor:"&variavel


   '-- Seção 2 --
   variavel = variavel + 3
   response.write MsgBox("Secao 2\nvalor:"&variavel)
   response.write "<br>Seção 2 >> valor:"&variavel


   '-- Seção 3 --
   variavel = variavel + 1
   response.write MsgBox("Secao 3\nvalor:"&variavel)
   response.write "<br>Seção 3 >> valor:"&variavel


   '-- Seção 4 --
   variavel = variavel + 2
   response.write MsgBox("Secao 4\nvalor:"&variavel)
   response.write "<br>Seção 4 >> valor:"&variavel



   response.write MsgBox("valor final:"&variavel)
   response.write "<br>Valor Final:"&variavel
%>
<br>
<br>
<a href="mailto:mayersk@hotmail.com">
<font face="Arial, Helvetica, sans-serif" size="2" color="#000000" style="text-decoration:none;">Myers
:: mayersk@hotmail.com</font> </a>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

terça-feira, 2 de outubro de 2001

0

Execute um script SQL pelo VB

O exemplo a seguir executará um script SQL em um arquivo.  Desta maneira, o arquivo pode conter multiplos comandos, mas somente um único batch (sem comandos 'GO').  Se você precisa executar um arquivo de script contendo mais de um batch, você terá que ler o arquivo linha a linha e executar os comandos contidos nas linhas lidas, quando você encontrar um comando 'GO'.  Note que 'GO' é um delimitador de batches e não um comando T-SQL, portanto, você não pode incluí-lo na string do query enviado ao servidor.

Set oCn = CreateObject("ADODB.Connection")
Set oFSO = CreateObject("Scripting.FileSystemObject")
oCn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial
Catalog=MyDatabase;Integrated Security=SSPI"
oCn.Execute oFSO.OpenTextFile("C:\SQLScripts\MySQLScript.sql").ReadAll

Esta matéria foi postada originalmente no ASP4Developers por Valmir Cinquini (site), que na época era "Analista/Programador C#, VB.Net, ASP, VB, Javascript e T-SQL

www.cinquini.com.br/vcinquini>". Hoje, vai saber...

segunda-feira, 1 de outubro de 2001

0

Limitar tamanho de palavras

Algumas vezes, é interessante quebrar o conteúdo de uma palavra gigantesca em palavras menores, mesmo que nao necessariamente corretamente separada, mas apenas para preservar o tamanho de uma tabela. Tente o código abaixo:


Function Quebra( texto, maximo )
dim i, retorno, matriz
matriz  = split( texto, " " )
retorno = ""
for i = 0 to uBound( matriz )
    do while len( matriz(i) ) > maximo
       retorno = retorno & left( matriz( i ), maximo ) & " "
       matriz( i ) = mid( matriz( i ), maximo + 1 )
    loop
    retorno = retorno & matriz( i ) & " "
next
Quebra = trim( retorno )
end function


Existem outras formas, envolvendo CSS, mas esta é a mais compatível com os diferentes browsers do mercado.



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

terça-feira, 25 de setembro de 2001

0

.NET Beta 2

Para aqueles que, como eu, aguardavam ansiosamente pela chegada do Beta 2 da plataforma .Net, deve ter ficado decepcionado com o erro durante o processo de instalação. Segundo a Microsoft, um lote de CDs saiu com defeito, mas a instalação pode ser concluída com sucesso, caso você siga os passos indicados em http://www.microsoft.com/brasil/vstudio/beta2install.stm Vou tentar quando chegar em casa e posto as novidades.

Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quinta-feira, 20 de setembro de 2001

1

Um "dedo-duro" a seu favor

Neste artigo mostro como o sistema pode encontrar um erro pela página e imediatamente lhe comunicar através do e-mail. Irei usar dois recursos simples para conseguir algo muito útil, ter conhecimento de erros ocorridos no site.

Para facilitar o uso e compreensão, a função que irá processar o erro é um artigo único que deverá ser incluido nas páginas, e quando houver erro, a pagina o chamará automaticamente.


erro.asp -> será o arquivo que pegará os valores referentes ao erro e enviará ao seu e-mail.


teste.asp -> uma página exemplo que estará preparada para reportar o erro caso ocorra algum.

 

Neste artigo irei fazer uso do objeto ERR (para detectar e descrever o erro) e do CDONTS (componente padrão para envio de email).

 

Segue a página teste.asp


<!--#Include File="erro.asp"-->
'aqui faço inclusão do arquivo que irá dedurar o erro caso ocorra

<% On error Resume next %>

'se pegar erro no meio do documento, força a continuar

 

<center><B>Dedo Duro</b></center><BR><BR>

<%

response.write "Teste às " & time

reponse.write "note algo aqui"

'perceba a linha acima "note algo aqui", há um erro proposital pois não existe o objeto REPONSE

'abaixo a instrução que verificará, se o número de erro for maior que zero, então ocorreu algum

If err.number > 0 then

Call ERROS      'erros é a função pra dedar, que está dentro de erro.asp

End if %>

 

 


Agora, o arquivo erro.asp


<%


Function erros

DedoDuro = "Erro ocorrido em: " & now

DedoDuro = DedoDuro & "Pagina: " & request.ServerVariables("SCRIPT_NAME")

DedoDuro = DedoDuro & "Número: " & err.number

DedoDuro = DedoDuro & "Descrição: " & err.description

DedoDuro = DedoDuro & "Fonte: " & err.source

'acima cria a mensagem com a descrição do erro ocorrido

 

Set mail = Server.CreateObject("CDONTS.NewMail")



mail.subject = "Ocorreu um erro"

mail.MailFormat = 0

mail.BodyFormat = 0

mail.body = DedoDuro

mail.send

set mail = nothing

 

response.write "Ocorreu um erro nesta pagina, e um email foi gerado para notificar o webmaster"

End Function

%>

 


Pronto! É isso aí!


Rresumindo, o arquivo teste.asp tem um erro provocado e quando chega ao fim do documento, é verificado que ocorreu, e automaticamente chama a função ERROS, que é o arquivo erro.asp, que monta uma descrição do erro ocorrido e envia ao mail.



Esta matéria foi postada originalmente no ASP4Developers por Oscar Pires (BLADE) (site), que na época era "Desenvolvedor ASP e Visual Basic, desenvolve sites interativos e sistemas para empresas. ". Hoje, vai saber...

sexta-feira, 14 de setembro de 2001

0

Onde está o Wally ?

Olá gente! Esta nota é apenas para deixar claro que nao morri e dar uma satisfação aos amigos e visitantes do site. A enquete sobre o layout do site foi finalizada, onde o "novo" ganhou do "velho" com uma pequena margem de vantagem. Então, resolvi colocar as duas versões, podendo o visitante escolher qual ele prefere.. Mais democrático, não ?


Mas, o tempo anda escasso e, para variar, minha fonte queimou. Estarei redesenhando o ASP4D enquanto toco outros projetos paralelos.


E por falar em projetos paralelos, deixo aqui algumas dicas sobre o que ando estudando, para atiçar a curiosidade dos colegas. Andei analisando de perto os Schemas, em particular o XML-Data Reduced (XDR). Em linhas gerais, funciona basicamente como um DTD, definindo qual a estrutura de um documento XML, mas com dois diferenciais importantes: usa a sintaxe do XML e permite definir tipos de dados. Fica bastante interessante deixar o client fazer a validação de, por exemplo, campos data ou numéricos, sem muito código. Vale a visita.


Uma outra tecnologia que aposto bastante e que atualmente é a minha menina dos olhos, é a Scalable Vector Graphics (SVG). Consiste em um vocabulário XML para descrever gráficos bidimensionais, com recursos fantásticos, que é melhor vendo do que eu explicando. Acessem www.adobe.com/svg/demos/ e entendam o que eu estou falando. Não esqueçam de clicar com o botão direito, olhar o código fonte e exclamar: "putz! pensei que fosse flash... caraca!". Sinceramente recomendo uma análise detalhada da documentação de 600 e tantas páginas no site http://www.w3.org/TR/2001/REC-SVG-20010904/ (lembre-se que é um padrão que será aceito por empresas do porte de Microsoft, Adobe, Corel, etc)


Bom gente, por enquanto é só. Abraços a todos



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

quarta-feira, 12 de setembro de 2001

0

Checando componentes do servidor

Você pode ver tudo q esta bilitado no servidor com este script! muito Útil!


<% @ Language="VBScript" %>
<% Option Explicit %>
<%
Dim theComponent(11)
Dim theComponentName(11)


' componentes
theComponent(0) = "ADODB.Connection"
theComponent(1) = "SoftArtisans.FileUp"
theComponent(2) = "AspHTTP.Conn"
theComponent(3) = "AspImage.Image"
theComponent(4) = "LastMod.FileObj"
theComponent(5) = "Scripting.FileSystemObject"
theComponent(6) = "SMTPsvg.Mailer"
theComponent(7) = "CDONTS.NewMail"
theComponent(8) = "Jmail.smtpmail"
theComponent(9) = "SmtpMail.SmtpMail.1"
theComponent(10) = "Persits.Upload.1"
theComponent(11) = "UnitedBinary.AutoImageSize"


' apelido do componente!
theComponentName(0) = "ADODB"
theComponentName(1) = "SA-FileUp"
theComponentName(2) = "AspHTTP"
theComponentName(3) = "AspImage"
theComponentName(4) = "LastMod"
theComponentName(5) = "FileSystemObject"
theComponentName(6) = "ASPMail"
theComponentName(7) = "CDONTS"
theComponentName(8) = "JMail"
theComponentName(9) = "SMTP"
theComponentName(10) = "Persits Upload"
theComponentName(11) = "AutoImageSize"


Function IsObjInstalled(strClassString)
 On Error Resume Next
  IsObjInstalled = False
  Err = 0
 Dim xTestObj
 Set xTestObj = Server.CreateObject(strClassString)
 If 0 = Err Then IsObjInstalled = True
 Set xTestObj = Nothing
  Err = 0
End Function
%>

<html>
<head>
<title>O q tem aqui?</title>
</head>
<body>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000"><b>Componentes
      instalados:</b></font></td>
  </tr>
  <tr>
    <td> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
      <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <%
  Dim i
        For i=0 to UBound(theComponent)
      If Not IsObjInstalled(theComponent(i)) Then
       
   Else
            Response.Write "<tr>" & vbCrLf
           Response.Write "<td width=""100%"">" & vbCrLf
           Response.Write "<b>" & theComponentName(i) & "</b>" & vbCrLf
          Response.Write "</td>" & vbCrLf
          Response.Write "</tr>" & vbCrLf
      End If
     Next
     %>

   </table>
 </font>
 </td>
  </tr>
</table>


</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

quinta-feira, 6 de setembro de 2001

0

Calendário ASP

Fiquei um pouco chateado quando coloquei um código de calendário em uma pagina e não funcionou. Para principiantes isso é uma decepção, ele ficaria muito chateado, então resolvi arrumar e mostrar todo o código.


Aceito críticas  e sugestões


[]´s


Myers


<%@ Language="VBScript" %>
<%
fDia = 1 ' Varaivel para iniciar contagem no dia 1


' Nome de como foi salva esta página(neste caso a sugestão é calendario.asp)
sURL = "calendario.asp"


' Matriz que indica o nº máximo de Dias permitidos em cada mês
' Jan. tem 31 Dias, Fev. tem 28 ou 29 Dias, Mar. tem 31 Dias, etc.
' A contagem dos Meses começa a partir do um (1): Jan. = 1, Fev. = 2, Mar. = 3, etc.
Dim aDiasMes
ReDim aDiasMes(12)
   aDiasMes(01) = 31
   aDiasMes(02) = 28
   aDiasMes(03) = 31
   aDiasMes(04) = 30
   aDiasMes(05) = 31
   aDiasMes(06) = 30
   aDiasMes(07) = 31
   aDiasMes(08) = 31
   aDiasMes(09) = 30
   aDiasMes(10) = 31
   aDiasMes(11) = 30
   aDiasMes(12) = 31


' Função que escreve o mês por extenso, passando o numero do Mes como parametro
Function MesExtenso(Mes)
   Select Case Mes
   Case 1
      MesExtenso = "Janeiro"
   Case 2
      MesExtenso = "Fevereiro"
   Case 3
      MesExtenso = "Março"
   Case 4
      MesExtenso = "Abril"
   Case 5
      MesExtenso = "Maio"
   Case 6
      MesExtenso = "Junho"
   Case 7
      MesExtenso = "Julho"
   Case 8
      MesExtenso = "Agosto"
   Case 9
      MesExtenso = "Setembro"
   Case 10
      MesExtenso = "Outubro"
   Case 11
      MesExtenso = "Novembro"
   Case 12
      MesExtenso = "Dezembro"
   End Select
End Function


' Função que escreve os dias da semana
Function DiaSemana(iDia)
   Select Case iDia
      Case 0
         DiaSemana = "Dom"
      Case 1
         DiaSemana = "Seg"
      Case 2
         DiaSemana = "Ter"
      Case 3
         DiaSemana = "Qua"
      Case 4
         DiaSemana = "Qui"
      Case 5
         DiaSemana = "Sex"
      Case 6
         DiaSemana = "Sab"
   End Select
End Function


' Funcao para saber quantas semanas tem o mes
Function nSemanas(Mes, Ano)
Dim nSem
   DtInicial = DateSerial(Ano, Mes, fDia)
   if WeekDay(DtInicial) = 1 then
      nSem = 0
   else
      nSem = 1
   end if
   nDiasMes = aDiasMes(Mes)


   for i = 1 to nDiasMes
      if WeekDay(DtInicial) = 1 then
         nSem = nSem + 1
      end if
      DtInicial = DateAdd("d", 1, DtInicial)
   next
   nSemanas = nSem
End Function


' Subrotina que identifica se o ano é bissexto
Sub SetBissexto
   Data = Request("Data")
   if Trim(data) = "" then
      Data = Date()
   else
      Data = CDate(Data)
   end if
   Ano = Year(Data)
   'Verifica se é Ano bissexto e diz se fevereiro tem 28 ou 29 dias
   if (Ano mod 4 = 0) or (Ano mod 100 = 0) and (Ano mod 400 = 0) then
      aDiasMes(2) = 29
   else
      aDiasMes(2) = 28
   end if
End Sub


   SetBissexto ' Chamada da Subrotina de verificacao


' Subrotina que monta o calendario
Sub MontaCalendario
   Data = Request("Data")
   if Trim(data) = "" then
      Data = Date()
   else
      Data = CDate(Data)
   end if


   Ano = Year(Data)
   Mes = Month(Data)
   DiaInicial = WeekDay(DateSerial(Ano, Mes, fDia))
   DtInicial = DateSerial(Ano, Mes, fDia)


   ' Início da Tabela
   response.write "<table border=""1"" cellpading=""0"" cellspacing=""0""><tr>"&VBCrLf
 
   ' Retroage um mês
   response.write "<th width=""25"">"&VBCrLf
   response.write "<center><input type=""button"" value="" << "" onclick=""javascript:document.location.href='"&sURL&"?data="&DateAdd("m", -1, DtInicial)&"'"">"&VBCrLf
   response.write "</center></th>"&VBCrLf
 
   ' Escreve mês e o Ano no cabeçalho
   response.write "<th colspan=""5"" class=""cel"" align=""center"" nowrap width=""120"">"&MesExtenso(Month(DtInicial))&" - "&Year(DtInicial)&"</th>"&VBCrLf
   ' Avança um mês
   response.write "<th width=""25"">"&VBCrLf
   response.write "<center><input type=""button"" value="" >> "" onclick=""javascript:document.location.href='"&sURL&"?data="& DateAdd("m", 1, DtInicial)& "'"">"&VBCrLf
   response.write "</center></th></tr>"&VBCrLf


   ' Escreve cabeçalho dos Dias da semana
   response.write "<tr>"
   for j = 0 to 6
      if j=0 then
         response.write "<td class=""cel"" align=""center""><div class=""dom"">"&DiaSemana(j)&"</div></td>"&VBCrLf
      else
         response.write "<td class=""cel"" align=""center"">"&DiaSemana(j)&"</td>"&VBCrLf
      end if
   next
   response.write "</tr>"


   ' Escreve tabela de dias
   for i = 0 to (nSemanas(Month(DtInicial), Year(DtInicial)) -1)
      response.write "<tr>"&VBCrLf
      for j = 0 to 6
         if (DiaInicial-1) > j and i = 0 then
            if j=0 and i=0 then
               response.write "<td class=""cel""><div class=""dom"">&nbsp;</div></td>"&VBCrLf
            else
               response.write "<td class=""cel"">&nbsp;</td>"&VBCrLf
            end if
         else
            if Month(DtInicial) > Mes or Year(DtInicial) > Ano then
               response.write "<td class=""cel"">&nbsp;</td>"&VBCrLf
            else
               if weekDay(DtInicial) = 1 then
                  response.write "<td class=""cel"" align=""center""><div class=""dom""><a href=""javascript:upData('"&DtInicial&"')"">"&Day(DtInicial)&"</a></div></td>"&VBCrLf
               else
                  if DtInicial = Date() then
                     response.write "<td align=""center""><div class=""hoje""><a href=""javascript:upData('"&DtInicial&"')"" style=""Color: White;"">"&Day(DtInicial)&"</a></div></td>"&VBCrLf
                  else
                     response.write "<td class=""cel"" id="&Day(DtInicial)&" align=center><a href=""javascript:upData('"&DtInicial&"'); ClickedDay('"&Day(DtInicial)&"')"">"&Day(DtInicial)&"</a></td>"&VBCrLf
                  end if
               end if
            end if
            DtInicial = DateAdd("d", DtInicial, 1)
         end if
      next
      response.write "</tr>"&VBCrLf
   next


   ' Fim tabela
   response.write "</table>"&VBCrLf
End Sub


%>
<html>
<head>
<script language="JavaScript">
<!--
// Função para exibir a data quando clicar no dia
function upData(data){
   alert(data);
   }


function ClickedDay(Dia){
   return
   }
-->
</script>


<style>
th.cel{Font-Family: Verdana; Font-Size: 8 pt; Background : #DDF4FF; Color: #003366;}
td.cel{Font-Family: Verdana; Font-Size: 8 pt;}
.hoje {Font-Family: Verdana; Font-Size: 8 pt; Background : #0000FF; Color: #FFFFFF;}
a{Font-Family: Verdana; Font-Size: 8 pt; Text-Decoration: None; Color: #000000;}
a:hover{Font-Family: Verdana; Font-Size: 8 pt; Text-Decoration: None; Color: #FF0000;}
.dom{Font-Family: Verdana; Font-Size: 8 pt; Text-Decoration: None; Color: #003366;
     background : #DDF4FF;}
p {Font-Family: Verdana; Font-Size: 10 pt;}
td{Font-Family: Verdana; Font-Size: 10 pt;}
</style>


<title>calendario.asp [Atualizado por: Myers :: mayersk@hotmail.com]</title></head>
<body bgcolor="#FFFFFF">
  <p align="center">
      <% MontaCalendario %>
     <br><br>
    <font size="1"><a href="mailto:mayersk@hotmail.com">Atualizado por Myers :: mayersk@hotmail.com</a></font>
  </p>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

terça-feira, 4 de setembro de 2001

0

Função para contar a quantidade caracteres na String

' Verifica a qtuantidade que uma string tem de um caractere
Function CaracteresNaString(Str,Caracter)
Dim Contador, i, QtdeChar


   Contador = 0
   for i = 1 to Len(Str)
      Contador = Contador + 1
      'Se existir o caractere na string adiciona 1 ao contador de caracteres
      if mid(Str,Contador,1) = Caracter then
       QtdeChar = QtdeChar + 1
      end if
   next


   CaracteresNaString = QtdeChar
  
End Function



Esta matéria foi postada originalmente no ASP4Developers por Rafael "M4yers" Rossi (site), que na época era "...". Hoje, vai saber...

sexta-feira, 31 de agosto de 2001

0

Download do VisualStudio.net e SDK

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp


 


Aqui esta tudo o que você precisa para .NET



Esta matéria foi postada originalmente no ASP4Developers por Thiago Machado Souza (site), que na época era "Programador Desbravador, buscando quebrar todas as fronteiras além do horizonte da arte de programar !
www.thiagomachado.com.br". Hoje, vai saber...

quarta-feira, 29 de agosto de 2001

0

Criar e Ler TXT

Abaixo segue um exemplo simples, de como criar e ler arquivos txt, pois em alguns casos é desnecessário gravar dados num banco de dados, seja pelo volume pequeno, ou apenas por não necessitar maiores cuidados.


* GRAVAR DADOS EM UM TXT
<%
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
caminho = server.MapPath("teste.txt")
Set GRAVAR = FSO.CreateTextFile(caminho,true)
'Foi criado o objeto, e logo apos busca o txt para gravar, se não achar, vai cria-lo (note o TRUE)


gravar.write ("teste de gravação")
gravar.close
response.write "GRAVADO!"
'apos abrir o TXT, gravará a linha com o texto "TESTE DE GRAVAÇÃO" a confirmação no cliente aparecerá como "GRAVADO"
%>


* LER CONTEÚDO DE UM TXT
<%
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
caminho=server.mappath("teste.txt")
Set TXT = FSO.OpenTextFile(caminho)
'cria o objeto, e busca pelo TXT indicado pela variável caminho como acima.

response.write txt.readALL   
'após abrir o TXT, enviará direto ao cliente todo conteúdo do TXT, neste exemplo, retornará "TESTE DE GRAVAÇÃO" como foi gravado acima.
txt.close

%>


Bom é isso, FSO (FileSystemObject) pode auxiliar em diversas funções já que possibilita criar/alterar/excluir arquivos ou pastas.


Falow para todos =)



Esta matéria foi postada originalmente no ASP4Developers por Oscar Pires (BLADE) (site), que na época era "Desenvolvedor ASP e Visual Basic, desenvolve sites interativos e sistemas para empresas. ". Hoje, vai saber...

segunda-feira, 20 de agosto de 2001

0

Mudando a cor das linhas com "Rollovers"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>TR Color</TITLE>
</HEAD>
<BODY>
<SCRIPT language=javascript>
<!--
        function mOvr(src,clrOver) {
                        src.style.cursor = 'hand';
                        src.bgColor = clrOver;
                     }
        function mOut(src,clrIn) {
                        src.style.cursor = 'default';
                        src.bgColor = clrIn;

        }
        function mClk(src) {
                if(event.srcElement.tagName=='TD'){
                        src.children.tags('A')[0].click();
                }
        }
// -->
</SCRIPT>
<table cellspacing=1 cellpadding=3 width="100%" bgcolor=white border=0>
  <tr onMouseOver="mOvr(this,'#cccccc');" onMouseOut="mOut(this,'#0066cc');"
bgcolor="#0066cc">
    <td  width="51%"  onClick="mClk(this)">
      <a class=menu href="http://www.uol.com.br">Texto1</a></td>
    <td onclick="mClk(this)" width="49%">&nbsp;</td>
  </tr>
  <tr onMouseOver="mOvr(this,'#cccccc');" onMouseOut="mOut(this,'#0066cc');"
bgcolor="#0066cc">
    <td  width="51%"  onClick="mClk(this)">
      <a class=menu href="http://www.uol.com.br">Texto1</a></td>
    <td onclick="mClk(this)" width="49%">&nbsp;</td>
  </tr>
    <tr onMouseOver="mOvr(this,'#cccccc');"
onMouseOut="mOut(this,'#0066cc');" bgcolor="#0066cc">
    <td  width="51%"  onClick="mClk(this)">
      <a class=menu href="http://www.uol.com.br">Texto1</a></td>
    <td onclick="mClk(this)" width="49%">&nbsp;</td>
  </tr>
    <tr onMouseOver="mOvr(this,'#cccccc');"
onMouseOut="mOut(this,'#0066cc');" bgcolor="#0066cc">
    <td  width="51%"  onClick="mClk(this)">
      <a class=menu href="http://www.uol.com.br">Texto1</a></td>
    <td onclick="mClk(this)" width="49%">&nbsp;</td>
  </tr>
    <tr onMouseOver="mOvr(this,'#cccccc');"
onMouseOut="mOut(this,'#0066cc');" bgcolor="#0066cc">
    <td  width="51%"  onClick="mClk(this)">
      <a class=menu href="http://www.uol.com.br">Texto1</a></td>
    <td onclick="mClk(this)" width="49%">&nbsp;</td>
  </tr>
  </table>
</BODY>
</HTML>


 



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...