Avatar billede l_otto Nybegynder
06. november 2006 - 14:48 Der 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..

håber I kan hjælpe
Avatar billede nerosdk71 Nybegynder
06. november 2006 - 15:04 #1
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.
Avatar billede l_otto Nybegynder
06. november 2006 - 15:12 #2
ok det virkede ikke helt.

altså den skal udskirve det der står i feltet 'text1' hvis feltet 'fby' er = 'Andre'or
'Kollega'or 'Chef'
Avatar billede nerosdk71 Nybegynder
06. november 2006 - 15:28 #3
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.

Skriv endelig igen hvis det ikke virker.
Avatar billede l_otto Nybegynder
06. november 2006 - 15:47 #4
den virker ikke helt men der er den rigtige vej
Avatar billede nerosdk71 Nybegynder
06. november 2006 - 15:56 #5
hvad går galt?
Avatar billede l_otto Nybegynder
06. november 2006 - 16:03 #6
if rs["fby"]='Andre' or Rs["fby"]='Kollega' or RS["fby"]='chef' then

virker ikke
Avatar billede thesurfer Nybegynder
06. november 2006 - 16:41 #7
Eksempel:

do while not rs.eof
  fby = rs("fby")
  if instr("fby,chef,kollega,", fby & ",") then response.write fby
rs.movenext
loop
Avatar billede thesurfer Nybegynder
06. november 2006 - 16:44 #8
Eller den lange udgave:

if fby = "fby" or fby = "chef" or fby = "kollega" then response.write fby

Så vidt jeg ved, er ASP case-insensitive..

Dvs, "Test" = "tEst" = "teSt" = "tesT"

Eller skal man gøre sådan her:

do while not rs.eof
  fby = LCase(rs("fby"))
  if instr("andre,chef,kollega,", fby & ",") then response.write fby
rs.movenext
loop

Den lange udgave: if fby = "andre" or fby = "chef" or fby = "kollega" then response.write fby


Jeg lagde lige mærke til, at jeg kom til at skrive "fby," i stedet for "andre," i 06/11-2006 16:41:24..
Avatar billede thesurfer Nybegynder
06. november 2006 - 16:47 #9
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..
Avatar billede l_otto Nybegynder
06. november 2006 - 19:20 #10
hmm jeg kan ikke helt få den til at virke..

det er feltet 'text1' der skal udskrives ?

<% 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
%>
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:43 #11
Sådan:

<% 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")
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:45 #12
Doh.. :-)

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
%>

Ændringer:
- tmp = rs("text1")
- "andre,chef,kollega,"
- LCase(tmp) & ","
Avatar billede l_otto Nybegynder
06. november 2006 - 19:52 #13
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
%>
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:02 #14
Bare for at være sikker:

rs200("text1") indeholder enten "andre", "chef" eller "kollega"

Korrekt?
Avatar billede l_otto Nybegynder
06. november 2006 - 20:10 #15
nej :-) sorry

skema er tabellen

og der er felterne
fby
text1

jeg skal bare have udskevet alt fra skema Where telefon = '" & Request.Querystring("id") & "'"
og fby= Chef or Andre or Kollega
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:13 #16
Ahh.. hehe.. :-)

Sådan:

sql = "select * from skema where telefon = '" & request.querystring("id") & "' and fby in ('andre', 'chef', 'kollega')"

og så bare: response.write rs200("text1")

Så behøver du ikke at sammenligne "fby" med "andre", "chef", eller "kollega"..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:14 #17
Forklaring på "IN"-delen: http://www.w3schools.com/sql/sql_in.asp
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:15 #18
Dvs:

<% 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
%>
Avatar billede l_otto Nybegynder
06. november 2006 - 20:18 #19
der var den jo
Avatar billede l_otto Nybegynder
06. november 2006 - 20:21 #20
nu har jeg denne her

<% 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 ?
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:36 #21
Det kan gøres på mange måder:

if rs200("text1") <> "" then Response.write rs200("text1")& vbCrLf & "<br>"

if len(rs200("text1")) > 0 then Response.write rs200("text1")& vbCrLf & "<br>"

if not isnull(rs200("text1")) then Response.write rs200("text1")& vbCrLf & "<br>"

osv.. :-)
Avatar billede l_otto Nybegynder
06. november 2006 - 20:40 #22
meget smukt arbejde 1000 tak kom med svar :-) hvad siger du til den vi har kørende med at skrive koden om :-)?
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:45 #23
Jeg har gang i 5-6 spørgsmål lige nu, men skal nok kigge på "omskrivning af kode"-spørgsmålet når jeg får tid.. :-)

- Svar
Avatar billede l_otto Nybegynder
06. november 2006 - 20:49 #24
he he du er efterspurt, men du gør det også godt.. jeg er vågen det meste af aften..
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:50 #25
Takker for points :-)

Så kan det være at vi ses i aften.. :-)
Avatar billede l_otto Nybegynder
06. november 2006 - 20:57 #26
jeg venter  tålmodigt :-)
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