OveRRidEMedlem sedan feb. 20018 509 inlägg
Ok, nu i mitt mycket djupa stadie av com-programmering har jag funderat på att göra ett objekt som sköter databaskopplingen och hämtningen av data åt mig. Problemet är att jag inte riktigt vet hur jag skall gå tillväga..
Problem:
* ok.. jag skapar ett com-objekt i VB, enligt exempel i denna tråd och leker runt lite med den och dess kod. Men om jag vill skicka med en SQL-sträng från asp-sidan till objektet som hämtar den data jag vill, lägger det i ett recordset och som jag sedan loopar ut på ASP-sidan. Hur får jag tillbaks samlingen (recordsetet med data) till ASP sidan? En funktion kan väl inte returnera hela variablar som är objekt, utan returnerar väl bara som string eller integer? Då måste det bäl bli en sub? Men huur? :q
;)
Hjälp..
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy
@ndersMedlem sedan juni 200026 914 inlägg
Jodå. Du specificerar själv vad du vill att dina metoder skall returnera.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">Public Function returnRecordset(ByVal strSQL As String) AS ADODB.Recordset
Återkom med fler frågor. :)
Du har gömt de här trådarna bra. ;)
Mvh,
OveRRidEMedlem sedan feb. 20018 509 inlägg
Jag vet ju inte var jag skall posta dem, för att inte få stock av moderatorer. ;)
* Vad innebär byVal?
* Var skall jag egentligen, med fördel, placera dll:erna som blir?
Jag har ett annat problem med..
Om jag utvecklar min komponent i Visual Basic 6.0 i Visual Studio, och sparar projektet på ett ställe och kompilerar det till en dll nånstans på servern, reggar den med regsvr32 och anropar den genom en asp-sida.. hur skall jag smidigast göra om jag vill ändra i dll:en (t.ex om nåt blev fel).. Om jag ändrar i Visual Basic och försöker kompilera om den över den befintliga dll:en så säger den ju att jag inte har rättigheter (eftersom den är reggad och körs). Då måste jag först start om hela IIS:en (inte boota om alltså), sedan ersätta den och testa igen. Det tar ju liksom en stund att starta om IIS:en..
nån smidigare lösning?
Jag kan ju köra den direkt i VB, men om det är bara är en funktion i mitt com-objekt, då händer det ju inget när jag gör det, då måste jag ju köra den via en brusare.. :q
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy
@ndersMedlem sedan juni 200026 914 inlägg
Jag vet ju inte var jag skall posta dem, för att inte få stock av moderatorer.
:e - Visual Basic-forumet tycker jag passar ganska bra. :)
* Vad innebär byVal?
By Value. Det betyder att variabelns värde skickas till funktionen. Jmf ByRef, By Reference, då en pekare skickas.
* Var skall jag egentligen, med fördel, placera dll:erna som blir?
Det har ingen större betydelse. Någonstans där du hittar dem när det behövs.
hur skall jag smidigast göra om jag vill ändra i dll:en (t.ex om nåt blev fel)..
Du kan köra komponenten i debug-läge (det göra jag dock aldrig själv, utan kompilerar alltid om ordentligt, enligt din beskrivning.).
då måste jag ju köra den via en brusare..
Om du sätter komponenten i debugläge, sätter breakpoint i koden och kör sidan i din browser så kan köra utan att kompiler a om. Men som sagt, jag är väldigt dålig på det, så jag är lite osäker på hur man bär sig åt i verkliga livet (utanför Sundbyberg alltså ;) ).
Mvh,
OveRRidEMedlem sedan feb. 20018 509 inlägg
Ok.. nu skall vi blir nivå extrem nybörjare här.. :e
Det betyder att variabelns värde skickas till funktionen.
Det gör den väl ändå, om man skickar den som parameter när man anropar funktionen? :q
Om du sätter komponenten i debugläge, sätter breakpoint i koden och kör sidan i din browser så kan köra utan att kompiler a om.
Ok.. ponera följande scenario: Jag har i min komponent enbart en funktion som får en parameter när den anropas av ASP-sidan. Om jag kör komponenten i Debugläge (Playknappen, i suppose) så kompileras ju inget om, inte heller kommer ju själva ASP-sidan in i bilden, vilket gör att min stackars funktion inte får någon parameter alls. Den anropas ju inte ens eftersom den inte "auto-exec:as" i en sådan class. Och då händer ju ingenting nyttigt. ;) Förstår du vad jag menar?
(utanför Sundbyberg alltså)
Tro mig, det är nog mer liv än vad det är i Nässjö. :e
Jag fortsätter att fråga mina trivialt problematiska frågor i VB-forumet. ;)
Tack!
red) Stavningen, Stefan. Stavningen. :l
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy
[Redigerat av OveRRidE den 16 jan 2002]
@ndersMedlem sedan juni 200026 914 inlägg
Det gör den väl ändå, om man skickar den som parameter när man anropar funktionen?
Jag försöker förklara igen.
By Value: Det värde du skickar till funktionen läggs i en variabeln i funktionen. Förändringar i denna variabels värde är lokala. Om du skickar en sträng, säg "Hej", till en metod och den tas emot i en ByVal-parameter, kan du göra vilka som helst förändringar i denna variabels värde utan att påverka senare användning av variabelns värde "Hej" på asp-sidan.
By Reference: En pekare till 'originalvariabeln' tas emot av din komponent. Ändrar du sedan i komponenten variabelns värde från "Hej" till "Hej då", kommer variabeln på asp-sidan att ha värdet "Hej då".
Det är lite svårt för mig att förklara, eftersom jag inte har någon utbildning i språket, utan är självlärd. Jag hoppas att någon kommer in och rättar mig, eller åtminstone förklara lite bättre. Prova gärna att skapa en metod med både en ByVal- och en ByRef-parameter och jämför skillnaden.
Den anropas ju inte ens eftersom den inte "auto-exec:as" i en sådan class.
Om du har en dll som är kompilerad på maskinen och sätter projektet i debugläge med playknappen, så kör du din asp-sida. Den kod som ligger i ditt debugprojekt körs.
Sundbyberg? I wouldn't know. :)
Mvh,
OveRRidEMedlem sedan feb. 20018 509 inlägg
*aha-upplevelse* ;)
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy
@ndersMedlem sedan juni 200026 914 inlägg
Betyder det att du förstår?
OveRRidEMedlem sedan feb. 20018 509 inlägg
Ungefär. Jag förstår, men jag har inte klurat ut vad jag skall ha för eventuell nytta av det (läs tillämpa).
Jag snokade lite på www.scribona.no förut med, mycket nice. :)
Vi köper förövrigt en hel massa av Scribona sverige när vi säljer servrar, hemPc och liknande.
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy
@ndersMedlem sedan juni 200026 914 inlägg
Jo, scribona.no är ganska najs. Den har iofs tagit nästan 10 manår att utveckla, men nu börjar den bli ordentligt bra. Den är förbaskat kul att jobba med också.
Mvh,
spangoMedlem sedan juni 20006 147 inlägg
Jag hoppas att någon kommer in och rättar mig, eller åtminstone förklara lite bättre.
Rättning behövs inte :)
ByVal gör som så att det kopierar parametern, och sedan skickar denna kopias adress i minnet till proceduren, medan ByRef ger parameterns minnesadress direkt till proceduren. Eftersom kopieringen kräver ganska mycket arbete kan man vinna en del prestanda på att använda ByRef. Dessutom kan man "returnera" fler värden med bara en sub/function om man använder ByRef.
------------------
Before you criticize someone, walk a mile in his shoes. That way, if he gets angry, he'll be a mile away - and barefoot.
[Redigerat av spango den 16 jan 2002]
OveRRidEMedlem sedan feb. 20018 509 inlägg
Ok, i see. Någosånär iaf. ;)
------------------
"-Of all the things i´ve lost, i miss my mind the most.-Ozzy