Avatar billede a-torsten Nybegynder
16. august 2001 - 11:06 Der er 14 kommentarer og
2 løsninger

Udræk fra database

Hejsa...

Her er mit problem

Jeg har i en database eom inde holder tabellerne
- Produkter
- Ordre

I Produkter er bla. felterne
- varenr
- vare_model

I Ordre er bla. felterne
- vare

i vare i tabellen Ordre ligger jeg mine data sådan her 123,343,2323.. osv.... Tallene er vare-numre

Hvordan trækker jeg data ud af databasen så der kommer en liste med vare_model (fra feltet produkter)ud fra de komma separede varenumre i Ordre..??

Hvis det ikke er til at forstå mit spørgsmå, så sig lige til...

-Anders
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:07 #1
Der skal vel gang i nogle relationer eller hva..??
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:09 #2
Øhh, jeg er ikke helt med, du har en string med varenumre separeret af komma, den skal så deles op, og bruges til udtræk af db?
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:12 #3
yep...

ordrenr = 1 indeholder måske vare = 12,234,212

Så skal jeg ud far de data trække
12 = toshiba
234 = Sony
212 = Bamse
ud fra feltet produkter

-Anders
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:15 #4
Ordrenummer = split(Strordrenr)
For i = 1 to Ubound(Ordrenummer)
Set rs = conn.execute(\"select * from varetabel where ordrenummer = \" & Ordrenummer(i))
Response.write ordrenummer(i) & rs(\"varenavn\")
Next
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:16 #5
sådan ca.
Du må lige selv tilpasse den, det var lidt hurtigt skrevet, men jeg håber at du har fået fat i ideen...
Avatar billede nuno Nybegynder
16. august 2001 - 11:18 #6
det er fordi din database er forkert designet - det vil være korrekt at normalisere databasen således at du får en tabel, der relaterer en ordre til flere varenumre

Fx

VareTabel
VareID    VareNavn
1        Sony
2        Toshiba


OrdreTabel
OrdreID  OrdreDato
1        15082001
2        16082001


VareOrdre
ForeignOrdreID    ForeignVareID  Antal
1                1              5
1                2              10
2                2              3



i henhold ovenstående 3 tabeller er der på ordre nr. 1 fra 15082001 bestilt 5 stk. Sony og 10 stk. Toshiba - mens der på ordre nr. 2 fra 16082001 er bestilt 3 stk. Toshiba.


Dette er den \"korrekte\" måde at designe databasen på - man normaliserer.

Det KAN da også godt lade sig gøre med et felt indeholdende en kommasepareret streng med varenumre - men god damn det bliver noget rod og besvær at administrere.

/nuno
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:21 #7
Ja, jeg vill nok også vælge nuno\'s version...
Men det andet kan også lade sig gøre
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:23 #8
Burde

    Set Con = Server.CreateObject(\"ADODB.Connection\")
    DBPath = \"DBQ=\" & server.mappath(\"db_info/database.mdb\")
    Con.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath

    Sql = \"SELECT * FROM Ordre Where Ordre_Nr = 1\"
        Set ordre =  Con.Execute(Sql)


    Do While Not ordre.EOF
   
    Ordrenummer = split(ordre(\"Ordre_vare\"))
For i = 1 to Ubound(Ordrenummer)
Set rs = conn.execute(\"select * from produkter where varenr = \" & Ordrenummer(i))
Response.write ordrenummer(i) & rs(\"varenavn\")
Next


ordre.MoveNext
    Loop
    Set ordre = nothing

%>


Ikke virke...

Det gør den ikke.....
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:29 #9
hvad er fejlen?
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:30 #10
                            Ordrenummer = split(ordre(\"Ordre_vare\"), \",\")
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:30 #11
den giver ingen fejl... den skriver bare ikke noget ud...

men to sek... tror jeg har gejlet den..

hang on....
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:33 #12
hvilken type felt er varenr?
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:35 #13
Finder du ud af det?
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:36 #14
<%
    Set Con = Server.CreateObject(\"ADODB.Connection\")
    DBPath = \"DBQ=\" & server.mappath(\"db_info/database.mdb\")
    Con.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath

    Sql = \"SELECT * FROM Ordre Where Ordre_Nr = 1\"
        Set ordre =  Con.Execute(Sql)


    Do While Not ordre.EOF
   
        ArrOrdre = Split(ordre(\"Ordre_vare\"),\",\")

  For t = LBound(ArrOrdre ) to UBound(ArrOrdre)
   
    Sql = \"SELECT * FROM produkter Where Varenr = \" & ArrOrdre (t)
       
    Set varelist =  Con.Execute(Sql)
            Do While Not varelist.EOF

            Response.write varelist(\"vare_model\") &\"<br>\"

            Varelist.MoveNext
            Loop
            Set Varelist = nothing
Next

    Ordre.MoveNext
    Loop
    Set ordre = nothing
%>


Den virker.....
Avatar billede a-torsten Nybegynder
16. august 2001 - 11:37 #15
Der er point til jer begge... Mikkel fordi han hjalp mig et rigtigt godt stykke hen af vejen, og nunu fordi han lige have mig en åbenbaring..

-Anders
Avatar billede mikkelk Nybegynder
16. august 2001 - 11:38 #16
Fedt, jeg smutter også nu, så det var jo meget godt ;-)
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