16. maj 1999 - 20:21Der er
19 kommentarer og 2 løsninger
do...loop ( VBScript)
Hej! Kan man lave en løkke i en løkke i VBScript? Noget i stil med: Do...until rs1.EOF -løkke 1 //Og så forskellige ting, der udføres (do..until..rs2.movenext loop)-løkke 2 rs1.movenext -slut løkke1
Jeg har brug for at køre et recordset igennem og for hver post undersøge, om dens id er gemt som fremmednøgle i en anden tabel (som jeg så bliver nødt til at køre igennem).
Øh? Er det mig eller var det ikke svar på mit spørgsmål? Det ser da ud til bare at være en enkelt løkke, med en programlinje - jeg har brug for 2 løkker indeni hinanden!!!
Nu kom dit svar nr. 2 først - men jeg kan stadigvæk ikke helt se, hvordan jeg laver de to løkker indeni hinanden. Hvis jeg prøver, så kommer der en fejl i stil med "loop without do"
Så prøver jeg at omformulere det: Til at starte med havde jeg en ganske almindelig løkke, der gennemløb et recordsæt (for et enkelt produkt, hvor oplysningerne skulle skrives ud til skærmen). Altså: do until rs.EOF [statement1] [statement2] ..etc. rs.movenext loop
Så kom jeg i tanker om, at man samtidig skulle kunne se, om dette produkt var på tilbud. Jeg har en tilbudtabel i min db og jeg satte så et nyt recordsæt til at være "select * from tilbud". Nu kommer problemet: Når jeg er inde i den føromtalte løkke, så er jeg nødt til for hver post at gennemløbe tilbud-tabellen for at undersøge, om det pågældende produkt er på tilbud. Det vil sige, at jeg skal gennemløbe et recordsæt inde i gennemløbet af et recordsæt - og det kan jeg ikke finde ud af. Er det tydeligt nok nu?
opret et nyt recordset rs2, og brug det med en ny løkke do until rs.EOF [statement1] [statement2] do until rs2.EOF [statement1] [statement2] ..etc. rs2.movenext loop ..etc. rs.movenext loop
hovsa den blev sendt afsted ...men.. mit formål med det var/er at finde en vares navn (i en tabel) og derefter prisen i en anden tabel pris(efter varenr(vtitleid)) i en anden tabel.
Ideen med at gennemløbe et helt recordset for hver tuple i et andet er ikke særlig god! Det tager tid... Brug i stedet en simpel algoritme som denne:
WHILE NOT ProdukterRS.EOF \"Udskriv produktet\" WHILE UdsalgRS(\"Id\") < ProdukterRS(\"Id\") UdsalgRS.MoveNext IF ProdukterRS(\"Id\") = UdsalgRS(\"Id\") THEN \"Ja der er på tilbud\" END IF WEND ProdukterRS.MoveNext WEND
Herved løbes hvert recordset kun igennem 1 gang! Jeg går her ud fra at du kun har Id\'erne i din Tilbudstabel, på de produkter der ER på tilbud. Men ellers ville der jo ikke være grund til at lave det i en seperat tabel...
Jeg har blot en lille kommentar et dette indslag... VBSCRIPT er et sprog som anvendes på samme måde som JAVASCRIPT. VBSCRIPT afvikles af brugeren i browseren og derfor kan man også se koden, hvis du i din browser vælger at se sourcecoden. Jeg har aldrig hørt om at nogen ville være så tåbelige at åbne databaser vha. vbscript. Her kommer ASP (Active Server Pages) ind i billedet. Denne form for kode bliver afviklet af serveren inden browseren modtager det endelig resultat. Så skulle det vist være på plads.
=> Januskh JavaScript afvikles som standard på klientsiden, dette sker med mindre man angiver Script-tag\'ets attribut \"Runat\" til at være server! VBScript derimod afvikles som standard på serveren, så man kan altså ikke se den oprindelige kode på klienten, kun den fortolkede, i HTML-format! Hvis du aldrig har hørt om at bruge VBScript til at håndtere DB-adgang, har du vist ikke hørt ret meget... Det forholder sig nemlig således at ASP IKKE er en specifik form for kode, men et begreb der dækker over en måde at implementere webpages på. (Microsofts løsning til at lave dynamiske web pages) ASP dækker således også over flere script sprog, heriblandt JavaScript, JScript OG VBScript Så skulle det vist være på plads.
Højreklik og vis kilde.. søg efter <SCRIPT LANGUAGE=\"VBScript\">. Hov?!? Man kan se al koden...?!? Microsoft bug?!? Not! vbSCRIPT!
.. og et eksempel på at åbne en database i VBSCRIPT vil jeg meget gerne. MEGA MEGET. Lav et lige et eksempel og få det til at virke. Uden at sætte <% %> omkring.
<% = Active Server Pages Section Start %> = Active Server Pages Section End
=> Januskh Den side du henviser til er jo slet ikke en asp-side!!! Det er en HTML-side, hvis indhold slet ikke fortolkes af serveren, men sendes direkte til klienten. Og jo naturligvis når man angiver <SCRIPT LANGUAGE=\"VBScript\">, køres scriptet på samme måde som ex. et JavaScript. Til sidst, fordi man tilføjer <% og %>, ændrer det IKKE på det faktum, at det er VBScript!
Fatter du det så... desuden tror ikke at der er nogen som er så tåbelige at de åbner databaser i VBSCRIPT medmindre det er i GLOBAL.ASA. Ellers har de eddermandme et kæmpe hacker problem.
=> Januskh Hvis du ikke længere vil deltage i diskussionen, er det din sag... Microsofts definition på ASP er:
(Active Server Pages) An open application environment in which HTML pages, scripts, and ActiveX components can be combined to create Web-based applications.
Altså, fordi man bruger ex. VBScript i en ASP-side, ER VBScript ikke lige pludselig ASP! VBScript kan indgå som en del i en ASP-side...
VBScript er som JavaScript er i HTML. På samme måde som VBA er i Microsoft Word og/eller Microsoft Access.
Bevis: Start => Indstillinger => Kontrol Panel => Tilføj fjern programmer. Remove Microsoft Internet Explorer. Geninstaller Microsoft Internet Explorer via custom og undlad at installere punktet Visual Basic Scripting Support.
Så vil du se at Internet Explorer vil have installeret VBSCRIPT... og det er selvom det ikke er en ASP-side... Går du derimod ind på en hvilken som helst Active Server Pages side, så vil du få vist siden uden problemer.
Afvikles VBSCRIPT stadig på serveren? Nej, i din browser.
Nu bliver jeg nødt til at blande mig. Janus din opførsel herinde virker ikke særlig professionel. \"Fatter du det så\" og EOD(især da du IKKE har ret, og ikke vil lytte til andre!) er for mig, ikke en brugbar tone, at diske op med!
Du har misforståe nogle begreber alvorligt.....Men du er så overbevist at du ikke lytter til andre.
Altså VBScript kan afvikles på 2 måder: 1. på klienten. Indsat i et Script tag hvor attributten RunAt er = Client(client er defult). Du henviser til nogle sider, hvor man ved at vælge Vis Kilde, kan se koden : Ja selvfølgelig kan du se koden, for det er jo lavet som klient side script, og klient script bliver sendt ud til browseren. Når man laver klient scripting kan man vælge at bruge JavaScript eller VBScript. Lige meget hvad du vælger accepteres det IKKE at du kalder metoder som \"Response.Write(\"Janus har ikke ret\")\" da det IKKE er et gyldigt Klient side script. Klienten har jo ikke adgang til Response objektet
2. Eller på severen. Afvikles det på serveren er det enten i <%%> eller i <Script> Tag\'et med attrubutten \"RunAt=Server\". Lige for begge måder er at de IKKE kan ses i vis kilde, da den enkelte ScriptEngine(VBScript JScript) fortolker koden og sender outputtet ud til klienten.
Du siger<<VBScript er som JavaScript>> NEJ det er to forskellige sprog med hver deres syntaks. Begge kan processeres som klient side scripts, men VB kan også processeres som server side script (Ligesom JScript kan).
Det hele startede med at du så jpk\'s kode : WHILE NOT ProdukterRS.EOF .... .... WEND osv
Men da det er VB syntaks tænkte du måske \"man kan da ikke køre VB systaks på serveren\". Nu fortæler jeg dig \"jo man kan, det bestemmer man selv\".
I Internet Service Manager kan man angive et default ASP language, og det kan være VBScript eller f.eks. JScript. Det man vælger er den script engine som Default\" skal fortolke det der står i <%.....%>. Hvis du laver VBScript default kan da sagtens åbne databaser i VBScript, hvilket du påstår man ikke kan. Du kan også \"override\" default sproget, ved at gøre følgende <%@ LANGUAGE=JScript %> Det vil gøre at JScript fortolkerer frem over i ASP siden, tager sig af kode indsat i <%....%>
Prøv at smide denne sætning ind når default er sat til VBScript <% for(i=1;i<10;i++ )%>
Eller denne når Default er sat til JScript <%IF i = 10 THEN i = 10 END IF %>
Begge fejler, da Ingen af Script-fortolkerne forstår hinandens syntaks. Måske tror du at Script sproget hedder ASP, fordi der ikke er noget der hedder f.eks. Response.Write i VB, MEN det er jo bare objekter med metoder som både er tilgængelige for JSCript og VBScript.
Du fejler ved at tro at VBScript KUN kan afvikles på klienten!
Det sidste eksempel du kommer med, hvor man ska fjerne Visual Basic Scripting Support, understøtter lige nøjagtigt min version af sagen. Det er jo klart at du UDEN visual basic support kan browse mange hjemmesider uden problemer, så længe at der IKKE bliver sendt VB Klient side scripts ud til din computer. Det fortæller jo ikke dig noget om hvad sprog server side scriptet er!!
Jeg er lige vendt tilbage til dette spørgsmål og blev lidt forvirret over svarene - jeg giver jer hver en håndfuld points, og håber så, at alle er glade??!!
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.