Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 01:24:42 - Patrik Wårdmark, i forum databaser, Tråden har 11 Kommentarer och lästs av 871 personer

Vet inte om det beror på att det är sent, men en sak står still i skalen nu :-)

Kodar i ASP mot en Access-databas. Jag vill köra en select-sats med ett specifikt ID på en post angiven, men vill förutom enbart den posten få ut även den post som kommer efter samt den post som kommer före i ordningen recordsetet.

Hur löser jag detta?


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 02:06:04 - Jonas Sjöblom

om du är säker på att du inte tar bort nått i databasen kan du ju istället ta
id -1, id, id +1

where id=" &id-1& " or id ="& id &" or id="& id+1 &"


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 10:41:22 - Andreas Hillqvist

Detta kanske kan vara till hjälp. ;o)
<code>
strSQL = "SELECT Main.*, (SELECT Max(Sub.ID)" & vbCrLf & _
" FROM TabellNamn AS Sub WHERE Sub.ID<Main.Id) AS Previous, " & vbCrLf & _
" (SELECT Min(Sub.ID)" & vbCrLf & _
" FROM TabellNamn AS Sub WHERE Sub.ID>Main.Id) AS Next" & vbCrLf & _
"FROM TabellNamn AS Main" & vbCrLf & _
"WHERE Main.ID = " & ID
</code>


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 15:12:18 - Patrik Wårdmark

Hmm.. Var nog för trött igår för frågan blev inte riktigt som jag ville :-)

Vi säger så här:
Jag har en massa poster i en tabell som tillhör flera olika kategorier. Med en select-sats tar jag ut alla poster som tillhör en av kategorierna.

I denna mängd vet jag i förväg att en post har id = 55.
Nu vill jag hoppa fram till denna post och sedan även kunna få fram ID numret på den posten före i RS samt posten efter i RS (och dessa poster är då helt okända och kan ha vilka ID som helst).

Det finns väl någon SEEK man köra på ett RS, eller?
Hur använder jag den i så fall?
Kan nån visa en kodsnutt för att hoppa fram till ID=55, sedan stega bakåt och ta den postens ID om det finns någon, samt stega framåt och ta den postens ID om det finns någon.

Jättetack på förhand.


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 16:15:46 - Andreas Hillqvist

Du gav så vag information i ditt inlägg. Kunde inte prestera en bättre fråga. Om du sorterar inlägg med t.ex dat och vill filtrera det till en kategori kan du skriva om fråga:
<code>
strSQL = "SELECT Main.*, (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.ID<Main.Id AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY DESC Sub.Datum) AS Previous, " & vbCrLf & _
" (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.ID>Main.Id AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY Sub.Datum) AS Next" & vbCrLf & _
"FROM TabellNamn AS Main" & vbCrLf & _
"WHERE Main.ID = " & ID
</code>


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 17:14:31 - Patrik Wårdmark

Jag är tydligen inte så bra på att förklara :-)

Men den sql-fråga du gav nu senast antar väl att föregående post alltid har ett lägre ID än den nuvarande och nästa post alltid har en ID högre än nuvarande?
Men om så inte alltid är fallet.

Ett exempel:

Om vi låtsas att denna sql-fråga:
"select id from tabell where kategori=9 order by rubrik asc"

genererar ett RS som innehåller följande ID på posterna:
3, 12, 68, 72, 55, 23, 15, 6

Nu låtsas vi att jag i förväg ENBART känner till att posten med ID=55 finns i denna kategori och jag vill ta reda på vilken post som ligger före resp. efter denna. OBS, jag har då i detta läge ingen aning om att det är posterna 72 resp. 23 jag söker. Är du med? :-)

Kan man då inte inom ett RS hoppa fram till posten med ID=55 och sen köra en RS.movenext resp. RS.moveprevious för att få fram posterna före och efter?
I så fall, hur hoppar jag fram till post med ID=55 utan att behöva loopa igenom hela RS till jag hittar den med ID=55?
Jag vet att nåt som väl heter RS.seek kanske kan användas då, men hur skriver man?


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 18:30:06 - Andreas Hillqvist

Denna frågan bör fungera
<code>
strSQL = "SELECT Main.*, (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.ID<Main.Id AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY Sub.Rubrik DESC) AS Previous, " & vbCrLf & _
" (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.ID>Main.Id AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY Sub.Rubrik ASC) AS Next" & vbCrLf & _
"FROM TabellNamn AS Main" & vbCrLf & _
"WHERE Main.ID = " & 55
</code>


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-23 19:04:29 - Patrik Wårdmark

Men samma problem finns väl här.
Din sats gör en jämförelse att id på Previous ska vara mindre än id på Main. I mitt exempel ovan visade jag att id även kan vara större på den föregående posten.

Likaså gör du jämförelse att id på Next ska vara större än id på Main, men så är heller inte alltid fallet...

Eller är detta en omöjlig uppgift kanske att lösa :-)


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-24 13:18:44 - Janne Hentschel

Jag antar att du använder ADO. Jag har dock en fungerande lösning i DAO som kanske går att överföra till ADO. Den använder sig av SEEK-funktionen och förutsätter att du bara öppnar EN tabell (Main).

<code>Dim wsp As DAO.Workspace
Dim jdb As DAO.Database
Dim rst As DAO.Recordset

'Skapa Jet workspace
Set wsp = CreateWorkspace("JetWorkspace", "admin", "", dbUseJet)

'Öppna databas
Set jdb = wsp.OpenDatabase(strConn, False, False)

'Öppna tabellen och sätt index
Set rst = jdb.OpenRecordset("MAIN", dbOpenTable)
rst.Index = Indexnamn

'Sök posten
rst.Seek "=", "55"

'Om träff - flytta till föregående post
If Not Table.NoMatch Then
rst.MovePrevious
Else
MsgBox "Ingen träff"
End If
</code>


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-24 14:32:40 - Patrik Wårdmark

Har aldrig använt seek tidigare så jag kanske fattat nåt fel i koden, men när jag skriver enligt nedan får jag detta felmeddelande: "Aktuell provider stöder inte det nödvändiga gränssnittet för indexfunktionen"

<%
sokid=55

SQLstring = "Select id from bilder where kategori=9 order by tidpunkt desc"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQLstring, Conn,3,1

RS.index = id

RS.seek "=", sokid
if not table.nomatch then
RS.moveprevious
if not RS.bof then
prev_id=RS("id")
end if
end if

RS.Close
Set RS = Nothing
%>


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-24 22:14:51 - Andreas Hillqvist

Du har rätt... Tänkte inte på det. Sak ju inte vara ID i den satsen utan fältet du sorterar på. ;o)

<code>
strSQL = "SELECT Main.*, (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.Rubrik<Main.Rubrik AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY Sub.Rubrik DESC) AS Previous, " & vbCrLf & _
" (SELECT TOP 1 Sub.ID" & vbCrLf & _
" FROM TabellNamn AS Sub" & vbCrLf & _
" WHERE Sub.Rubrik>Main.Rubrik AND Sub.Kategori=Main.Kategori" & vbCrLf & _
" ORDER BY Sub.Rubrik ASC) AS Next" & vbCrLf & _
"FROM TabellNamn AS Main" & vbCrLf & _
"WHERE Main.ID = " & 55

</code>
Vilket borde fungera. ;-)


Svara

Sv: Få ut id från posten före och efter i ett RS?

Postades av 2003-02-26 19:11:50 - Patrik Wårdmark

Tack, tack!
Fungerar finfint nu! :-)


Svara

Nyligen

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 879
27 965
271 774
909
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies