13. oktober 2008 - 15:26Der er
22 kommentarer og 1 løsning
JScript - funktioner
Plejer at bruge VB men er kommet ud i noget JScript sammen med Asp
Lidt grundlæggende hjælp ønskes - har følgende script - som jeg så skal have udskrevet via en function eller hva ?? og hvordan
function NyhedID() { var NyhedID = new Array(); var strSQL = "SELECT * FROM Nyheder"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); while ( ! objRS.EOF ) { objNyhedID[ objNyhedID.length ] = new id( "" + objRS( "id" )) objRS.MoveNext(); } CloseConnection(); return objNyhedID; }
fra denne funktion skal jeg så videre til en anden funktion som deler array og henter tekster for hvert id - f.eks.
function NyhedText() { var NyhedText = new Array(); var strSQL = "SELECT * FROM Nyheder where id = +det id der er i array"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); while ( ! objRS.EOF ) { objNyhedText[ objNyhedText.length ] = new Text( "" + objRS( "id" )) objRS.MoveNext(); } CloseConnection(); return objNyhedID; }
og herefter så til en funktion der kan udskrive dette
hvordan gør jeg det ????? evt. lidt forklaring til hvem - hvad - hvorfor og hvem gør hvad hvornår ;-))))
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
ups er kommet til at lave en tekst fejl id ligger i en db og tekst i en anden - har rettet lidt til her i forhold til mit oprindelige spørgsmål
function NyhedID() { var NyhedID = new Array(); var strSQL = "SELECT * FROM Nyheder"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); while ( ! objRS.EOF ) { objNyhedID[ objNyhedID.length ] = new id( "" + objRS( "id" )) objRS.MoveNext(); } CloseConnection(); return objNyhedID; }
fra denne funktion skal jeg så videre til en anden funktion som deler array og henter tekster for hvert id - f.eks.
function NyhedText() { var NyhedText = new Array(); var strSQL = "SELECT * FROM NyhederTekst where id = +det id der er i array"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); while ( ! objRS.EOF ) { objNyhedText[ objNyhedText.length ] = new Text( "" + objRS( "Text" )) objRS.MoveNext(); } CloseConnection(); return NyhedText; }
nej nej - sql det kan jeg selv - problemet er hvordan jeg får hentet f.eks. array fra function NyhedID() ned til function NyhedText - d.v.s. den skal jo splittes inden for at jeg kan få fat i hver enkelt - og hvordan udskriver jeg det så ????
dette er bare et eksempel - men skal bruge det til noget andet - her ved jeg godt at jeg kan bruge innerjoin.
Men jeg vil gerne have et eksempel på hvordan man bruger et array dannet i 1 function - som sendes videre til en 2 function - hvor efter det så udskrives.
For det første skal du navngive din variabel korrekt - som roenving viser dig det. Ikke: var NyhedID = new Array();
- men: var objNyhedID = new Array();
- ellers giver indholdet af funktionerne ikke mening =)
Derudover er det ikke særligt effektivt at skulle hente array'ets length i hvert gennemløb af løkken. Dette er en del mere effektivt:
function NyhedID() { var NyhedID = new Array(); var strSQL = "SELECT * FROM Nyheder"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = new id( "" + objRS( "id" )) objRS.MoveNext(); } CloseConnection(); return objNyhedID; }
- og:
function NyhedText() { var NyhedText = new Array(); var strSQL = "SELECT * FROM NyhederTekst where id = +det id der er i array"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedText[i++] = new Text( "" + objRS( "Text" )) objRS.MoveNext(); } CloseConnection(); return NyhedText; }
Hvad du vil med de to funktioner må du til gengæld forklare langt mere udførligt =)
function NyhedID() { var objNyhedID = new Array(); var strSQL = "SELECT * FROM Nyheder"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = new id( "" + objRS( "id" )) objRS.MoveNext(); } CloseConnection(); return objNyhedID; }
- og:
function NyhedText() { var objNyhedText = new Array(); var strSQL = "SELECT * FROM NyhederTekst where id = +det id der er i array"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedText[i++] = new Text( "" + objRS( "Text" )) objRS.MoveNext(); } CloseConnection(); return objNyhedText; }
super så langt så godt - men hvordan skriver jeg så objNyhedID ud - og for hvert id den henter hvordan henter jeg så med det i function NyhedText ???????
det jeg vil er at danne et array med alle nyheds id - derefter gennemløbe dette array og hente i nyhedertekst i forhold til det enkelt id - og derefter igen så udskrive ????
har ingen problember hvis jeg sad i vb - men er lidt på halen i jscript - bruges sammen med asp. Vil gerne have lidt styr på statement, object og method - hvordan jeg bruger dem i forhold til hinanden.
Jeg er ret sikker på, din kommentar til roenving "nej nej - sql det kan jeg selv" ikke er hel korrekt. Det, roenving forsøgte at vise dig, var, at du kan nøjes med én funktion og ét SQL-kald, som henter både id og tekst fra begge tabeller i ét hug =)
Anyway, så får du den nu med to funktioner. Hvad du ikke er vandt til fra VB er, at man kan smide arrays og objekter rundt mellem funktioner. Dels kan en funktion modtage et array og/eller et objekt som parameter - og dels kan den returnere ditto.
Prøv noget à la:
<script type="text/javascript"> function NyhedID() { var objNyhedID = new Array(); var strSQL = "SELECT * FROM Nyheder"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = objRS( "id" ) objRS.MoveNext(); } CloseConnection(); objConn = objRS = null; return objNyhedID; }
function NyhedText(id) { var strSQL = "SELECT * FROM NyhederTekst where id = " + id; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var objTmp = null; var objBody = document.getElementsByTagName("body")[0]; var i = 0; while ( ! objRS.EOF ) { objTmp = document.createElement("div"); objTxt = document.createTextNode( objRS("Text") ); objTmp.appendChild(objTxt); objBody.appendChild(objTmp); objRS.MoveNext(); } CloseConnection(); objConn = objRS = null; }
var aNyhedsID = NyhedID(); for (var i=0,j=aNyhedsID.length; i<j; i++) { NyhedText( aNyhedsID[i] ); } </script>
når jeg kører den således - returnere den tallet 5 og det er også korrekt
function NyhedID() { var objNyhedID = new Array(); var strSQL = "SELECT * FROM News"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = objRS( "tekst" )+","
var aNyhedsID = NyhedID(); for (var i=0; i<aNyhedsID.length; i++ ) response.write ("<br>"+aNyhedsID[i]) så langt så godt - hvis man så vender den og får den til at hente id og derefter hente teksten i en ny function (det er bare et eks. det ville man jo gøre i samme)
lidt sjovt - nu virker det næsten - den udskriver alle id - men skriver kun den sidste id tekst ud (det er nok ikke særlig korrekt det jeg har lavet - men det virker da lidt ;-))
function NyhedID() { var objNyhedID = new Array(); var strSQL = "SELECT * FROM News"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = "" + objRS( "Id" ) objRS.MoveNext(); } CloseConnection(); objConn = objRS = null; return objNyhedID; } var aNyhedsID = NyhedID(); for (var i=0; i<aNyhedsID.length; i++ ) response.write ("<br>"+aNyhedsID[i])
function NyhedText(id) { var objNyhedTekst = new Array(); var aNyhedsID = NyhedID();
for (var i=0; i<aNyhedsID.length; i++ )
var nID = aNyhedsID[i] var strSQL = "SELECT * FROM News where id = " + nID; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedTekst[i++] = "" + objRS( "tekst" ) objRS.MoveNext(); }
function NyhedID() { var objNyhedID = new Array(); var strSQL = "SELECT * FROM News"; var objConn = GetConnection(); var objRS = objConn.execute( strSQL ); var i = 0; while ( ! objRS.EOF ) { objNyhedID[i++] = new CNyhedID("" + objRS( "Id" ) +","+objRS( "Tekst" ));
Du havde nu ikke behøvet at oprette en nyt spm. Jeg var såmænd klar til at svare her =)
Synes godt om
Ny brugerNybegynder
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.