Ver Mensaje Individual
  #9 (permalink)  
Antiguo 24/09/2008, 14:17
Avatar de JuanRAPerez
JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 5 meses
Puntos: 27
De acuerdo Respuesta: Crear una DLL ActiveX partiendo de mi codigo ASP

Continuo

LEctura a una base de datos desde mi DLL
+ Bueno para el ejemplo usaremos SQL 2005
+ Creamos una base llamada “mibase”
+ Dentro de ella una tabla llamada “nombres_comunes”

Código asp:
Ver original
  1. USE [mibase]
  2. GO
  3. /****** Object:  Table [dbo].[nombres_comunes]    Script Date: 09/17/2008 19:36:28 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. SET ANSI_PADDING ON
  9. GO
  10.  
  11. CREATE TABLE [dbo].[nombres_comunes](
  12.       [id] [int] IDENTITY(1,1) NOT NULL,
  13.       [nombre] [varchar](50) COLLATE Modern_Spanish_CI_AI NULL,
  14.       [veces] [numeric](18, 0) NULL,
  15.       [genero] [varchar](1) COLLATE Modern_Spanish_CI_AI NULL
  16. ) ON [PRIMARY]
  17.  
  18. GO
  19. SET ANSI_PADDING OFF

+ Luego insertamos algunos registros para tener valores en la tabla (nota insertare solo algunos registros pero prometo entregar un listo mas completo de datos)

Insertar registros: nombres_comunes
Código asp:
Ver original
  1. insert into nombres_comunes values ('ALEJANDRO', 252,'M')
  2. insert into nombres_comunes values ('DANIEL', 244,'M')
  3. insert into nombres_comunes values ('ADRIAN', 198,'M')
  4. insert into nombres_comunes values ('PABLO', 177,'M')
  5. insert into nombres_comunes values ('JAVIER', 157,'M')
  6. insert into nombres_comunes values ('DAVID', 152,'M')
  7. insert into nombres_comunes values ('GABRIEL', 150,'M')
  8. insert into nombres_comunes values ('ALVARO', 137,'M')
  9. insert into nombres_comunes values ('JORGE', 128,'M')
  10. insert into nombres_comunes values ('DIEGO', 126,'M')
  11. insert into nombres_comunes values ('SERGIO', 110,'M')
  12. insert into nombres_comunes values ('CARLOS', 101,'M')
  13. insert into nombres_comunes values ('SAMUEL', 96,'M')
  14. insert into nombres_comunes values ('RAUL', 87,'M')
  15. insert into nombres_comunes values ('HUGO', 86,'M')
  16. insert into nombres_comunes values ('MIGUEL', 76,'M')
  17. insert into nombres_comunes values ('LUCIA', 228,'F')
  18. insert into nombres_comunes values ('PAULA', 221,'F')
  19. insert into nombres_comunes values ('DANIELA', 179,'F')
  20. insert into nombres_comunes values ('LAURA', 161,'F')
  21. insert into nombres_comunes values ('MARIA', 152,'F')
  22. insert into nombres_comunes values ('CARLA', 142,'F')
  23. insert into nombres_comunes values ('ANDREA', 139,'F')
  24. insert into nombres_comunes values ('CLAUDIA', 137,'F')
  25. insert into nombres_comunes values ('ALBA', 116,'F')
  26. insert into nombres_comunes values ('MARTA', 104,'F')
  27. insert into nombres_comunes values ('SARA', 101,'F')
  28. insert into nombres_comunes values ('NEREA', 91,'F')
  29. insert into nombres_comunes values ('ADRIANA', 81,'F')
  30. insert into nombres_comunes values ('ELENA', 74,'F')
  31. insert into nombres_comunes values ('ALEJANDRA', 67,'F')
  32. insert into nombres_comunes values ('CRISTINA', 63,'F')


Código para la lectura de la base de datos
Código asp:
Ver original
  1. Public Sub CrearTabla(strServer As  String, strDB As  String)
  2. On Error GoTo errores
  3.     Dim objctx As ObjectContext
  4.     Dim Resp As ASPTypeLibrary.Response
  5.     Dim adCon As ADODB.Connection
  6.     Dim adRS As ADODB.Recordset
  7.     Dim iCount As Integer
  8.  
  9.     Dim msConstring As String
  10.     Dim msSQL As String
  11.     Dim miBorder As Integer
  12.  
  13.     msConstring = "driver={SQL Server};server=" + strServer + "; uid=SA; pwd=pruebas; database=" + strDB + ";"
  14.     msSQL = "select * from dbo.nombres_comunes order by id"
  15.  
  16.     Set objctx = GetObjectContext()
  17.     Set Resp = objctx.Item("Response")
  18.    
  19.     Set adCon = New ADODB.Connection
  20.     Set adRS = New ADODB.Recordset
  21.     adCon.ConnectionString = msConstring
  22.     adCon.Open
  23.     Set adRS.ActiveConnection = adCon
  24.     adRS.Open msSQL, , adOpenForwardOnly, adLockReadOnly
  25.     If adRS.EOF And adRS.BOF Then
  26.         Resp.Write "NO RECORDS RETURNED<BR>"
  27.         Exit Sub
  28.     End If
  29.    
  30.     With Resp
  31.         .Write "<TABLE BORDER = " & miBorder & ">"
  32.         .Write "<TR>"
  33.         For iCount = 0 To adRS.Fields.Count - 1
  34.             .Write "<TD>" & adRS.Fields(iCount).Name & "</TD>"
  35.         Next
  36.         .Write "</TR>"
  37.         Do While Not adRS.EOF
  38.             .Write "<TR>"
  39.             For iCount = 0 To adRS.Fields.Count - 1
  40.                 .Write "<TD>" & adRS.Fields(iCount).Value & "</TD>"
  41.             Next
  42.             .Write "</TR>"
  43.             adRS.MoveNext
  44.         Loop
  45.         .Write "</TABLE>"
  46.     End With
  47.     Set Resp = Nothing
  48.     adRS.Close
  49.     adCon.Close
  50.     Set adRS = Nothing
  51.     Set adCon = Nothing
  52.     Set objctx = Nothing
  53. errores:
  54. If Err.Number <> 0 Then
  55.     Response.Write "<p>Error en la conexion SQL</p>"
  56.     Response.Write "<p>.</p>"
  57.     Response.Write "<p>Error número: " + CStr(Err.Number) + "</p>"
  58.     Response.Write "<p>Error descripción: " + CStr(Err.Description) + "</p>"
  59.     Exit Sub
  60. End If
  61. End Sub

Para los programadores el código se explica fácilmente para los que no somos tan duchos necesitaremos algunas explicaciones.

Lo básico es enviar en los parámetros de nuestro ASP,

+ la dirección IP de el SQL Server
+ el nombre de la base,
+ dentro hacemos la consulta
++ Podríamos enviar el usuario y la clave también desde el ASP pero no quise profundizar en ello mucho en ello

creando la pagina ASP para la lectura
Código asp:
Ver original
  1. <html>
  2. <head>
  3.     <title>Mi DLL ASP - Lectura Base de datos</title>
  4. </head>
  5. <body>
  6.     <&#37;
  7.     Dim PobarMiDLL
  8.     On Error Resume Next
  9.         Set PobarMiDLL = Server.CreateObject("ForosDelWebDLL.funciones")
  10.     If Err <> 0 then
  11.         response.write "<h2>Error cargando DLL</h2>"
  12.         response.end
  13.     else
  14.         PobarMiDLL.CrearTabla "localhost","mibase"
  15.         Set PobarMiDLL = Nothing
  16.     End If
  17.     %>
  18. </body>
  19. </html>

el resultado en el navegador seria:

EDITO:
Cita:
la fuente original es: http://support.microsoft.com/kb/299988/es
en ella encontaran la forma de enviar la variable de conexion y el SQL
yo decidí incorporarlas en mi código... ahí al gusto del cliente.
---- espero que les sea de utilidad ---
__________________
JuanRa Pérez
San Salvador, El Salvador

Última edición por JuanRAPerez; 24/09/2008 a las 14:24