06. november 2006 - 14:48Der er
25 kommentarer og 1 løsning
to hurtige
jeg skal have den til at selecte : 'Andre' 'Kollega' 'Chef'
<% strSQL = "Select * From skema Where fby='Andre' and telefon = '" & Request.Querystring("id") & "'" Set rs = DataConn.Execute(strSQL) Response.write "<table cellpadding='3' cellspacing='1' widtt='650'>" if rs.bof or rs.eof then response.write "<tr><td><b><font color='#ff0000'>Der er ingen dataoprettet pt.!</b><br><br>" else Do While Not rs.EOF Response.write rs("text1")& vbCrLf & "<br>" Response.write "</td></tr>" rs.MoveNext Loop end if Response.Write "</table>" %>
Og hvis feltet 'text1' er tomt skal den ikke udskrifte det.. det giver meget store mellemrum når jeg lister text1 felter ud derned af..
Hej med dig, Som jeg ser din kode, så er der en masse nonsen i det.
I Do While-loopet har du afslutningen på tabelcellen </td> og rækken </TR>, men starten har du før loopet. Har du f.eks. 3 rækker i databasen, så får du en start på rækken og cellen men 3 afslutninger på rækken og cellen. Det giver problemer.
Næste er der står 'andre' i din select-sætning. Er det der du vil have den til at vælge. et lille fif. Skriv:
strSQL = "Select * From skema Where telefon = '"+Request.Querystring("id")"' " if text1.Text<>"" then strsql = strsql+" and fby='"+text1.text+"'" end if
Jeg ved ikke om det er det du efterspørger, da dit spørgsmål er ret uklar. Sig til hvis det ikke var hvad du søgte. Skal lige sige at jeg er c#-programmør og ikke VB, så syntaksen i mit eksempel kan være lidt forkert.
OK, som jeg ser det, så skal du have din Do While Not rs.EOF, og inde i den skal du have en if-sætning (husk jeg er til c#, så du må rette til hvis jeg laver forkert syntax):
Do While Not rs.EOF if rs["fby"]='Andre' or Rs["fby"]='Kollega' or RS["fby"]='chef' then HER LAVE DU DIN RESPONSE.WRITE. end if LOOP
Det som jeg ikke ved er om det i VB skal hedde RS["fby"] eller om man har en anden syntax.
Hvis I undrer jer over at jeg smider værdien over i en variabel, før jeg sammenliger 3x rs("fby"), er det fordi der kan opstå en mærkelig fejl, når man aflæser feltet med rs("felt-navn") flere gange..
Jeg ved ikke hvorfor fejlen opstår, men det er sket op til flere gange, også med forskellige personer..
Ved at smide værdien over i en variabel, sparer man også ressourcer..
Et andet eksempel:
I stedet for denne her:
if 1 + 2 > 3 or 1 + 2 > 5 or 1 + 2 > 8 then
bør man bruge:
tal = 1 + 2 if tal > 3 or tal > 5 or tal > 8 then
fordi tal så er en konstant, hvor "1 + 2" er en udregning som skal fortages hver gang..
<% strSQL = "Select * From skema Where telefon = '" & Request.Querystring("id") & "'" do while not rs.eof fby = LCase(rs("fby")) if instr("Andre,Chef,Kollega,", fby & ",") then response.write fby rs.movenext loop %>
<% strSQL = "Select * From skema Where telefon = '" & Request.Querystring("id") & "'" do while not rs.eof tmp = LCase(rs("text1")) if instr("Andre,Chef,Kollega,", tmp & ",") then response.write tmp rs.movenext loop %>
- "fby" er nu erstattet af "tmp" - rs("fby") er nu erstattet af rs("text1")
Jeg bruger jo LCase(..) som konverterer strenger til små bogstaver.. derfor skal det se sådan ud:
<% strSQL = "Select * From skema Where telefon = '" & Request.Querystring("id") & "'" do while not rs.eof tmp = rs("text1") if instr("andre,chef,kollega,", LCase(tmp) & ",") then response.write tmp rs.movenext loop %>
hmm den udskriver ikke noget ? jeg har prøvet at skrive den lidt om men kan ikke få den til at virke
<% strSQL = "Select * From skema Where telefon = '" & Request.Querystring("id") & "'" set rs200 = DataConn.Execute(strSQL) do while not rs200.eof tmp = rs200("text1") if instr("andre,chef,kollega,", LCase(tmp) & ",") then response.write tmp rs200.movenext loop %>
<% strSQL = "select * from skema where telefon = '" & request.querystring("id") & "' and fby in ('andre', 'chef', 'kollega')" set rs200 = DataConn.Execute(strSQL) do while not rs200.eof response.write rs200("text1") rs200.movenext loop %>
<% strSQL = "select * from skema where telefon = '" & request.querystring("id") & "' and fby in ('andre', 'chef', 'kollega')" set rs200 = DataConn.Execute(strSQL) do while not rs200.eof Response.write rs200("text1")& vbCrLf & "<br>" rs200.movenext loop %>
men der bliver meget store mellemrum fordi der er records uden tekst i.. hvordan får jeg den til at springe over der hvor 'text1' er tom ?
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.