Avatar billede hundevennen Nybegynder
13. november 2009 - 12:14 Der er 7 kommentarer og
1 løsning

Hjælp til IF sætning

jeg vil gerne hente data fra min sqldatabase ud i et felt.
Data består af tal og felterne i databasen hedder c1, c2, c3 osv - til c34.
Data i felterne kan være 0 eller 1 i felt 1 - 0 eller 30 i felt 30 o.s.v.
Det jeg gerne er at hente data ud fra de felter der ikke står 0 i og sætte dem ind i en tabel, så der i et felt f.eks står
1,3,6,10,24.

Det kan formentlig gøres med en IF sætning, - men det har jeg ikke helt styr på.
IF len(DBSet(c1))= 0 then
response.write ""
else
response write""& trim(DBSet(c1)) &","

men dette virker ikke
Avatar billede softspot Forsker
13. november 2009 - 12:26 #1
Hvis nu vi antager at du har udtrukket alle felter fra tabellen i et recordset (her kaldt rs), så vil jeg mene dette kunne gøre det:

do while not rs.eof
  tmp = ""
  for each fld in rs.fields
    if fld.value > 0 then
      if len(tmp) > 0 then
        tmp = tmp & ","
      end if
      tmp = tmp & fld.value
    end if
  next
  response.write tmp
  rs.movenext
loop
Avatar billede hundevennen Nybegynder
16. november 2009 - 10:11 #2
jeg er ikke helt med på dit loop.
Det drejer sig jo kun om et recordset.
Min sql sætning ser således ud:
SELECT * FROM tabel where id = (select max(id)from tabel)"

men det du vil er altså at lave et loop i recordsettet?
jeg har prøvet med den du har skrevet, men det dør?
Avatar billede hundevennen Nybegynder
16. november 2009 - 10:42 #3
Softspot - den døede ikke helt, men den lavede et loop på flere sider, så den duer ikke.
endvidere - der er 45 felter i databasen, men dem jeg skal ha noget ud af er felt 14 - 45 ikke de første 14.
Avatar billede softspot Forsker
16. november 2009 - 11:02 #4
Det er jo ligegyldigt om koden er klar til at lave operationen på flere rækker i et recordset. Det gør den jo ikke mindre i stand til at gøre det på én række.

Du er nød til at være lidt mere specifik mht. hvad der sker i løkken, for jeg har svært ved at tyde hvor problemet evt. kunne være, ud fra det du skriver.

Hvis du kun vil have fat i nogle bestemte felter, kan du lægge en betingelse yderligere ind i løkken, så den checker på navnet (hvilket burde være overkommeligt med den navngivning du har givet udtryk for at du benytter).

Eksempel:

do while not rs.eof
  tmp = ""
  for each fld in rs.fields
    if cint(right(fld,2)) >= 14 and cint(right(fld,2)) <= 45 then
      if fld.value > 0 then
        if len(tmp) > 0 then
          tmp = tmp & ","
        end if
        tmp = tmp & fld.value
      end if
    end if
  next
  response.write tmp
  rs.movenext
loop

Dette vil nturligvis kun fungere hvis dine felter er navngivet efter reglen c<tal>, f.eks. c10, c11, c12 osv. op til c44, c45.
Avatar billede johnstigers Seniormester
07. juni 2010 - 17:32 #5
Feedback?
Avatar billede hundevennen Nybegynder
26. juli 2010 - 10:54 #6
softspot læg et svar
Avatar billede softspot Forsker
26. juli 2010 - 17:47 #7
Vær så artig!
Avatar billede softspot Forsker
26. juli 2010 - 21:36 #8
Tak for point :-)
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