Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Snabb fråga om COM och ASP

Postades av 2004-03-10 15:57:24 - Jonas Oscarsson, i forum asp - allmänt, Tråden har 6 Kommentarer och lästs av 481 personer

Varför kan jag inte använda denna raden i en COM-funktion (dll-fil?)
<code>
Set DB_3 = Server.CreateObject("ADODB.Recordset")
</code>

Den klagar: "Object Required".. alla andra funktioner som inte innehåller något som ska hämtas ur en databas fungerar fint.

Här är hela koden:
<code>
Public Function GetUserName(userid)
'---
'FUNKTIONSBESKRIVELSE:
'Hämtar användarnamn efter användarid
'---
SQL = "SELECT Username FROM Users WHERE ID = " & userid
Set DB_3 = Server.CreateObject("ADODB.Recordset")
DB_3.Open SQL, "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("database/SuYwqEb/forum.mdb") & "; Persist Security Info=False", 3
If Not DB_3.EOF Then
GetUserName = DB_3("Username")
Else
GetUserName = -1
End If
DB_3.Close
Set DB_3 = Nothing
End Function
</code>

Jag anropar den i ASP-koden genom följande:
<code>
set oFunctions_getNames = Server.CreateObject("Functions.getNames")
usrname = oFunctions_getNames.GetUserName(3)
</code>

DLL-filen heter "Functions.dll" och har en klassmodul som heter "getNames.cls".


Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-10 22:38:46 - Ola Lindfeldt

Du har inget Server objekt i Com-objektet.

Och undvik late binding dvs CreateObject i ett COM-objekt.
Använd early binding i stället, t.ex.
Dim Rs as ADODB.Recordset
Set Rs = New ADODB.Recordset

Det exekverar snabbare.

Du måste sätta en referens (Project References) till MS Data Access Components

Ola



Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-11 06:58:44 - Jonas Oscarsson

Så du menar att jag ska deklarera detta utanför alla funktioner, och använda samma databaskoppling till alla?

Gör inte det att jag inta kan köra två funktioner samtidigt (ex GetUserName(GetUserIDBySomething(Request.Form("exempel"))) ) ?

Jag har satt Project Reference, men det vill sig ändå inte. När jag kompilar (detta med koden utanför funktionerna) får jag felmeddelandet: "User-defined type not defined" och så markeras <code>DB as new ADODB.Recordset</code>, men inte <code>dim</code>.

Någon bra lösning på detta?


Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-11 11:51:42 - Andreas Hillqvist

CreateObject och New påverkar inte Late och early binding's. Det påverkas utav hur variablerna är deklarerade. För att använda early binding lägger man till referens till Microsoft ActiveX Data Objects (ADO) och deklarer variablerna som ADODB.Recordset.

New och CreateObject påverkar hur man instansierar objektet.


Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-11 17:13:05 - Jonas Oscarsson

Kan du/ni ge något exempel på hur en ActiveX DLL med koppling till en Access databas kan se ut? Jag förstår fortfarande inte riktigt :)


Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-11 22:56:08 - Andreas Hillqvist

Här är ett exempel

Projekt Typ: ActiveX DLL
Projekt Namn: ASPHelpDLL
Projetkt Referenser:

Class Name: ASPFunctions
<code>
Option Explicit

Public Function CreateAccessConnection(ByVal DataSource As String) As ADODB.Connection
Dim Connection As ADODB.Connection
Set Connection = New ADODB.Connection
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & DataSource

Set CreateAccessConnection = Connection
End Function

'**
'* FUNKTIONSBESKRIVELSE:
'* Hämtar användarnamn efter användarid
'**
Public Function GetUserName(ByVal Connection As ADODB.Connection, ByVal UserId As Long) As String
Dim strSQL As String
Dim Recordset As ADODB.Recordset
strSQL = "SELECT Username FROM Users WHERE ID = " & UserId

Set Recordset = New ADODB.Recordset
Recordset.Open strSQL, Connection, adOpenStatic, adLockReadOnly, adCmdText

If Recordset.EOF Then
GetUserName = -1
Else
GetUserName = "" & Recordset("Username")
End If

Recordset.Close
Set Recordset = Nothing
End Function

'**
'* FUNKTIONSBESKRIVELSE:
'* Hämtar användarid efter användarnamn
'**
Public Function GetUserId(ByVal Connection As ADODB.Connection, ByVal UserName As String) As Long
Dim strSQL As String
Dim Recordset As ADODB.Recordset
strSQL = "SELECT ID FROM Users WHERE Username = '" & Replace(UserId, "'", "''") & "'"

Set Recordset = New ADODB.Recordset
Recordset.Open strSQL, Connection, adOpenStatic, adLockReadOnly, adCmdText

If Recordset.EOF Then
GetUserId = -1
Else
GetUserId = Recordset("ID")
End If

Recordset.Close
Set Recordset = Nothing
End Function
</code>


ASP sida:
<code>

Dim c
Dim x

Set x = Server.CreateObject("ASPHelpDLL.ASPFunctions")
Set c = x.CreateAccessConnection(Server.Mappath("database/SuYwqEb/forum.mdb"))

Response.Write x.GetUserName(c, 5)

Response.Write x.GetUserId(c, "Nisse")

Set x = Nothing

c.Close
Set c = Nothing
</code>


Svara

Sv: Snabb fråga om COM och ASP

Postades av 2004-03-12 12:15:24 - Jonas Oscarsson

Tack!

Nu förstår jag hur det funkar!


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 790
27 960
271 761
5 791
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies