Avatar billede lasserasch Juniormester
21. februar 2006 - 00:55 Der er 9 kommentarer og
1 løsning

Kalde funktion med variabler

Hejsa!

Jeg skal kalde en funktion. Det er en MEGA simpel funktion som lægger 2 tal sammen!

Hvis jeg skriver de tal jeg ønsker lagt sammen manuelt ind, så fungerer det fint. Men hvordan får man lagt input fra en HTML form ind i kaldet???

Dette fungerer fint :

Set AddNum=Server.CreateObject("SimpleCalculator.Addnumbers")
Result=AddNum.Add(1,2)

Jeg ville gerne gøre noget ala dette :

num1 = request.form("num1")
num2 = request.form("num2")
Set AddNum=Server.CreateObject("SimpleCalculator.Addnumbers")
Result=AddNum.Add(num1,num2)


Men hvad er syntaksen for at proppe de 2 variabler fra HTML formen ind i mit funktionskald?


/Lasse
Avatar billede softspot Forsker
21. februar 2006 - 00:57 #1
Du skal nok sørge for at de variabler du sender til funktionen har den rigtige subtype. Hvad er din komponent lavet i (jeg antager du selv har lavet den)?
Avatar billede softspot Forsker
21. februar 2006 - 00:59 #2
Det kunne f.eks. være du skulle gøre sådan:

num1 = cint("0" & request.form("num1"))
num2 = cint("0" & request.form("num2"))
Set AddNum=Server.CreateObject("SimpleCalculator.Addnumbers")
Result=AddNum.Add(num1,num2)


Det der med at foranstille et nul er bare et forsøg på at gøre koden mere failsafe (det er stadig ikke godt nok, for den fanger kun tomme parametre ikke parametre med bogstaver indhold).
Avatar billede lasserasch Juniormester
21. februar 2006 - 01:01 #3
Hej Softspot! Som altid på pletten med en hjælpende hånd hva! :)

Ja, jeg øver mig i at lave DLL komponenter. Jeg har lavet en COM i VB 6.

Min addnumbers class er meget simpel. Ser sådan ud :


Public Number1 As Variant
Public Number2 As Variant

Function Add(Number1, Number2)
Add = Number1 + Number2
End Function


Så du mener det er fordi mine variabler er en tekst streng eller hvordan?


/Lasse
Avatar billede softspot Forsker
21. februar 2006 - 01:06 #4
Det kunne være en årsag. Men idet du modtager varianter, så kunne din funktion rent faktisk godt acceptere strenge (idet + operatoren også fungerer for strenge). Derfor er det lidt mere gustent at den fejler...

Prøv dog lige om det ikke fungere med den cast til integer i første omgang, for så er der jo ikke nogen grund til at komme med andre forslag :)
Avatar billede lasserasch Juniormester
21. februar 2006 - 01:07 #5
Nope! Hvis jeg gør som du siger så er resultatet = 0 hver gang!

Men fik det dog til at virke ved lige at konvertere tallene!

num1 = cdbl(request.form("num1"))
num2 = cdbl(request.form("num2"))


Men takker alligevel for hjælpen! Du fik mig på rette spor ved at nævne cint(....
Så smid lige et svar! Så får du points!
Avatar billede lasserasch Juniormester
21. februar 2006 - 01:09 #6
Har ikke forsøgt med dine forslag i dit 2. indlæg!

"Nope! Hvis jeg gør som du siger så er resultatet = 0 hver gang! "

Hermed mente jeg første forslag. Nå, uanset hvad, så fungerer det nu! Takker!
Avatar billede softspot Forsker
21. februar 2006 - 01:10 #7
Svar kommer der... :)

Ja, cast skal passe til den datatype du sender over. Det var bare min uendelige uvidenhed der fik mig til at vælge cint i stedet for cdbl... :)
Avatar billede softspot Forsker
21. februar 2006 - 01:12 #8
Tak for point :)
Avatar billede lasserasch Juniormester
21. februar 2006 - 10:12 #9
Hejsa....

Har lige et lille tillægsspørgsmål!

Hvis jeg nu gerne vil have at COMkomponenten ligger på en anden server, end den som afvikler hjemmesiden, hvordan pokker strikker man så det bedst sammen!

Jeg kan vel sende input fra en FORM til en anden server ik'? Og kan man lave det så brugeren ikke kan se at der sendes form input mellem 2 servere?

Grunden til at jeg er følgende :

Jeg har en hjemmeside som jeg hoster på min egen Webserver med en kraftig internet forbindelse.

Jeg skal bruge denne hjemmeside til at lave udregninger i en SQL database. Denne SQL database står placeret et andet sted i landet på en server som kun har en alm. størrelse internet forbindelse. Altså 1 Mbit eller sådan!

Da det er rimelig store udregninger der skal foretages, vil jeg helst ikke sende mange data frem og tilbage gennem internettet! Jeg vil bare gerne have at jeg kan sende data til en DLL på serveren som har den lille forbindelse. Her skal udregningerne så laves, og resultatet sendes retur til serveren med hjemmesiden og den store forbindelse.

Kan man evt. oprette forbindelse til en komponent på en anden server? Altså i sætningen server.createObject ???


/Lasse
Avatar billede softspot Forsker
21. februar 2006 - 10:32 #10
Pyha! Så skal du ud i noget med DCOM og det er lidt langhåret. Jeg kan desværre ikke give dig en præcis opskrift på hvordan det skal gøres, da jeg selv ville skulle prøve mig frem. Der findes et værktøj som hedder dcomcnfg eller noget i den stil, der kan skabe forbindelse mellem en klient og et COM-objekt på en remote server. Det kan være du kan bruge det som udgangspunkt for at finde ud af hvad du skal gøre for at få det til at fungere...

Hvis du skal lave et form post til din sql server, så skal der stå en anden IIS på den server, ellers kan du ikke umiddelbart lave http-requests til en server (mig bekendt). Men hvis det ikke er noget problem at installere en IIS på din database server, så er det da en mulighed (selvom DCOM-løsningen umiddelbart er bedre, efter min mening).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester