Avatar billede jwulff Nybegynder
03. august 2005 - 21:44 Der er 14 kommentarer og
1 løsning

Udtræk af database

Hej, jeg har et spørgsmål ang. udtræk af en database. Jeg har nogle emner der er listet fx som:

ID    Emnenr    Navn    Mode

1      6000      XXX    HVG
2                XXX    AFV
3                XXX    AFV
4      8000      XXX    HVG

Hvor hver emne går fra den møder et emnenr felt med nyt emnenr. Dvs. at der kan være en masse under et emnenr som intet nr. har. Kan man lave udtræk Fra et fyldt felt indtil looped møder endnu et fyldt?

Ved ikke om det er helt forståeligt, men på forhånd tak for hjælpen :)

Mvh.
Jacob
Avatar billede busschou Praktikant
03. august 2005 - 21:47 #1
du kan evt vælge det hele og så tage det fra i loopet
--
set rs = conn.execute("select * from tabel order by id")
emnenr = ""
do while not rs.eof
  if emnenr = "" then
    emnenr = rs("Emnenr")
  elseif rs("Emnenr") <> "" then
    exit do
  end if
  rs.movenext
loop
---
Det kræver selvfølgelig at din struktur er i orden og at de ligger i ID orden som du har skrevet
Avatar billede busschou Praktikant
03. august 2005 - 21:51 #2
uden for if sætningen sætter du så den kode som kan skrive ud eller hvad du nu ønsker
hvis du ønsker en speciel størrelse kan du sætte den
---
set rs = conn.execute("select * from tabel order by id")
nr = 8000
emnenr = ""
do while not rs.eof
  if rs("Emnenr") = nr or emnenr = nr then
    if rs("Emnenr") <> nr then
      exit do
    else
      emnenr = nr
      //kode som udskriver osv
    end if
  end if
  end if
  rs.movenext
loop
---
Avatar billede busschou Praktikant
03. august 2005 - 21:53 #3
vrøvl, sådan her cirka
----
set rs = conn.execute("select * from tabel order by id")
nr = 8000
emnenr = ""
do while not rs.eof
  if rs("Emnenr") = nr or emnenr = nr then
    if rs("Emnenr") <> nr and rs("Emnenr") <> "" then
      exit do
    else
      emnenr = nr
      //kode som udskriver osv
    end if
  end if
  rs.movenext
loop
Avatar billede ksoren Nybegynder
03. august 2005 - 21:55 #4
Jeg ville designe databasen anderledes, og lave en kolonne som angiver owner, i stedet for Mode (hvis jeg har forstået din opbygning korrekt):

ID    Emnenr    Navn    Owner_id

1      6000      XXX    0
2                XXX    1
3                XXX    1
4      8000      XXX    0
Avatar billede busschou Praktikant
03. august 2005 - 21:58 #5
jeg ville hellere lave den så alle havde et emnenr hvis det skulle være
---
ID    Emnenr    Navn    Mode

1      6000      XXX    HVG
2      6000      XXX    AFV
3      6000      XXX    AFV
4      8000      XXX    HVG
---
for så kan du nøjes med at sige "Select * From tabel Where Emnenr = 6000"
Avatar billede jwulff Nybegynder
03. august 2005 - 22:02 #6
Ja ville jeg også bus, men det er noget der løbende skal kopieres fra excel, hvor det er bygget op som jeg skrev, så lige der kan der ikke gøres noget ved det :(

Du har angivet et nr. 8000, men det skal gerne være sådan at den automatisk tager de næste emner i databsen
Avatar billede busschou Praktikant
03. august 2005 - 22:05 #7
Du skrev du ønskede fra et fyldt til et andet
Når jeg har skrevet 8000 bør den give dig alt fra den støder på 8000 til næste gang den støder på et tal
--
Nu siger du den automatisk skal tage de næste også?
Hvis du vil have dem alle skal du jo bare løbe dem igennem
Eller har jeg misforstået noget
Avatar billede diggerx Nybegynder
03. august 2005 - 22:22 #8
Ville det ikke være bedre at ordne det når du indlæser fra regnearket, Sådan ca:

if not Emnenr = "" then
Emnenr ="din indlæsningsparameter"
end if
Avatar billede jwulff Nybegynder
03. august 2005 - 22:25 #9
Altså det skal overføres til access fra regneark, her tænkte jeg bare på at kopiere manuelt, jeg ved ikke om der er en nemmere metode?
Avatar billede jwulff Nybegynder
03. august 2005 - 22:27 #10
bus -> den skal udskrive det første emne nr. den støder på, og så skal det være muliget at klikke "næste" og så viser den så næste i rækken.

Du må undskylde hvis jeg ikke formulerede mig ordentlig :)
Avatar billede diggerx Nybegynder
03. august 2005 - 23:00 #11
Hvis du uploader det kan du behandle excel på samme måde som en database og læse det med sql se http://eksperten.dk/spm/315551

Alternativt kan du gemme det som tab separeret txt fil og indlæse ved hjælp af fso
Avatar billede jwulff Nybegynder
03. august 2005 - 23:12 #12
Tror det bliver for bøvlet, eftersom det skal kædes sammen med brugerlogins osv. som ligger i access?
Avatar billede busschou Praktikant
04. august 2005 - 07:32 #13
ok noget paging halløj, ved ski ikke hvad der er nemmest i din situation, men her er et forslag
----
' Køres første gang der vælges et nummer
if request.form("nummer") <> "" then
  set rs = conn.execute("select * from tabel order by id")
  nr = cint(request.form("nummer"))
  session("min") = ""
  session("max") = ""
  session("aktuel") = ""
  do while not rs.eof
    ' Køres første gang nummeret findes
    if rs("Emnenr") = nr or emnenr <> "" then
      ' Køres når der findes et nyt nummer (kræver at ID er i konstant rækkefølge!)
      if rs("Emnenr") <> nr and rs("Emnenr") <> "" then
        session("max") = rs("ID")-1
        exit do
      ' Køres første gang nummeret findes
      elseif min = "" then
        session("min") = rs("ID")
        session("aktuel") = session("min")
      end if
    end if
    rs.movenext
  loop
  ' udskriv den første
  set rs = conn.execute("select * from tabel Where ID = "&session("min"))
  response.write rs("ID")&" "&rs("Emnenr")&" "&rs("Navn")&" "&rs("Mode")
  udskrivLinks
' Køres ved klik på et link til næste side
elseif request.querystring("aktuel") <> "" then
  session("aktuel") = request.querystring("aktuel")
  udskrivLinks
end if

' metode til at udskrive links til næste sider
Sub udskrivLinks()
  count = 1
  for i=session("min") to session("max")
    if i=session("aktuel") then
      response.write count&" "
    else
      response.write "<a href=""default.asp?aktuel="&i&""">"&count&"</a>"
    end if
    count = count+1
  Next
End Sub
Avatar billede jwulff Nybegynder
08. september 2005 - 13:24 #14
busschou, smid et svar. Tak for hjælpen
Avatar billede busschou Praktikant
08. september 2005 - 13:31 #15
oki doki..det var så lidt :o)
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