Avatar billede OWB Novice
14. november 2008 - 21:12 Der er 4 kommentarer og
1 løsning

Første post i Access DB med "fast" Where værdi

Hejsa

Har kigget mig lidt om i håb om hjælp til følgende, men umiddelbart uden held.
Jeg ønsker at hente nyeste forekomst i en bestemt tabel i min Access database, hvor ”where” parameteren er foruddefineret. Jeg har forsøgt mig med følgende kode, som tilsyneladende kun virker, hvis værdien i ”maskine” kolonnen kun eksisterer den samme gang i kolonnen. Så snart maskinnummeret er registreret mere end én gang, er den returnerede værd for varenummer feltet tom.

<%
dim rs
    dim cn
    dim varenummer
   
    set cn = server.CreateObject("Adodb.Connection")
    set rs = server.CreateObject("Adodb.Recordset")
   
    cn.Open conn
    rs.open "Select TOP 1 * From opstilling Where maskine=2",cn
    if not rs.eof then
       
ordre = rs.fields("ordrenummer")
       
response.Write(ordre) & "test tekst"       
       
    End If
    rs.close
    cn.close
    set rs = nothing
    set cn = nothing
%>

Tabellen opstilling indeholder kolonnerne:
id = autonummereret primærnøgle
maskine = nummeret på en given maskine (1 til 10) – kan forekomme flere gange
vare = et varenummer – kan forekomme flere gange
ordrenummer = et ordrenummer – udgangspunktet er at dette er unikt
tidspunkt = tidspunktet for opstillingen som langt datoformat DD-MM-ÅÅÅ TT:MM:SEC – i praksis vel unikt

Med håb om hjælp, hilsner Ole
Avatar billede jansangill Nybegynder
15. november 2008 - 01:53 #1
set conn = server.CreateObject("ADODB.Connection")
conn.open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& server.MapPath("db.mdb")

sql = "Select TOP 1 * From opstilling Where maskine=2 ORDER BY id"
Set rs = conn.Execute (sql)
if not rs.eof then response.Write rs("ordrenummer")& "test tekst"     

conn.Close
SET conn = NOTHING


' Hvis der er data burde dette hente det ud -  er dog ikke helt sikker på dit spørgsmål:)
Avatar billede OWB Novice
17. november 2008 - 12:36 #2
Hejsa

Først og fremmest tak for din kommentar

Jeg har rodet en del rundt med det siden mit første indlæg, og også forsøgt mig med din kode, dog uden held.

Jeg er kommet frem til (sikkert ganske klart for de som ikke er novice som mig i denne boldgade), at min fejl skyldes, at "maskine" kolonnen databasemæssigt er sat op som et tekstfelt. Når jeg retter feltet til at være et numerisk felt, virker både dit og mit forslag.

Grunden til at "maskine" kolonnen i databasen er registreret som et tekstfelt er, at der findes en maskine som benævnes 7A. Det fremgår beklageligvis ikke af mit første indlæg. :-(

Findes der en måde hvor på denne søgning kan baseres på det tekstfelt, som maskinnummeret / navnet er registreret i, i databasen, eller vil måden at løse det på være, at tilføje endnu en kolonne til tabellen, hvor der for hver maskine er registreret en tal værdi? Det vil sige noget i retning af:

maskinkode    maskinnummer
1            1
2            2
3            3
4            4
5            5
6            6
7            7
8            7a
9            8
10            9
11            10

Jeg vil selvfølgelig foretrække at det kunne løses uden og dermed i nuværende form af databasen.

Hilsner Ole
Avatar billede jansangill Nybegynder
17. november 2008 - 12:46 #3
Hej Ole

Det SKAL kunne lade sig gi med et tekstfelt også.

Altså man kan uden problemer gøre dette:

SELECT * FROM tabel WHERE tektsfelt='123456ac'


Bemærk jeg behandler tekstfelt som en string ved at gøre dette: ''

Så måske dit vil virke hvis du gør dette:


sql = "Select TOP 1 * From opstilling Where maskine='2' ORDER BY id"
Avatar billede OWB Novice
17. november 2008 - 17:13 #4
He, mange tak, det var præcis det der skulle til :-)

Smider du et svar?
Avatar billede jansangill Nybegynder
17. november 2008 - 17:56 #5
Svar
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