terça-feira, 20 de março de 2001

0

FullScreen com Barra de tarefas

Espero que esta postagem possa ser útil...


Bom, para começar, deve-se abrir uma janela simples (sem status, sem endereço, sem rolagem, etc) e sem nenhuma informação e NÃO DEVE CONTER FRAMES. Basta apenas escrever "Carregando...", se preferir.
Para fazer isso use a função window.open() com a página criada.


OBS.: esta página ainda não é a sua Home Page.


Restrição: Esta janela tem que ter top=0 e left=0, e tamanho 798 x 545.


Aí vc diz: "Mas AspTeco, desta forma eu não sumi com a barra de títulos e as bordas feias da janela!"


Então eu digo: "Calma, o segredo vem agora!"


Nesta página em branco (ou com o "Carregando...") deve conter o seguinte código:


function window_onload() {
window.moveTo(-5,-24); // aqui sumimos com a barra de títulos
         // e com a borda esquerda
window.resizeBy(1,26); // aqui esticamos a parte inferior e
         // escondemos a borda direita
window.location.href = "default.htm" // aqui vc chama
         // a sua Home Page (pode conter frames)
}


Na tag <BODY> da "Carregando...", coloque isto:


<BODY onload="return window_onload()">


Com este grupo de códigos, você verá que quase nada é impossível na computação! Você acabou de abrir uma janela fullscreen com barra de tarefas!


Visitem http://www.aguaviva.mus.br e vejam como ficou.



Esta matéria foi postada originalmente no ASP4Developers por Edson Luiz P. Jr. AspTeco (site), que na época era "Como diz um filósofo antigo... "Só sei que nada sei". Estou meio assim no meio de tanta fera! Eu arranho ASP, VbScript, JavaScript... o que puder (e souber), posso colaborar!". Hoje, vai saber...

segunda-feira, 19 de março de 2001

0

Manual de sobrevivência

Este texto , de suposta autoria de Willian Shakespeare, chegou na minha caixa postal há algum tempo e não tem nada a ver com ASP. No entanto, ele reflete muito do que eu pensei quando comecei a desenvolver o ASP4D e gostaria de compartilhar com os amigos. Clique aqui.



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, 16 de março de 2001

0

Ordenação de arrays (BubbleSort)

Para ordenar uma matriz, use a função abaixo.


Function BubbleSort( matriz )
dim i, j, aux
For i = 0 To UBound(matriz)
    For j = 0 To UBound(matriz)
        If( matriz(i) < matriz(j) ) Then
            aux = matriz(j)
            matriz(j) = matriz(i)
            matriz(i) = aux
        End If
    Next
Next
BubbleSort = matriz
End Function


Este código é destinado para organizar "matrizes pequenas, onde os itens já estejam proximamente ordenados" e não é recomendada para matrizes muito grandes. Nestas, você pode usar o algoritmo de QuickSort, encontrado em http://www.4guysfromrolla.com/webtech/012799-2.shtml


Agradecimentos à Wilker Bezerra Silva pelos apontamentos e correções.



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...

0

Checando os recursos do browser

<%
dim bc
Set bc = Server.CreateObject("MSWC.BrowserType")


if bc.ActiveXControls and bc.cookies    and bc.frames and _
   bc.Javaapplets     and bc.Javascript and bc.Tables and _
   bc.Vbscript then
  
   response.redirect "principal.asp"
   response.end
end if
%>
<body>
 <table border=1 align=center>
  <tr>
   <th>Característica</th>
   <th>Disponível?</th>
  </tr>
  <tr>
   <td>ActiveX Controls</td>
   <td align=center><%= iif( bc.ActiveXControls, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>Background Sounds</td>
   <td align=center><%= iif( bc.Backgroundsounds, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>Beta Specifies</td>
   <td align=center><%= iif( bc.BetaSpecifies, "<b>SIM</b>", "Nao" ) %></td>
  </tr>
  <tr>
   <td>Cdf Specifies</td>
   <td align=center><%= iif( bc.CdfSpecifies, "Sim", "Nao" ) %></td>
  </tr>
  <tr>
   <td>Browser</td>
   <td align=center><%= bc.Browser & " " & bc.version & " " & bc.Platform %></td>
  </tr>
  <tr>
   <td>Cookies</td>
   <td align=center><%= iif( bc.Cookies, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>Frames</td>
   <td align=center><%= iif( bc.Frames, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>Java Applets</td>
   <td align=center><%= iif( bc.Javaapplets, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>JavaScript</td>
   <td align=center><%= iif( bc.Javascript, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>VBScript</td>
   <td align=center><%= iif( bc.Vbscript, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
  <tr>
   <td>Tables</td>
   <td align=center><%= iif( bc.Tables, "Sim", "<b>NAO</b>" ) %></td>
  </tr>
 </table>
 </body>
</html><%
function iif( condicao, valor1, valor2 )
if condicao then iif = valor1 else iif = valor2
end function
%>



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, 15 de março de 2001

0

Liste os arquivos de um dir com nome, data, tamanho e etc

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://www.asp101.com/samples/download.asp?file=dir%5Flist%2Easp -->
<HTML>
<HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
<title>[Ricardo - ASP]</title>
<style type="text/css">
<!--
a {  text-decoration: none}
-->
</style>
</HEAD>
<BODY bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div align="center"><font face="Tahoma" size="2"><b><%
Function ShowImageForType(strName)
 Dim strTemp


 strTemp = strName
 
If strTemp <> "dir" Then
  strTemp = LCase(Right(strTemp, Len(strTemp) - InStrRev(strTemp, ".", -1, 1)))
 End If
 
Select Case strTemp
  Case "asp"
   strTemp = "asp"
  Case "dir"
   strTemp = "dir"
  Case "htm", "html"
   strTemp = "htm"
  Case "gif", "jpg"
   strTemp = "img"
  Case "txt"
   strTemp = "txt"
  Case Else
   strTemp = "misc"
 End Select
 strTemp = "<IMG SRC=""imagens/dir_" & strTemp & ".gif"" WIDTH=16 HEIGHT=16 BORDER=0>"


ShowImageForType = strTemp
End Function


%> <%
Dim strPath   'Path of directory to show
Dim objFSO    'FileSystemObject variable
Dim objFolder 'Folder variable
Dim objItem   'Variable used to loop through the contents of the folder


If Request.Form("Caminho") = "" Then
strPath = "/diretoriopadrao"
Else
strPath = Request.Form("Caminho")
End If


Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))


%> Conte&uacute;do de <%= strPath %></b></font> <BR>
  <BR>
  <TABLE BORDER="1" CELLSPACING="0" CELLPADDING="2" BORDERCOLOR="#FF6633" width="750">
    <TR BGCOLOR="#FF6633">
      <TD align="center" valign="middle" height="45? width="72"><font color="#FFFFFF" face="Tahoma" size="2"><B>Nome:</B></font></TD>
      <TD align="center" valign="middle" height="45" width="115"><font color="#FFFFFF" face="Tahoma" size="2"><B>Tamanho
        (kb):</B></font></TD>
      <TD align="center" valign="middle" height="45" width="185"><font color="#FFFFFF" face="Tahoma" size="2"><B>Data
        Cria&ccedil;&atilde;o:</B></font></TD>
      <TD align="center" valign="middle" height="45" width="126"><font face="Tahoma" size="2" color="#FFFFFF"><b>Ultima
        Modifica&ccedil;&atilde;o:</b></font></TD>
      <TD valign="middle" align="center" height="45" width="220"><font color="#FFFFFF" face="Tahoma" size="2"><B>Tipo:</B></font></TD>
    </TR>
    <%
For Each objItem In objFolder.SubFolders
 If InStr(1, objItem, "_vti", 1) = 0 Then
 %>
   
<TR BGCOLOR="#FFFFFF">
      <TD ALIGN="left" width="72" ><font face="Tahoma" size="2" color="#000000"><%= ShowImageForType("dir") %>&nbsp;<A HREF="<%= strPath & "/" & objItem.Name %>"><%= objItem.Name %></A></font></TD>
      <TD ALIGN="right" width="115"><font face="Tahoma"  size="2" color="#000000"><%= objItem.Size/1024 %></font></TD>
      <TD ALIGN="left" width="185" ><font face="Tahoma"  size="2" color="#000000"><%= objItem.DateCreated %></font></TD>
      <TD ALIGN="left" width="126" >
        <div align="center"><font face="Tahoma" size="2" color="#000000"><%= objItem.DateLastModified
 %>
</font></div>
      </TD>
      <TD ALIGN="left" width="220" ><font face="Tahoma" size="2" color="#000000"><%= objItem.Type %></font></TD>
    </TR>
    <%
End If
Next
For Each objItem In objFolder.Files
%>
   
<TR BGCOLOR="#FFFFFF">
      <TD font color="#FFFFFF" face="Tahoma" size="2" width="72"><font face="Tahoma" size="2" color="#000000"><%= ShowImageForType(objItem.Name) %>&nbsp;<A HREF="<%= strPath & "/" & objItem.Name %>"><%= objItem.Name %></A></font></TD>
      <TD font color="#FFFFFF" face="Tahoma" size="2"  ALIGN="right" width="115"><font face="Tahoma"  size="2" color="#000000"><%= objItem.Size/1024 %></font></TD>
      <TD color="#FFFFFF" face="Tahoma" size="2" ALIGN="left" width="185" ><font face="Tahoma" size="2" color="#000000"><%= objItem.DateCreated %></font></TD>
      <TD color="#FFFFFF" face="Tahoma" size="2" ALIGN="left" width="126" >
        <div align="center"><font face="Tahoma" size="2" color="#000000"><%= objItem.DateLastModified
 %>
</font></div>
      </TD>
      <TD color="#FFFFFF" face="Tahoma" size="2" ALIGN="left" width="220" ><font face="Tahoma" size="2" color="#000000"><%= objItem.Type %></font></TD>
    </TR>
    <%
Next
%>
 
</TABLE>
  <br>
  <form method="post" action="dir_list.asp" name="form">
    <input type="text" name="caminho">
    <input type="submit" name="Submit" value="Ir">
    <br>
    <br>
    <br>
    </form>
</div>
</BODY></HTML>



Esta matéria foi postada originalmente no ASP4Developers por Ricardo Costa (site), que na época era "Programador Delphi, Java, ASP e PHP de uma produtora de Web Sites (www.icorp.com.br) e estou cursando graduação em Ciências da Computação na UNICAP". Hoje, vai saber...

0

Veja os drives do servidor

<%


'*************************************************************
'* Nome do Script: DiskInfo - v1.0                   *
'* Arquivo: diskinfo.asp                                     *
'* Descrição: Mostra informações de utilização de discos     *
'*            no servidor                  *
'* Autor: Cass Surek - cs@master.com.br                      *
'* Data: 24/07/1999                                          *
'* Obs: - Modifique as configurações para suas necessidades  *
'*      - Modifique os campos do arquivo texto se preciso,   *
'*          na primeira linha do txt                         *
'*                                                           *
'* -Use o script à vontade, só mande um e-mail para          *
'*  que eu saiba que o script foi útil. :-)                  *
'* -Mande suas sugestões para melhoria!                      *
'* -Por favor, não retire este cabeçalho.                    *
'*************************************************************


 
 Option Explicit
 Response.Buffer = True
 
 Dim ObjFSO, ObjDrivesCol, ObjDrive
 Dim Num_Drives, Drive
 Dim i, item, Pronto, Tipo
 Dim Reg_Estilo1, Reg_Estilo2, Reg_Estilo3, Reg_Estilo4
 Dim Tab_Larg, Tab_Bord, Tab_Cab_Cor, Tab_CabT_Cor, Tab_Reg_Cor, Tab_RegT_Cor, Tab_Al
 Dim Tab_Cell_Spacing, Tab_Cell_Padding, Det_Scr


 
 '*****************
 '* Configurações *
 '*****************
 
 'Tabela
 '-------------
 
  'Qual é a largura da Tabela? (em pixels, ex: 580 ou porcentagem, ex: 90%)
  Tab_Larg = "300"
 
  'Qual é a borda da Tabela? (em pixels)
  Tab_Bord = 0
 
  'Qual é a cor do cabeçalho da Tabela? (em hexadecimal, #000000 = Preto, #FFFFFF = Branco)
  Tab_Cab_Cor = "#0000FF"
 
  'Qual é a cor do texto do cabeçalho da Tabela? (em hexadecimal, #000000 = Preto, #FFFFFF = Branco)
  Tab_CabT_Cor = "#FFFFFF"


  'Qual é o espaçamento entre células da tabela? (em pixels)
  Tab_Cell_Spacing = 1
  
  'Qual é o espaçamento entre a borda da célula e o texto? (em pixels)
  Tab_Cell_Padding = 4


 
 
 'Extras
 '------
 
  'Mostrar Título do Script? <Sim/Não>
  Det_Scr = "Sim"


 '***********
 '* Funções *
 '***********


 Public Function Erro(mensagem)
 
  Response.Write "<p><strong><font face=" & Chr(34) & "Arial" & Chr(34) & _
                 "color=" & Chr(34) & "#0000FF" & Chr(34) & "> " & _
                 "Erro!!! " & mensagem & "</font></strong></p><br>"
  
 End Function
 


 Public Function Cabeca()
 
    %>

 
    <center>
    <font face="Arial" Size="+3" color="#0000FF">Script DiskInfo <br></font>
    <font face="Arial"><small>Cass Surek - <a href="mailto:cs@master.com.br">cs@master.com.br</a><br></small></font>
    <font face="Arial"><small>Versão 1.0 - última alteração feita em 25/07/1999</small></font>
    <br><br>
    </center>


    <%
   
 End Function
 
 '**********
 '* Início *
 '**********
 
 Reg_Estilo1 = "<tr><td" & " width=" & Chr(34) & "50%" & Chr(34) & " bgcolor=" & Chr(34) & "#999999" & Chr(34) & "><font face=" & Chr(34) & "Arial" & Chr(34) & "color=" & Chr(34) & "#000000" & Chr(34) & "><small><strong>"
 Reg_Estilo2 = "</td>"
 Reg_Estilo3 = "<td" & " width=" & Chr(34) & "50%" & Chr(34) & " bgcolor=" & Chr(34) & "#444444" & Chr(34) & "><font width=" & Chr(34) & "80%" & Chr(34) & "face=" & Chr(34) & "Arial" & Chr(34) & "color=" & Chr(34) & "#FFFFFF" & Chr(34) & "><small>"
 Reg_Estilo4 = "</strong></small></td></tr>"
 
 
 Set ObjFSO = CreateObject("Scripting.FileSystemObject")
 
 Set ObjDrivesCol = ObjFSO.Drives
 
 
 If Det_Scr = "Sim" then
    Call Cabeca()
 End If
 
 
   %><
table border="<% = Tab_Bord %>" width="<% = Tab_Larg %>" align="center" cellpadding="<% = Tab_Cell_Padding %>" cellspacing="1">
 
   <tr><td bgcolor="<% = Tab_Cab_Cor %>" colspan="2"><font face="Arial" color="<% = Tab_CabT_Cor %>"><strong><small>
          Geral</strong><br>
          </strong></small></td></tr>
         
         
          <%
          Response.Write Reg_Estilo1 & "Número de Drives:" & Reg_Estilo2 & Reg_Estilo3 & ObjDrivesCol.count & Reg_Estilo4
          %>
         
         
         
</table><br><br>
         
         
        <%


  For Each Drive in ObjDrivesCol
       


   %><table border="<% = Tab_Bord %>" width="<% = Tab_Larg %>" align="center" cellpadding="<% = Tab_Cell_Padding %>" cellspacing="1"><%
  
          %>
<tr><td bgcolor="<% = Tab_Cab_Cor %>" colspan="2"><font face="Arial" color="<% = Tab_CabT_Cor %>"><strong><small><%
          Response.Write "Drive " & Drive.DriveLetter & "</strong><br>"
          %>
</strong></small></td></tr><%


          'Nome do Volume
          If Drive.IsReady = True then
             Response.Write Reg_Estilo1 & "Nome:" & Reg_Estilo2 & Reg_Estilo3 & Drive.VolumeName & Reg_Estilo4
          End If
         
  
   'Número de Série
   If Drive.IsReady = True then
      Response.Write Reg_Estilo1 & "Nº de Série:" & Reg_Estilo2 & Reg_Estilo3 & Drive.SerialNumber & Reg_Estilo4
   End If
  
          'Drive Pronto?
          If Drive.Isready then
             Pronto = "Sim"
          Else
             Pronto = "Não"
          End If
          Response.Write Reg_Estilo1 & "Pronto?" & Reg_Estilo2 & Reg_Estilo3 & Pronto & Reg_Estilo4
                   
         
          'Tipo do Drive
          Select Case Drive.DriveType
           case 0
             Tipo = "Desconhecido"
           case 1
             Tipo = "Removível"
           case 2
             Tipo = "Fixo"
           case 3
             Tipo = "Drive de Rede"
           case 4
             Tipo = "CD-ROM"
           case 5
             Tipo = "Drive Virtual (RAM)"
          End Select
        
          Response.Write Reg_Estilo1 & "Tipo do Drive:" & Reg_Estilo2 & Reg_Estilo3 & Tipo & Reg_Estilo4
         
         
         
          'Espaço Total e Espaço Disponível
         
          If Drive.Isready = True then
             Response.Write Reg_Estilo1 & "Tamanho:" & Reg_Estilo2 & Reg_Estilo3 & FormatNumber(Drive.TotalSize / 1024, 0) & " Kb" & Reg_Estilo4
             Response.Write Reg_Estilo1 & "Espaço Livre:" & Reg_Estilo2 & Reg_Estilo3 & FormatNumber(Drive.AvailableSpace / 1024, 0) & " Kb" & Reg_Estilo4
          End If


          'Sistema de Arquivo
   If Drive.IsReady = True then
      Response.Write Reg_Estilo1 & "Sistema de Arquivos:" & Reg_Estilo2 & Reg_Estilo3 & Drive.Filesystem & Reg_Estilo4
   End If
            
      %>
</table><br><br><% 
          Next


 


 Set ObjFSO = Nothing


 '*******
 '* Fim *
 '******* 


 %>
  
  



Esta matéria foi postada originalmente no ASP4Developers por Ricardo Costa (site), que na época era "Programador Delphi, Java, ASP e PHP de uma produtora de Web Sites (www.icorp.com.br) e estou cursando graduação em Ciências da Computação na UNICAP". Hoje, vai saber...

0

Página que exibe a lista Server.Variables

<html>
<head>
<title>Server Variables</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div align="center"><b><font face="Tahoma" size="2">Lista das Vari&aacute;veis do Servidor</font></b><br><br>


<table border=0 vspace="0" hspace="0" cellpadding="1" cellspacing="1" bgcolor="#FF6633" bordercolor="#FFFFFF" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" width="400">
    <tr bordercolor="#FFFFFF">
     <td bgcolor="#CCCCCC"><font face="Tahoma" size="2"><b>Server Variable</b></font></td>
     <td bgcolor="#FFFFFF"><font face="Tahoma" size="2"><b>Value</b></font></td>
     </tr>
<% For Each Item In Request.ServerVariables %>
   
<tr>
      <td bgcolor="#CCCCCC"><font size="2" face="Tahoma"><%= Item %></font></td>
      <td bgcolor="#FFFFFF"><font size="2" face="Tahoma"><%= Request.ServerVariables(Item) %>&nbsp;</font></td>
     </tr>


    <% Next %>


</table>


</div>
</body>
</html>



Esta matéria foi postada originalmente no ASP4Developers por Ricardo Costa (site), que na época era "Programador Delphi, Java, ASP e PHP de uma produtora de Web Sites (www.icorp.com.br) e estou cursando graduação em Ciências da Computação na UNICAP". Hoje, vai saber...

1

Simples página para administrar SQL Server

<%
Set Conex = Server.CreateObject("ADODB.Connection")


Set Table = Server.CreateObject("ADODB.RecordSet")


If Request.Form("SQL")<>"" Then
SQL = Request.Form("SQL")
Conex.Open "DSN", "LOGIN", "PASSWORD"
Set Table = Conex.Execute(SQL)
End If
' Agora basta usar seus conhecimentos em SQL como ALTER TABLE, CREATE TABLE, CREATE PROCEDURE e etc
'para administrar seu banco SQL Server
%>


<title>Execute -  SQL </title>
<body bgcolor="#FFFFEA" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form name="form" method="post" action="execute.asp">
  <textarea name="SQL" wrap="VIRTUAL" rows="5" cols="100"></textarea>
  <br>
  <br>
  <br>
  <input type="submit" name="Executar" value="  Executar   ">
</form>



Esta matéria foi postada originalmente no ASP4Developers por Ricardo Costa (site), que na época era "Programador Delphi, Java, ASP e PHP de uma produtora de Web Sites (www.icorp.com.br) e estou cursando graduação em Ciências da Computação na UNICAP". Hoje, vai saber...

0

Função para formatação de datas

Esta função é bem simples. Basta colocá-la num arquivo .INC e dar um "include" nas páginas onde você necessitar usá-la. Veja:

<%
Function PrepareDAT(datData, Forma)
    Dim Dia, Mes, Ano, Hora, Minuto
    Session.LCID = 1036
    If Not IsDate(datData) Then
        datData = Now()
    End If
    Dia = "" & Right("00" & Cstr(Day(datData)), 2)
    Mes = "" & Right("00" & Cstr(Month(datData)), 2)
    Ano = "" & Right("0000" & Cstr(Year(datData)), 4)
    Hora = "" & Right("00" & Cstr(Hour(datData)), 2)
    Minuto = "" & Right("00" & Cstr(Minute(datData)), 2)
    If Forma = 1 Then
        PrepareDAT = CStr(Trim(Dia) & "/" & Trim(Mes) & _
                    "/" & Trim(Ano) & " " & Trim(Hora) & _
                     ":" & Trim(Minuto))
    ElseIf Forma = 2 Then
        PrepareDAT = CStr(Trim(Ano) & "/" & Trim(Mes) & _
                     "/" & Trim(Dia) & " " & Trim(Hora) & _
                     ":" & Trim(Minuto))
    End If
End Function
%>

Para usá-la é bem simples, veja:


Algo = PrepareDAT(SuaData, 1)
"Algo" passará a conter uma data no formato "dd/mm/yyyy hh:mm".


Algo = PrepareDAT(SuaData, 2)
"Algo" passará a conter uma data no formato "yyyy/mm/dd hh:mm".



Esta matéria foi postada originalmente no ASP4Developers por Mário César Mancinelli de Araújo, que na época era "Sou o 3D Man®, frequentador dos news da UOL (grupos de ASP e ASP.NET) e da NetSite (grupos de VB, VB Avançado, ASP e Flash)... :^)". Hoje, vai saber...

terça-feira, 13 de março de 2001

0

Importação de dados - dBase e Access

O código abaixo exporta alguns arquivos .DBF do dbase para o Access, usando o nome dos arquivos como nomes de tabelas:


Dim File, Conn, RS
Const ReadOnly = True
BaseDir     = "c:\windows\desktop"
DBFFile     = BaseDir
NewMDBFile  = BaseDir & "\zero.mdb"


Set Conn    = CreateObject("DAO.DBEngine.35").Workspaces(0)
Set DBFConn = Conn.OpenDatabase( DBFFile, True, ReadOnly, "dBase III;")
Set NewMDB  = Conn.CreateDatabase( NewMDBFile, ";LANGID=0x0409;CP=1252;COUNTRY=0" )
set NewMDB  = Conn.OpenDatabase  ( NewMDBFile )


For i = 0 To DBFConn.tabledefs.count - 1
    response.write(   "Merging database " & DBFConn.tabledefs(i).name & ".DBF..." )
    NewMDB.Execute(   "SELECT * INTO ["   & DBFConn.tabledefs(i).name & "] " & _
       " FROM [dBase III;DATABASE=" & BaseDir & ";].[" & DBFConn.tabledefs(i).name & "]" )
    set rs = NewMDB.openRecordset( "SELECT count(*) from " & DBFConn.tabledefs(i).name )
    response.write( "<b>" & rs( 0 ) & " records merged</b><br>" & chr( 13 ) )
    rs.close
next



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...

segunda-feira, 12 de março de 2001

0

Personalize seu UltraEdit

São muitos os desenvolvedores que usam o UltraEdit como editor de texto. Ele é simples, porém poderoso, e conte com diversos recursos que facilitam a vida do programador. Um deles, pouco conhecido é o sintax highlighting, que exibe o código em cores diferentes, o que facilita a visualização do fonte. Compilei uma lista com um passo-a-passo de como usar este recurso.



  • Baixe o UltraEdit 32

  • Acesse http://www.ultraedit.com/downloads/additional.html

  • Selecione o "ASP (VBScript)" do primeiro drop-down

  • Copie todo o conteúdo do arquivo em um chamado "sintaxe.txt", dentro do diretório onde o UltraEdit foi instalado

  • Note que o Arquivo começa com "L10".

  • Para incluir novas definições:


    • Baixe uma nova definição (que tal a nova definição de XSL ?)

    • Altere o "L10" para "L9" e cole o conteúdo no início do "sintaxe.txt"

    • Altere no UltraEdit o arquivo de wordlist. Vá em Advanced, Configuration..., Sintax Hightlighting, "Full path name ..." e selecione o arquivo "sintaxe.txt" criado.

    • Reinicie o UltraEdit e ...

... pronto! Agora os comandos do VBScript no ASP são identificados por cores, tornando a codificação mais agradável.



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, 9 de março de 2001

0

Estrutura de Diretórios para um Projeto

Isto parece besteira para muitos, organização de projetos. Mas com certeza, isto facilita a manutenção do sistema e também facilita a localização de arquivos, isto é muito interessante para quem está começando agora e larga tudo jogado dentro da mesma pasta, leia pois creio que será útil:

 

Nesta dica, não estarei me referindo no projeto que já está na produção, e sim ao projeto que está no ambiente de desenvolvimento.

 

Alguns ítens que eu sugiro que sejam colocados na estrutura de diretórios são:


  • Documentação (Onde será armazenado os contratos, atas, Dicionário de dados, etc. Isso tudo caso você os utilize)

  • Exemplos (Esta pasta pode ser utilizada para que você faça seus testes guarde exemplos, para que voc6e não repita os mesmos passos sempre que for fazer alguma manutenção no seu sistema)

  • Imagens (Diretório onde serão armazenados todas as imagens utilizadas no seu projeto.

  • Web (Diretório que simulará o ambiente de produção, sugiro que você defina como um diretório virtual no IIS)

  • Componentes (Diretório onde os componentes utilizados no seu projeto fiquem armazenados)

  • Misc (Diretório onde você pode colocar todos os arquivos não utilizados, assim como imagens interessantes, componentes para utilizar caso o escolhido não funcione, isso pode te ajudar a não ficar procurando arquivos na internet novamente)

  • Dados (Caso você utilize banco de dados como o Access, você deve colocar a estrutura do seu banco de dados.)

  • Layout (Caso sua você esteja desenvolvendo o design da sua aplicação, e precisa ficar algo bonito, este diretório poderá ser utilizado para armazenar propostas de layout, feitas com qualquer ferramenta, eu utilizo Ilustrator, Photoshop, somente para que você possa ter várias opções caso a primeira não funcione)

 

Para quem está começando a aprender ASP agora, ou já sabe, para treinar um pouco mais, criar uma aplicação, voltada a você mesmo, ou até para vender, uma aplicação que administre seus projetos, onde você cadastra seus projetos, os diretórios que vai utilizar uma descrição e sua aplicação cria tudo e até administra. A partir deste ponto, valerá a determinação que cada um tem para desenvolver uma aplicação.

 

Obrigado.


Esta matéria foi postada originalmente no ASP4Developers por André Guergolet (site), que na época era "Desenvolvedor de aplicativos voltados a WEB à 3 anos. Atualmente trabalha com aplicativos de monitoração de redes utilizando .NET e outros recursos.". Hoje, vai saber...

quinta-feira, 8 de março de 2001

0

Impressões iniciais sobre o ASP.NET

Baixei o .NET há alguns meses, louco para testar. Mas, depois de alguns testes, quando eu iria passar para a parte de desenvolvimento em C#, deparei-me com alguns problemas, que divulgo aqui no grupo:



  • Sistema de Help:
    O help que acompanha o .NET tem muita informação, mas tbém falta muita coisa. É claro que isso será adicionado nos próximos releases, mas faz falta.

  • XML:
    A tecnologia que mais cresce em utilização e que irá ganhar cada vez mais espaço, já possui suporte no ASP.NET, mas é extremamente precário. Não há suporte a diversos recursos (xsl:param, xsl:variable, etc), o que torna inviável a utilização do XSLT.

  • C#:
    Não programava em C há uns 6 anos e a habilidade fez falta. A linguagem é case sensitive (o que IMHO, nao tem muito sentido) tornando difícil a programação em editores de texto puro (UltraEdit, Notepad e afins). Provavelmente será desenvolvido um ambientes de programação com interface orientada a objetos, para facilitar o desenvolvimento. Quem ainda nao conhece nada sobre C#, recomendo visitar o site http://www.csharphelp.com/

  • Debugging:
    Uma ferramenta de depuração interativa faz falta (tipo um Microsoft Script Debugger). Mas as informações fornecidas quando se ativa a depuração de scripts é bastante completa e suficiente para encontrar os eventuais erros.

  • Data Grids:
    Um recurso fascinante. Todos os processo mirabolantes para fazer paginação são coisa do passado, sendo feito agora de uma forma mais clara e simples (má notícia para a PamellaGridClass :)

  • Utilização de memória:
    Ao que parece, o .NET possui alguns memory leaks, pois a memória usada por uma dll do sistema (que me escapa o nome agora) vai aumentado progressivamente. Em ambientes com menos de 128Mb, fica difícil trabalhar, mas acho que a MS pensou nisso: você pode definir a quantidade de memória usada por esta dll (em % da memória disponível) no config.web. Atingindo esse limite, a DLL é reiniciada, liberando espaço significativo.

  • Desenvolvimento de novas aplicações:
    Já vão surgindo algumas aplicações reais feitas para o .NET. Um site ótimo, com shopping cart e afins, com código fonte é o  http://www.ibuyspy.com/. Vale a visita.

  • Migrar ou não migrar ?
    Essa dúvida logo vai surgir na mente dos desenvolvedores. Valem as considerações de sempre: vou obter ganhos ou será apenas uma curiosidade ? IMHO, apenas novas aplicações serão codificadas em ASP.NET e as atuais, que rodam bem sobre o ASP 3.0, continuarão recebendo manutenção corretivas e desenvolvimento de pequenos módulos. A MS deve soltar mais um ou dois betas, antes de anunciar a utilização comercial do .NET, portanto vale a pena ir estudando, mesmo que isso não implique em ganhos imediatos.

  • Onde testar os scripts que monto ?
    Diversos sites já estão oferecendo hosting de sites com o Beta1 do .NET. O mais famoso deles é o www.brinkster.com (antigo eWebCity), mas mais opções podem ser encontradas em http://www.gotdotnet.com/host.aspx

  • Quero mais informações sobre .NET ! Onde procuro ?
    Nós do ASP4Developers estaremos postando novos artigos regularmente, portanto visite-nos regularmente. Enquanto isso, recomendo inscrever-se no news de ASP.NET (news://microsoft.public.dotnet.framework.aspnet) da Microsoft (news.microsoft.com) Outras fontes de pesquisa são:
      - http://msdn.microsoft.com/net/
      - http://www.gotdotnet.com

[]s e bom desenvolvimento!



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, 15 de fevereiro de 2001

0

Pesquisa com acentuação

Muita gente tem perguntado como fazer uma pesquisa de palavras, considerando que os resultados podem (ou não) ter letras acentuadas, então montei a função abaixo que, facilita o processo. Ela se baseia no estudo do operador SQL LIKE, que permite que seja informado um range de caracteres a serem pesquisados em uma única posição.


'Rotina para pesquisa de palavras acentuadas
'Por Rubens Farias (rubens.farias@gmail.com), Fev/2001
'[Preserve a referência ao autor!]
Function FormatLikeSearch( Texto )
 dim n, NovoTexto, valorASC
 NovoTexto = ""
 for n = 1 to len( Texto )
     valorASC = asc( mid( Texto, n, 1 ) )
     select case valorASC
        case  39: NovoTexto = NovoTexto & "''"
        case  65: NovoTexto = NovoTexto & "[ÁÀÂÄÃA]"
        case  67: NovoTexto = NovoTexto & "[ÇC]"
        case  69: NovoTexto = NovoTexto & "[ÉÈÊËE]"
        case  73: NovoTexto = NovoTexto & "[ÍÌÎÏI]"
        case  79: NovoTexto = NovoTexto & "[ÓÒÔÖÕO]"
        case  85: NovoTexto = NovoTexto & "[ÚÙÛÜU]"
        case  97: NovoTexto = NovoTexto & "[áàâäãa]"
        case  99: NovoTexto = NovoTexto & "[çc]"
        case 101: NovoTexto = NovoTexto & "[éèêëe]"
        case 105: NovoTexto = NovoTexto & "[íìîïi]"
        case 111: NovoTexto = NovoTexto & "[óòôöõo]"
        case 117: NovoTexto = NovoTexto & "[úùûüu]"
        case else
           if valorASC > 31 and valorASC < 127 then
              NovoTexto = NovoTexto & chr( valorASC )
           else
              NovoTexto = NovoTexto & "_"
           end if
     end select
 next
 FormatLikeSearch = "'%" & NovoTexto & "%'"
End Function


E use assim:


set rsquery = conn.execute( "select * from tabela where descricao like " & FormatLikeSearch( request.form("TextoPesquisa") ) )


Caso faça alguma alteração significativa na rotina, envie-me um email, para que eu possa incrementar este código.



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, 7 de fevereiro de 2001

0

News FAQ v1.1

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
: News FAQ v1.1
: Última atualização: 08.01.2001 09:10
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

- Para que serve a linha subject (assunto)?
  Para dar uma descrição simples do que está ocorrendo. Subjects sem informações, tipo "help help", "me ajudem!", "só para feras" ou "essa é pra vc, marcão" são ignorados por muitos os freqüentadores. O mesmo é válido para subjects "impositivos", como "quero o código", "urgente", e afins. Também não coloque "Para fulano" no subject, pois o news não é de ninguém e outras pessoas podem ajudá-lo.

- Como certificar-me que uma mensagem será respondida ?
  Use de bom senso. Coloque um subject descritivo e coloque o maior número de informações que você tenha à disposição. Caso seu problema seja com algumas linhas de código, poste algumas linhas antes e outras depois da que ocorre o problema, o suficiente para que entendam o que você está querendo fazer. Tente construir parágrafos curtos e simples, pois isto facilita (e muito!) a leitura. Importante: leia sua mensagem antes de enviá-la, certificando-se que ela está clara e oferece todos os elementos para que a resposta seja fornecida. "Lembre-se: suas atuais e futuros empregadores podem estar lendo suas mensagens, assim como seus pais, filhos, vizinhos que lembrarão de suas 'gafes' por mais tempo.

- Posso enviar uma msg com assunto que não diz respeito ao news ?
  Basicamente, não. Se você está em um news de ASP, vc só espera ver mensagens sobre ASP, e não sobre sorvete de flocos ou folclore Lituano. Caso seja *realmente* necessário, coloque o prefixo "OT" (off-topic) na mensagem. Mas esta prática deve ser evitada ao máximo.

- Como responder uma mensagem ?
  Não inclua toda a mensagem na resposta, mantendo apenas os trechos relevantes a serem comentados. Tente ser claro na resposta, dando elementos que ajudem a esclarecer a questão, ou oferecendo algum link com mais informações. E caso não possa ajudar, também nao atrapalhe.

- Gostaria de receber receitas de bolo dos participantes do news. Basta pedir ?
  Não. Como o tipo do assunto difere do tema central do news, esta mensagem é considerada off-topic, não sendo lida pela maioria dos integrantes do news.

- Fulano me ofendeu e vou postar uma msg respondendo.
  Seria melhor não responder, pois isso possivelmente geraria uma "flame-war" ou "bate-boca". É recomendado que você entre em contato em PVT com o autor e converse com ele. Caso a mensagem tenha cunho difamativo e você nao conseguir entrar em contato, você pode enviar uma mensagem para
mailto:redatornews@uol.com.br?cc=denuncia@uol.com.br, com o código da mensagem completo e as devidas medidas serão tomadas.

- Quero entrar em contato com o cara que respondeu uma msg que eu postei. Posso fazê-lo ?
  Geralmente, quem participa do news checa novas mensagens pelo menos uma vez por dia e não gosta de receber perguntas do news em seu email. Assim, o meio mais rápido de entrar em contato com alguém é pelo próprio news, com os assuntos pertinentes, mesmo por que, sempre há pessoas novas, ou alguém que já tenha tido o mesmo problema que você, podendo ajudar. Assim, só envie mensagens em PVT (privado) caso o autor da postagem tenha instruído-o a fazê-lo.

- Quero saber como <!-- insira a pergunta aqui -->. É só postar no news, certo ?
  Mais ou menos. Muitas das dúvidas que são postadas, já foram respondidas outras vezes, em outros dias. Assim, muito provavelmente sua pergunta já foi respondida antes mesmo de ser postada (isso é que é eficiência!). Caso você use o Microsoft Outlook Express, acesse o menu Ferramentas, Opções..., Manutenção e _desmarque_ as opções de "excluir corpos das mensagens" e "excluir mensagens após n dias" e defina que você quer baixar _todas_ as mensagens (e não apenas as novas). Isso é um processo um pouco demorado, pois ele vai baixar todas as postagens do referido news para seu computador, mas você vai poder contar um uma grande base de dados de pesquisa, tendo seus problemas resolvidos mais rapidamente.

- Onde eu encontro um server que rode minhas páginas ASP ?
  Essa pergunta é uma das mais freqüentes. Sites como
www.aspbrasil.com.br possuem uma lista de servidores gratuitos e pesquisar as mensagens anteriores também é uma grande fonte de recursos.

- Onde eu encontro boas referências sobre ASP ?
  Existem inúmeros sites de ASP na internet. o
www.aspbrasil.com.br é citado mais freqüentemente, por ser nacional, mas ainda existem os www.pt4free.net, www.4guysfromrolla.com, www.asp101.com, msdn.microsoft.com e www.aspfaq.com. Este último é especialmente interessante, pois é baseado nas postagens recebidas no news de ASP da Microsoft e reúne as respostas às perguntas mais frequentemente feitas. São bons começos e estes sites contém listas de outros sites de ASP, onde você pode continuar aprendendo.

- O componente <!-- insira o nome aqui --> não está funcionando ou onde pego este componente ?
  O local mais simples de conseguir estas informações é no site das empresas fornecedoras. Geralmente são intuitivos (o ASPGrid, por exemplo, fica no site
www.aspgrid.com). Rode uma pesquisa na search engine que você prefere (recomendo www.altavista.com) e beba direto da fonte.

- Uhu! Brigado pelas dicas, mas resolvi o problema de outro jeito.
  Por que não posta no news ? Outras pessoas podem ter a mesma dúvida e isso realimenta a base de conhecimentos disponível. Não hesite em fazê-lo.

- Visitem meu site:
www.minhaURL.com.br ou "votem em mim"
  Por que visitaríamos ? Apenas para aumentar seus hits ? Se for para comentar sobre o layout, há um news específico para isso (webdesign). Agora, se você possuir uma base de conhecimentos sobre ASP e deseja compartilhá-la, fique a vontade.

- Onde eu pego o crack para o programa <!-- insira o nome do aplicativo aqui --> ?
  Este não é lugar onde você vá conseguir informações deste tipo. Pesquise em sites sobre hacking ou em search engines, sabendo que você está infringindo a lei.

- Interessante este FAQ. Onde posso pegar mais info ?
  Recomendo
www.faqs.org


Aproveite do espaço do news com sabedoria.

[]s

Participantes do
news://uol.mundodigital.linguagens.asp


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, 24 de janeiro de 2001

0

Executando stored procedures / consultas parametri

Conforme vamos nos aperfeiçoando na "Arte de programar computadores", começamos a integrar diversas soluções em uma mesma aplicação. Imagine que você tenha uma consulta no Access que recebe um parâmetro para fazer uma consulta a uma tabela. Ela funciona legal e você não quer copiar o código SQL inteiro para seu script ASP. O que fazer ?


A solução vêm com o nome de object Command. Este objeto permite executar stored procedures e consultas parametrizadas no banco de dados. Segue um exemplo prático: Suponhamos que você tem uma consulta no Access ("MinhaConsulta"), que recebe o código do cliente ("CódigoCliente", númerico inteiro) e faz uma série de relacionamentos entre tabelas. Para este exemplo funcionar, é necessário que vc inclua o arquivo ADOVBS.INC no fonte com a diretiva #include.


<!-- #include file="adovbs.inc" -->
... início do script, contendo a conexão com o banco de dados ...
set oCmd = Server.CreateObject("ADODB.Command")
oCmd .ActiveConnection = conn         ' Aqui entra a referência ao objeto Connection
oCmd.CommandType = adCmdStoredProc    ' Consultas parametrizadas são interpretadas como SPs
oCmd.CommandText = "MinhaConsulta"    ' Aqui vai o nome da consulta
oCmd.Parameters.Append oCmd.CreateParameter("CódigoCliente", adInteger,,, Request.Form( "CodCliente" ) )


set rsquery = oCmd.Execute


... segue rotina para exibir os dados coletados ...



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...

0

Usuários podem ter acesso ao seu código ASP!

Outra falha de segurança foi encontrada. Esta permite que os usuários visualizem o seu código ASP através da seguinte URL:

 http://www.yoursite.com/null.htw?CiWebHitsFile=/yourfile.asp%20&CiRestriction=none&CiHiliteType=Full


    A microsoft divulgou um patch que aparentemente resolve o problema (link abaixo).

    http://www.microsoft.com/technet/security/bulletin/ms00-006.asp



    Esta matéria foi postada originalmente no ASP4Developers por Julio Carvalho, que na época era "Webdeveloper, Programador ASP e DBA MS-SQL. ". Hoje, vai saber...

    0

    auxarrays.asp

    O código abaixo complementa o calendário estruturado:


    <%
    Dim weekdays, months, monthdays, fDay, lDay
    'weekdays = Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab")
    weekdays = Array("D", "S", "T", "Q", "Q", "S", "S")
    weekdbig = Array("Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado")
    months = Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
    monthDays = Array(31,28,31,30,31,30,31,31,30,31,30,31)



    function diasemana(data)
     diasemana = weekdbig(WeekDay(data)-1)
    end function


    function WriteMonth(data)
     WriteMonth = months(month(data)-1)
    end function


    sub dbug(vari)
     Response.Write "<script>alert('Valor: "&vari&"')</script>"
    end sub
    %>



    Esta matéria foi postada originalmente no ASP4Developers por João Márcio Gonçalves Prado, que na época era "Webmaster Santanense Tecidos.
    Diversos programas e sistemas ASP feitos para todo o tipo de empresas em MG.
    ". Hoje, vai saber...

    0

    Calendário ASP - Estruturado.

    O código abaixo implementa um calendário que pode ser customizado para chamar um link, frame ou JavaScript.


    Escrito em programação estruturada ele não é dos mais fáceis de se entender, atualmente estou trabalhando em uma versão orientada a objetos do mesmo.


    Peguem também o código do auxarrays.asp que complementa o código do calendário.


    Aguardo sugestões e críticas (elogios também porque não).


    []s


    PEST


     


    <%@ Language="VBScript" %>
    <!-- #include file="auxArrays.asp" -->
    <%
    fDay = 1


    function nWeeks(Mes, Ano)
     Dim nSemanas
     startdate = DateSerial(Ano, Mes, fDay)
     if WeekDay(startdate) = 1 then
      nsemanas = 0
     else
      nsemanas = 1
     end if
     ndiasmes = monthDays(Mes-1)
     
     for i = 1 to nDiasmes
      if WeekDay(startdate) = 1 then
       nsemanas = nsemanas + 1
      end if
      startdate = DateAdd("d", 1, startdate)
     next
     nWeeks = nsemanas
    end function


    sub setBissexto
     Data = Request("Data")
     if Trim(data) = "" then
      Data = Date()
     else
      Data = CDate(Data)
     end if
     Ano = Year(Data) 
     if (ano mod 4 = 0) or (ano mod 100 = 0) and (ano mod 400 = 0) then
      monthDays(1)=29
     else
      monthDays(1)=28 'Teste ano bissexto
     end if
    end sub
    setBissexto


    sub WriteCalendar
     Data = Request("Data")
     if Trim(data) = "" then
      Data = Date()
     else
      Data = CDate(Data)
     end if
     Ano = Year(Data)
     Mes = Month(Data)
     startday = WeekDay(DateSerial(ano, mes, fday))
     startdate = DateSerial(ano, mes, fday)


     '#Início Tabela
     Response.Write "<table border cellpading=0 cellspacing=0><tr>"&VBCrLf
     
     '#Descer mês
     Response.Write "<th width=25>"&VBCrLf
     Response.Write "<center><input type='button' value=' << ' onclick='javascript:document.location.href=""calend.asp?data="&DateAdd("m", -1, startdate)&"""'>"&VBCrLf
     Response.Write "</center></th>"&VBCrLf
     
     '#Escreve mês ano
     Response.Write "<th colspan=5 class=cal align=center nowrap width=120>"&WriteMonth(startdate)&" - "&Year(startdate)&"</th>"&VBCrLf
     
     '#Subir mês
     Response.Write "<th width=25>"&VBCrLf
     Response.Write "<center><input type='button' value=' >> ' onclick='javascript:document.location.href=""calend.asp?data="&DateAdd("m", 1, startdate)&"""'>"&VBCrLf
     Response.Write "</center></th></tr>"&VBCrLf


     '#Escreve cabeçalho dias da semana
     Response.Write "<tr>"
     for j = 0 to 6
      if j=0 then
       Response.Write "<td class=cal align=center><div class=dom>"&weekdays(j)&"</div></td>"&VBCrLf
      else
       Response.Write "<td class=cal align=center>"&weekdays(j)&"</td>"&VBCrLf
      end if
     next
     Response.Write "</tr>"


     '#Escreve tábua de dias
     for i = 0 to (nWeeks(Month(startdate), Year(startdate)) -1)
      Response.Write "<tr>"&VBCrLf
      for j = 0 to 6
       if (startday-1) > j and i = 0 then
        if j=0 and i=0 then
         Response.Write "<td class=cal><div class=dom>&nbsp;</div></td>"&VBCrLf
        else
         Response.Write "<td class=cal>&nbsp;</td>"&VBCrLf
        end if
       else
        if Month(startdate) > Mes or Year(startdate) > Ano then
         Response.Write "<td class=cal>&nbsp;</td>"&VBCrLf
        else
         if weekDay(startdate) = 1 then
          Response.Write "<td class=cal align=center><div class=dom>"&Day(startdate)&"</div></td>"&VBCrLf
         else
          if startdate = Date() then
           Response.Write "<td align=center><div class=hoje><a href='javascript:updDiary("""&startDate&""")' style='Color: White;'>"&Day(startdate)&"</a></div></td>"&VBCrLf
          else
           Response.Write "<td class=cal id="&Day(startdate)&" align=center><a href='javascript:updDiary("""&startDate&"""); fixClickedDay("""&Day(startdate)&""")'>"&Day(startdate)&"</a></td>"&VBCrLf
          end if
         end if
        end if
        startdate = DateAdd("d", startdate, 1)
       end if
      next
      Response.Write "</tr>"&VBCrLf
     next


     '#Fim tabela
     Response.Write "</table>"&VBCrLf
    end sub


    %>
    <html>
    <head>
    <script language="JavaScript">
    <!--
    function updDiary(data){
     alert(data)
    }


    function fixClickedDay(dia){
     return
    }
    -->
    </script>



    <style>
    th.cal
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
     Background : Blue;
     Color : White;
    }


    td.cal
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
    }


    .hoje
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
     Background : Teal;
     Color: White;
    }


    a
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
     Text-Decoration: None;
     Color: "Black";
    }


    a:hover
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
     Text-Decoration: None;
     Color: "Red";
    }


    .dom
    {
     Font-Family: Verdana;
     Font-Size: 8 pt;
     Text-Decoration: None;
     Color: White;
     Background : Blue;
     
    }
    p
    {
     Font-Family: Verdana;
     Font-Size: 10 pt;
    }


    td
    {
     Font-Family: Verdana;
     Font-Size: 10 pt;
    }
    </style>


    <title>&lt;--    Santanense.Net    --&gt;</title></head>
    <body bgcolor="#FFFFFF">
    <p><img src="../imgs/santanense.net.gif" width="544" height="89"></p>
    <p>
      <% writeCalendar %>
    </p>
    </body>
    </html>



    Esta matéria foi postada originalmente no ASP4Developers por João Márcio Gonçalves Prado, que na época era "Webmaster Santanense Tecidos.
    Diversos programas e sistemas ASP feitos para todo o tipo de empresas em MG.
    ". Hoje, vai saber...

    0

    Beat - o horário mundial da Internet!







    Beat - o horário mundial da Internet


    Os encontros on-line são cada vez mais comuns na Internet. É possível conversar, trabalhar e estudar com pessoas de outros países e continentes. Mas o problema do fuso horário tem causado muitos desencontros! Como marcar uma sessão on-line com pessoas que vivem a noite quando apenas acabamos de levantar pela manhã?
    Pensando nisso foi criado a hora internacional da Internet.

    Com a ampliação do número de usuários da Internet e das formas de utilização de tecnologias para se comunicar on-line (chats, video-conferências etc.), criou-se um problema: como marcar uma hora para realizar estas sessões on-line?
    Com a diferença de fusos horários entre países, esta pode ser uma tarefa complicada; que horas são agora em Roma? E em Bombain?

    Pensando nisto, a Swatch (fabricante de relógios) decidiu criar um novo sistema de contagem de tempo para a utilização na Internet; e quem sabe, se a moda "pegar", também no mundo real!
    Os caras até criaram um novo meridiano (BMT ) em Biel na Suíça, que foi inaugurado em 23 de outubro de 1998 e é a referência universal para o horário da Internet! .

    A intenção é criar uma representação do tempo que seja comum a todos, ou seja, tenha o mesmo valor em qualquer país do mundo; surgiu então o Beat.

    Os caras criaram o Beat dividindo o número de segundos existentes em um dia (86.400 segundos) por mil. Então, um dia tem 1000 Beats, cada um correspondendo a 86,4 segundos (1 minuto e 26,4 segundos).

    O símbolo do Beat é @, e o Beat @000 corresponde à zero hora no horário tradicional na cidade de Biel (Suíça), onde está sediada a Swatch.

    Sendo assim, não importa o país no qual o internauta está, o horário em Beat é sempre o mesmo para todos. Por exemplo:



















    País horário tradicional Beat
    Suíça (Biel) 00:00h @000
    Brasil (Brasília) 20:00h @000
    Tokio 08:00h @000

    Para fazer a conversão do horário tradicional para o Beat é necessário saber a diferença de fuso horário entre a cidade em que se está e a cidade de Biel (levando em conta o eventual horário de verão); no caso de Brasília a diferença sem horário de verão é de 4 horas (menos 1 hora no caso de estarmos no horário de verão).


    A diferença em horas entre as duas cidades é convertida em segundos e o resultado é dividido por 86,4 segundos. Como resultado temos o Beat. Por exemplo:

    Supondo que agora em Brasília sejam 14:36:00h (horário de inverno), então:


    Beat=((14 * 3600) + (36 * 60) + (4 * 3600)) / 86.4


    Beat=@775



    Bem ficamos por aqui. Para o cálculo do Beat ou utilize nosso conversor on-line para saber o Beat em sua cidade.

    Boa programação!




  • Ronaldo é desenvolvedor ASP e analista de sistemas; desenvolve soluções para Internet e é autor de vários artigos sobre a linguagem ASP em sites do Brasil e do exterior.




  • Esta matéria foi postada originalmente no ASP4Developers por Ronaldo Reis, que na época era "Desenvolvedor ASP.NET e analista de sistemas; desenvolve soluções para Internet e é autor de vários artigos em sites do Brasil e do exterior.". Hoje, vai saber...

    0

    Contador fácil em TXT

    Uma questão muito importante, e algumas vezes trabalhosa, é a de determinar quantas visitas recebeu cada página de um determinado
    site. Em geral, a solução para que as coisas realmente funcionem do modo como queremos envolve banco de dados, consultas, e muito código . Por isso, resolvi contribuir com um código que possiblite o contagem de acessos não de apenas uma, mas de todas as páginas de um
    site; e o que é melhor, sem banco de dados!

    <%
    ' declarando as variáveis
    Dim x, FSObject, letot, escrevetot, numacesso, acessos(), nomepag(), apagina


    'Recupera o nome da página atual
    apagina = Request.ServerVariables("URL")


    ' Agora vamos ler o nosso arquivo que armazena as contagens e procurar o nome da página atual
    Set FSObject = CreateObject("Scripting.FileSystemObject")


    nomearquivo=server.mappath("totais.txt")


    Set letot = FSObject.OpenTextFile(nomearquivo,1,1)


    ' Observe que o número 1 em vermelho indica que o arquivo totais.txt será criado caso ainda não exista!


    ' O arquivo é lido, linha a linha, o nome da página atual é procurado, e os valores já lidos são armazenados em duas variáveis: nomepag e numacesso


    'Aqui, zeramos o indexador de nossa lista
    x=0


    'Esta variável vai nos indicar se a página já foi visitada alguma vez
    cabaco=0


    'Fazemos um Loop até a última linha do arquivo
    While Not letot.AtEndOfStream


    ReDim preserve nomepag(x)


    ' Incluímos o nome da primeira página registrado na lista nomepag
    nomepag(x) = letot.ReadLine


    ' Comparamos para saber se o nome da página já registrada é o mesmo do nome da página atual
    If nomepag(x) = apagina Then


    ReDim preserve acessos(x)


    ' Se for a mesma página, adicionamos 1 ao número de visitas registradas, e incluímos o valor na lista numacesso
    acessos(x) = letot.ReadLine + 1


    ' guardamos o número total de acessos dessa página na variável contagem
    contagem = acessos(x)


    ' Aumentamos em 1 o indexador de nossa lista
    x = x + 1


    'Aqui, como a página já foi visitada, à variável cabaco é atribuida o valor 1
    cabaco=1


    ' Caso o nome da página atual não se encontre registrado
    Else


    ReDim preserve acessos(x)


    ' Carregamos os valores em nossa lista sem nenhum acréscimo
    acessos(x) = letot.ReadLine


    ' Aumentamos em 1 o indexador de nossa lista
    x = x + 1


    End If


    ' Volta ao início e parte para uma nova linha de nosso arquivo
    Wend


    ' Fechamos o objeto
    letot.Close


    Set letot = Nothing


    ' Agora vamos "despejar" os valores de nossa lista em um novo arquivo totais.txt
    Set escrevetot = FSObject.CreateTextFile(nomearquivo)


    'Zeramos o indexador de nossa lista
    x = 0


    ' Fazemos um looping por nossa lista
    For Each numacesso In nomepag


    'Escrevemos o nome da página (nomepag) no arquivo de texto
    escrevetot.WriteLine nomepag(x)


    ' Na próxima linha vai o total de acessos dessa página
    escrevetot.WriteLine acessos(x)


    ' Aumentamos em 1 o indexador de nossa lista
    x = x + 1


    Next


    ' Se a página nã foi visitada nenhuma vez...
    if cabaco=0 then


    ' Escrevemos o nome da página no final do arquivo texto
    contador=1


    contagem=1


    escrevetot.WriteLine apagina


    ' Na próxima linha, atribuímos 1 ao valor de visitas feitas a esta página
    escrevetot.WriteLine contador


    end if


    ' Fechamos o objeto
    escrevetot.Close


    Set escrevetot = Nothing


    Set FSObject = Nothing


    ' Aqui, um pequeno código opcional, caso você queira exibir o número de visitas em sua página
    Response.Write "até o momento, a página "& apagina &" recebeu "& contagem & " visitantes"
    %>


    É isto!


    Um contador simples e eficiente, uma solução perfeita para um sistema de contagem sem muito trabalho.
    Tudo o que você tem que fazer agora é incluir este código em todas as páginas de seu
    site, utilizando:


    <!-- #include file="contador-facil.asp" -->


    Espero que esse código seja útil para todos.
    Boa programação!




    Esta matéria foi postada originalmente no ASP4Developers por Ronaldo Reis, que na época era "Desenvolvedor ASP.NET e analista de sistemas; desenvolve soluções para Internet e é autor de vários artigos em sites do Brasil e do exterior.". Hoje, vai saber...

    terça-feira, 16 de janeiro de 2001

    0

    Conversão Hexadecimal -> Decimal

    Uma função que faz a conversão de bases hexadecimal para decimal:


    Function Hex2Dec( hexadecimal )
    dim n, aux, valores, decimal, fator
    valores = "0123456789ABCDEF"
    n = 1: decimal = 0
    for n = len( hexadecimal ) to 1 step -1
        fator   = 16 ^ ( len( hexadecimal ) - n )
        aux     = InStr( valores, mid( hexadecimal, n, 1 ) ) - 1
        decimal = decimal + ( aux * fator )
    next
    Hex2Dec = decimal
    End Function



    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, 5 de janeiro de 2001

    0

    Impressão em JS

    Postado no news://uol.mundodigital.linguagens.javascript por Zuvirandu


    <SCRIPT LANGUAGE="JavaScript">
    <!--


    var da = (document.all) ? 1 : 0;
    var pr = (window.print) ? 1 : 0;
    var mac = (navigator.userAgent.indexOf("Mac") != -1);


    function printPage(frame, arg) {
      if (frame == window) {
        printThis();
      } else {
        link = arg;
        printFrame(frame);
      }
      return false;
    }


    function printThis() {
      if (pr) { // NS4, IE5
        window.print();
      } else if (da && !mac) { // IE4 (Windows)
        vbPrintPage();
      } else { // other browsers
        alert("Descupe, mas o seu browser n&atilde;o suporta essa
    fun&ccedil;&atilde;o");
      }
    }


    function printFrame(frame) {
      if (pr && da) { // IE5
        frame.focus();
        window.print();
        link.focus();
      } else if (pr) { // NS4
        frame.print();
      } else if (da && !mac) { // IE4 (Windows)
        frame.focus();
        setTimeout("vbPrintPage(); link.focus();", 100);
      } else { // other browsers
        alert("Descupe, mas o seu browser n&atilde;o suporta essa
    fun&ccedil;&atilde;o");
      }
    }


    if (da && !pr && !mac) with (document) {
      writeln('<OBJECT ID="WB" WIDTH="0" HEIGHT="0"
    CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>');
      writeln('<' + 'SCRIPT LANGUAGE="VBScript">');
      writeln('Sub window_onunload');
      writeln('  On Error Resume Next');
      writeln('  Set WB = nothing');
      writeln('End Sub');
      writeln('Sub vbPrintPage');
      writeln('  OLECMDID_PRINT = 6');
      writeln('  OLECMDEXECOPT_DONTPROMPTUSER = 2');
      writeln('  OLECMDEXECOPT_PROMPTUSER = 1');
      writeln('  On Error Resume Next');
      writeln('  WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER');
      writeln('End Sub');
      writeln('<' + '/SCRIPT>');
    }


    // -->
    </SCRIPT>



    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, 3 de janeiro de 2001

    1

    Validação CGC/CPF

    Retirado do news://uol.mundodigital.linguagens.javascript


    <html>
    <body>

     <SCRIPT language="javascript">
     function cgc(pcgc)
     {
           // verifica o tamanho
     if (pcgc.length != 14) {
      sim=false
      alert ("Tamanho Invalido de CGC")
      }
     else {sim=true}

      if (sim )  // verifica se e numero
      {
      for (i=0;((i<=(pcgc.length-1))&& sim); i++)
      {
       val = pcgc.charAt(i)
           // alert (val)
       if
    ((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&
    (val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {sim=false}
       }
       if (sim)  // se for numero continua
       {
        m2 = 2
        soma1 = 0
        soma2 = 0
        for (i=11;i>=0;i--)
        {
         val = eval(pcgc.charAt(i))
           // alert ("Valor do Val: "+val)
         m1 = m2
      if (m2<9) { m2 = m2+1}
      else {m2 = 2}
      soma1 = soma1 + (val * m1)
      soma2 = soma2 + (val * m2)
        }  // fim do for de soma

      soma1 = soma1 % 11
      if (soma1 < 2) {  d1 = 0}
       else { d1 = 11- soma1}

         soma2 = (soma2 + (2 * d1)) % 11
      if (soma2 < 2) { d2 = 0}
       else { d2 = 11- soma2}
            // alert (d1)
           // alert (d2)
        if ((d1==pcgc.charAt(12)) && (d2==pcgc.charAt(13)))
       { alert("Valor Valido de CCG") }
       else alert("Valor invalido de CCG")
       }
     }

     }
    </script>

    <SCRIPT language="javascript">
     function cpf(pcpf)
     {

     if (pcpf.length != 11) {sim=false}
     else {sim=true}

      if (sim )  // valida o primeiro digito
      {
      for (i=0;((i<=(pcpf.length-1))&& sim); i++)
      {
       val = pcpf.charAt(i)
       if

     ((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4")

     &&    (val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {sim=false}
       }

       if (sim)
      {
        soma = 0
        for (i=0;i<=8;i++)
        {
         val = eval(pcpf.charAt(i))
         soma = soma + (val*(i+1))
        }

        resto = soma % 11
        if (resto>9) dig = resto -10
        else  dig = resto
        if (dig != eval(pcpf.charAt(9))) { sim=false }
       else   // valida o segundo digito
        {

         soma = 0
        for (i=0;i<=7;i++)
         {
         val = eval(pcpf.charAt(i+1))
          soma = soma + (val*(i+1))
        }

         soma = soma + (dig * 9)
        resto = soma % 11
         if (resto>9) dig = resto -10
         else  dig = resto
       if (dig != eval(pcpf.charAt(10))) { sim = false }
        else sim = true
       }
       }
      }

      if (sim) { alert("Valor Valido de CPF") }
      else
        alert("Valor invalido de CPF")
     }
    </script>


    <form>
    <b>Teste de CPF:</b>
    <input type=Text name=xcpf onchange="cpf(this.form.xcpf.value);">
    </form>
    <br>
    <form>
    <b>Teste de CGC:</b>
    <input type=Text name=xcgc onchange="cgc(this.form.xcgc.value);">
    </form>

    </body>

    </html>



    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...

    0

    Como criar classes

    Acredito que vc conheça o conceito de classes. Como minha formação em processamento de dados data alguns anos, não saberia explicar "didaticamente", mas segue uma explanação mais "simplista".

     

    Podemos definir classes como um objeto, com seus próprios métodos (funções que atuam sobre este objeto) e propriedades (variáveis do objeto). Assim, o comando MyClass.Build() chama o método Build do objeto MyClass e MyClass.Titulo = "xyz" define o valor da propriedade Titulo do mesmo objeto. Pra quem acha isso complicado, vale o lembrete que, quando criamos um objeto ADODB.Connection, facilmente trabalhamos com suas propriedades (CursorType, Provider, etc) e métodos (Execute(), Open(), etc).

     

    Classes podem ser criadas facilmente no VBScript, mediante a utilização de alguns comandos não comumente usados. O uso de classes pode ser útil pela reutilização do mesmo código em diversas partes da aplicação e pela facilidade de atribuir seus valores. Pense no exemplo de paginação: qtas páginas de seu site usam o recurso de paginação, com a alteração de apenas uma ou duas características ? Pense qto código pode ser economizado com a utilização de apenas um código genérico. E lembre-se que o ASP é interpretado; ou seja: qto menos código, mais rápido a aplicação roda.

     

    O primeiro dos comandos necessários é o Class, que define o nome da Classe. Não tem muito o que dizer, exceto que ele deve ser terminado com End Class, que vai depois de todo o código da Classe, englobando-a.

     

    Após definir o nome da classe, vc precisa definir as propriedades. Vc pode simplesmente colocar Public Propriedade e então esta variável pode ser acessada externamente à ela. Caso coloque Private MyVar, esta variável terá escopo apenas dentro da classe. Muita gente usa o Propriety, que permite executar uma sequencia de comandos quando o valor da propriedade for atribuido, permitindo consistir os dados entrados.

     

    Após a definição das propriedades, podemos definir os métodos. Assim, o comando Public Default Sub NomeMetodo define o método padrão para a Classe. Vc tbém pode definir o escopo para Private, fazendo com que a sub/function seja acessível apenas internamente à classe.

     

    Pode parecer complicado, mas, com isso, vc já pode criar uma classe, como no exemplo abaixo:

     

    <%
    Class HelloWorld

     

    Private Texto_a_ser_mostrado

     

    Public Property Let Texto ( cString ) 'Isso declara a *variavel* pública "Texto"
    Texto_a_ser_mostrado = iif( len( cString & "" ) = 0, "Hello world!", cString )
    End Property

     

    Private Function iif( condicao, valor1, valor2 )
      if condicao then iif = valor1 else iif = valor2
    End Function

     

    Private Sub ChecarSeTudoOk()
        if len( Texto_a_ser_mostrado & "" ) = 0 then Texto = ""
    End Sub

     

    Public Default Sub ShowMessage
        ChecarSeTudoOk()
        response.write Texto_a_ser_mostrado
    End Sub

     

    End Class

     

    Dim oHelloWorld
    Set oHelloWorld = New HelloWorld
    With oHelloWorld
         '.Texto = "Hi there!"
         .ShowMessage()
    End With


    %>

     

    Vc pode pegar o trecho do Class (as linhas entre o "Class HelloWorld" e o "End Class", inclusive) e colocar em um arquivo chamado HelloWorldClass.asp e incluí-lo no seu script, com <!-- #include file="HelloWorldClass.asp" -->

     

    Com certeza este tutorial nao esgota o assunto. Mais info sobre Classes podem ser encontradas em www.4guysfromrolla.com

     

    Divirtam-se!


    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...