quinta-feira, 11 de outubro de 2007

Criando combos HTML através de uma classe ASP

Olá amigos internautas.

Hoje eu presentear os amantes do bom e velho ASP 3.0 com uma classe que cria combos em html com o resultado de uma query no banco de dados.
Neste exemplo eu estou usando o SQL Server como banco de dados, porém, basta você adaptar a ConnectionString para a base de sua preferência. Em connectionstrings.com você encontra diversos exemplos de connectionString.
O objeto utilizado para conectar ao banco de dados é o ADODB.
Vantagem: código estruturado (limpo de sujeiras) e de fácil manutenção.
Então, mãos a obra. Abaixo encontra-se o código da classe que eu chamei de WMCombo.asp:


<%
'===================================================================================================================================
' Autor: Wesley de Menezes Flor
' Descrição: Criar combos (tag SELECT do HTML) a partir de uma query no Banco de Dados.
' Contato: http://wmenezes.blogspot.com/
'===================================================================================================================================
' CREDITOS
Response.AddHeader "keywords", "Este site utiliza a classe WMCombo para geração de combos. http://wmenezes.blogspot.com/"
'===================================================================================================================================

Class WMCombo
' PROPRIEDADES DO SELECT
Private oAttributes

' OPTIONS
Private sOptionText
Private sOptionValue
Private sOptionDefault

' BANCO DE DADOS
Private rsTable
Private sQuery
Private sConnString

' AO INICIAR A CLASSE
Private Sub Class_Initialize()
Set rsTable = Server.CreateObject("ADODB.RecordSet")
Set oAttributes = Server.CreateObject("Scripting.Dictionary")
sOptionDefault = 0
End Sub

' PROPRIEDADES DA CLASSE
Public Property Let setAttribute( attributeName, attributeValue )
oAttributes.Add attributeName, attributeValue
End Property

Public Property Let OptionTextField( optionTextFieldValue )
sOptionText = optionTextFieldValue
End Property

Public Property Let OptionValueField( optionValueFieldValue )
sOptionValue = optionValueFieldValue
End Property

Public Property Let OptionDefaultValue( optionDefault )
sOptionDefault = optionDefault
End Property

Public Property Let Query( queryValue )
sQuery = queryValue
End Property

Public Property Let ConnectionString( connStringValue )
sConnString = connStringValue
End Property

' FUNÇÃO QUE CRIA A COMBO
Public Function Create( selectName )

' TAG SELECT
Response.Write "<select name="""& selectName &""" id="""& selectName &""""

' PROPRIEDADES DA TAG SELECT
Dim sKey
For Each sKey In oAttributes
Response.Write Space(1) & sKey & "="""& oAttributes(sKey) &""""
Next
Response.Write ">" & vbCrLf

' PRIMEIRA OPTION
Response.Write Space(2) & "<option value=""0"""
If sOptionDefault = 0 Then Response.Write " selected=""selected"""
Response.Write ">-- Selecione --</option>" & vbCrLf

' ABRE A TABELA NO BANCO DE DADOS
Const adUseServer = 2
Const adUseClient = 3

Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

Const adLockReadOnly = 1

rsTable.CursorLocation = adUseClient
rsTable.CursorType = adOpenForwardOnly
rsTable.LockType = adLockReadOnly
rsTable.Open sQuery, sConnString

' CRIA AS OPTIONS COM AS INFORMAÇÕES DO BANCO
While Not rsTable.EOF
Response.Write Space(2) & "<option value="""& rsTable.Fields(sOptionValue) & """"

If sOptionDefault = rsTable.Fields(sOptionValue) Then Response.Write " selected=""selected"""
Response.Write ">"
Response.Write Server.HTMLEncode( rsTable.Fields(sOptionText) )
Response.Write "</option>" & vbCrLf
rsTable.MoveNext
Wend
rsTable.Close

' FINALIZA A COMBO
Response.Write "</select>" & vbCrLf

' DESTRÓI OBJETOS
Set rsTable = Nothing
Set oAttributes = Nothing
End Function
End Class
%>

Exemplo de utilização da classe:

<!--#include virtual="/includes/class/WMCombo.asp"-->
<%
Set cb = New WMCombo
cb.OptionTextField = "Descricao"
cb.OptionValueField = "Codigo"
cb.OptionDefaultValue = 20
cb.Query = "SELECT Codigo, Descricao FROM Tabela"
cb.ConnectionString = "cole_aqui_a_string_de_conexão_do_seu_banco_de_dados"
cb.setAttribute("class") = "cssCombo"
cb.Create "cbTeste"
Set cb = Nothing
%>

Pronto, agora basta acessar sua página de exemplo, e você terá uma combo preenchida com os dados de uma query no banco de dados.

Agora só falta você opnar. Envie um comentário sobre este post.

Aquele abraço e até +.

Um comentário:

Anônimo disse...

Ae.... valeu pelo código....

muito bom mesmo, vai facilitar pra caramba.