Tenkes Postad 22 oktober, 2002 Share Postad 22 oktober, 2002 Jag har lite asp kod och jag gärna vill veta hur jag kan lägga den i en dll. Function Kontroll() objConnection="DSN=test; UID=sa; PWD=123; DATABASE=test" set Connection=server.CreateObject("ADODB.Connection") set rs=server.CreateObject("ADODB.Recordset") Connection.open objConnection SQL="Select Namn,Losenord From User" rs.Open SQL, Connection do while not rs.EOF if rs("Namn")=Request.Form("Namn") and rs("Losenord")=Request.Form("Losenord") then finns=true exit do else finns=False end if rs.MoveNext loop rs.Close Connection.Close set Connection=Nothing Kontroll=finns end Function Länk till kommentar Dela på andra webbplatser More sharing options...
Mr Andersson Postad 22 oktober, 2002 Share Postad 22 oktober, 2002 Borde gå att lösa med Visual Basic. Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 22 oktober, 2002 Trådskapare Share Postad 22 oktober, 2002 Ok, jag vet att det går med VB. Vad jag inte vet är hur det ska se ut? Det går inte att klistra in koden, eller? Länk till kommentar Dela på andra webbplatser More sharing options...
Mr Andersson Postad 22 oktober, 2002 Share Postad 22 oktober, 2002 Aha... det kan jag inte hjälpa dig med! Men projekttypen borde vara ActiveX Library om ska köra det på en IIS-server. Länk till kommentar Dela på andra webbplatser More sharing options...
Magnus Gladh Postad 22 oktober, 2002 Share Postad 22 oktober, 2002 http://www.gladh.nu/asphelp/svar10.html finns ett exemple på hur man skapar ett COM objekt.. SQL="Select Namn,Losenord From User" rs.Open SQL, Connection do while not rs.EOF if rs("Namn")=Request.Form("Namn") and rs("Losenord")=Request.Form("Losenord") then finns=true exit do else finns=False end if rs.MoveNext loop Den koden är inte optimerad för sin uppgift, det du gör är att du hämtar alla namn och lösen från databasen och sedan loopar dig igenom dem en för en... väldigt tidskrävande när det kan lösas med en enkel where sats.. SQL="Select [iD] From User WHERE [Namn] = '"& Request.Form("Namn") &"' AND [Losenord] = '"& Request.Form("Losenord") &"' rs.Open SQL, Connection if rs.eof then ' ingen användare fanns else ' användare finns med ID rs.fields(0).value end if - Magnus ----------------------------------------------------- ju mer jag lär mig ju mer inser jag så lite jag kan Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 22 oktober, 2002 Trådskapare Share Postad 22 oktober, 2002 Jag kommer och tar en titt på länken. Tack! Mvh Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 23 oktober, 2002 Trådskapare Share Postad 23 oktober, 2002 Jag försökt med nedanstående VB kod. Den vill inte fungerar. Public Function Kontroll() As Variant Dim adoConn As New ADODB.Connection Dim adoCmd As New ADODB.Command Dim adoRs As New ADODB.Recordset Dim adoConnStr As String Dim strFinns As String adoConnStr = "DSN=test; UID=sa; PWD=123; DATABASE=test" adoCmd.CommandType = 1 adoCmd.CommandText = "Select Namn,Losenord From User Where Namn='" & Request.Form("Namn") & "' AND Losenord='" & Request.Form("Losenord") & "'" adoConn.Open adoConnStr adoCmd.ActiveConnection = adoConn Set adoRs = adoCmd.Execute If adoRs.EOF Then strFinns = False Else strFinns = True End If Set adoConn = Nothing Set adoCmd = Nothing Set adoRs = Nothing Kontroll = strFinns End Function Jag vore jättetacksam för hjälp. [inlägget ändrat 2002-10-23 10:54:15 av Tenkes] Länk till kommentar Dela på andra webbplatser More sharing options...
Magnus Gladh Postad 23 oktober, 2002 Share Postad 23 oktober, 2002 kanske lättare om du säger vilket fel då får... Det finns ett utmärkt sätt att debuga sin kod på i Visual studio. 1. avregistrera din dll, och starta om IIS. 2. öpnna VS och ta fram din kod. 3. sätt en breakpoint i början av din kod och tryck på run. 4. leta upp din fil som anropar dll och plocka bort IUSR_<<datornnamnet>> som användare (skall läggas tillbaka sedan) 5. kör din ASP sida och när asp-sidan kallar på dll:en så kommer den att hoppa in i din kod och stanna på breakpointen, nu kan du stega dig igenom koden... - Magnus ----------------------------------------------------- ju mer jag lär mig ju mer inser jag så lite jag kan Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 24 oktober, 2002 Trådskapare Share Postad 24 oktober, 2002 Jag får felmeddelande: Error Type: Server object, ASP 0177 (0x800401F3) Invalid ProgID. Kan du hitta något fel i koden? [inlägget ändrat 2002-10-24 08:49:25 av Tenkes] Länk till kommentar Dela på andra webbplatser More sharing options...
Magnus Gladh Postad 24 oktober, 2002 Share Postad 24 oktober, 2002 så fall är det fel i din ASP-kod, för IIS kan inte hitta den dll som du försöker koppla upp dig mot. Har du namngett det rätt i din server.createobject - Magnus ----------------------------------------------------- ju mer jag lär mig ju mer inser jag så lite jag kan Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 24 oktober, 2002 Trådskapare Share Postad 24 oktober, 2002 Nu har jag ändrat i dllfilen så att funktionen i den tar två inparametrar. Public Function Kontroll(Namn As Variant, Losenord As Variant) As Variant Dim adoConn As New ADODB.Connection Dim adoCmd As New ADODB.Command Dim adoRs As New ADODB.Recordset Dim adoConnStr As String Dim strFinns As String adoConnStr = "DSN=test; UID=sa; PWD=123; DATABASE=test" adoCmd.CommandType = 1 adoCmd.CommandText = "Select Namn,Losenord From User Where Namn='" & Namn & "' AND Losenord='" & Losenord & "'" adoConn.Open adoConnStr adoCmd.ActiveConnection = adoConn Set adoRs = adoCmd.Execute If adoRs.EOF Then strFinns = False Else strFinns = True End If Set adoConn = Nothing Set adoCmd = Nothing Set adoRs = Nothing Kontroll = strFinns End Function Även ändrat i asp koden och det ser ut som nedan: set obj=server.CreateObject("test.Kontroll") Response.Write(obj.Kontroll(Request.Form("Namn"),Request.Form("Losenord"))) ' test = Projektnamn, Kontroll = Klassnamn, och funktionen heter Kontroll. Jag får ett felmeddelande: Error Type: Microsoft VBScript compilation (0x800A0414) Cannot use parentheses when calling a Sub Mvh [inlägget ändrat 2002-10-24 13:51:24 av Tenkes] Länk till kommentar Dela på andra webbplatser More sharing options...
Magnus Gladh Postad 24 oktober, 2002 Share Postad 24 oktober, 2002 Tycker det ser rätt ut. Testa att ta bort () på response.write och se om det fungerar bättre, det enda jag kan komma på.... - Magnus ----------------------------------------------------- ju mer jag lär mig ju mer inser jag så lite jag kan Länk till kommentar Dela på andra webbplatser More sharing options...
Anders N Postad 24 oktober, 2002 Share Postad 24 oktober, 2002 Jag hatar VBscript.. jag vill ha parametrar överallt Borde vara obj.Kontroll som den inte vill ha parametrar till... Prova med "call", fast.. hmm.. enligt detta så kan den döda returvärdet.. jag vet ingenting Prova utan parametrar till obj.Kontroll... dim blah blah=obj.Kontroll Request.Form("Namn"),Request.Form("Losenord") call You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you omit the Call keyword, you also must omit the parentheses around argumentlist. If you use either Call syntax to call any intrinsic or user-defined function, the function's return value is discarded. Ciao, Anders Länk till kommentar Dela på andra webbplatser More sharing options...
Tenkes Postad 24 oktober, 2002 Trådskapare Share Postad 24 oktober, 2002 Jag ska testa. Tack! Mvh Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.