Avatar billede chrisrj Forsker
17. oktober 2002 - 21:07 Der er 16 kommentarer og
1 løsning

Problem med at hive de rigtige dataer ud af excel...

Jeg har et excel-ark der ser sådan ud(simpel udgave):

            januar                    februar
kunder  forecast  budget      forecast  budget
data      data      data          data    data
...        ....        ....            ....      ....
...        ....        ....            ....      ....

Jeg bruger denne SELECT:
"SELECT * from kunde,"&maned

Når jeg prøver at hive f.eks. kunde nummer 4 ud, kommer kunde navnet korrekt ud, "forecast" og "budget" værdierne er fra kunde nummer 1?!?!?!

Hvad er der galt??

Det haster RET meget - jeg SKAL bruge det imorgen!!!
Avatar billede eagleeye Praktikant
17. oktober 2002 - 22:32 #1
Jeg har en løsning med et giver en udvidelse af dit regne ark...
Avatar billede chrisrj Forsker
17. oktober 2002 - 22:34 #2
ja??? hvad??? :)
Avatar billede eagleeye Praktikant
17. oktober 2002 - 22:41 #3
Ok jeg starter med regner arket..:
De forskellige ranges er at betrakte som individuelle tabeller i Access så januar er udvidet med KunderID som er giver under kunder

range: kunder = A1:BX
range: januar = C1:EX


A    B        C        D        E
id  kunder    kid  forecast    budget
1  Hansen      1      1000      1000
2  Jensen      2      2000      2000
3  Olesen      3      3000      3000
4  Eriksen    4      4000      4000
Avatar billede eagleeye Praktikant
17. oktober 2002 - 22:42 #4
Og så koden.. Så kan man nemlig JOIN'en kunder og januar/frebuar osv..:


Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & Server.MapPath("dfil.xls") & ";" & _
          "Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set oRS = Server.CreateObject("ADODB.Recordset")

oRS.Open "SELECT * FROM kunder LEFT JOIN januar ON kunder.ID = januar.KID", oConn, 1, 2

Response.Write "<table>"
while not (oRS.EOF OR oRS.BOF)
  Response.Write "<tr>"
  Response.Write "<td>" & oRS("kunder") & "</td>"
  Response.Write "<td>" & oRS("forecast") & "</td>"
  Response.Write "<td>" & oRS("budget") & "</td>"
 
  Response.Write "</tr>"
  oRS.MoveNext
wend
Response.Write "</table>"
Avatar billede eagleeye Praktikant
17. oktober 2002 - 22:43 #5
Hvis du vil havde tal ud for kunde nr 3 så kan oRS.Open være sådan her:

oRS.Open "SELECT * FROM kunder LEFT JOIN januar ON kunder.ID = januar.KID WHERE kunder.ID = 3", oConn, 1, 2
Avatar billede chrisrj Forsker
17. oktober 2002 - 22:44 #6
... så det vil sige at man kan IKKE lave det jeg vil, uden at have en reference?
Avatar billede eagleeye Praktikant
17. oktober 2002 - 22:47 #7
Det er den måde jeg har fået det til at virke...
HVis jeg bare skriver  "SELECT * from kunde,januar"

Så bliver det ikke rigtigt det den viser.
Avatar billede chrisrj Forsker
17. oktober 2002 - 22:48 #8
:)

Det samme her..

Det vil sige at du ikke ved om det er tilfældet eller ej?

Kan det være rigtigt?? Noget DU ikke ved?? ;)
Avatar billede eagleeye Praktikant
17. oktober 2002 - 23:00 #9
ja  :)

Ud fra den betraktning at en range/område svare til en tabel i access så skal man havde en kolonne som knytter de to tabeller sammen (relation). Og hvis det så er individueller tabeller så betyder det ikke at data i samme række i to forskellige områder høre samme... Derfor tror jeg det er nødvendig med en ID kolonne som binder dem sammen ...

Jeg vil lige prøve om jeg kan få det til at virkr med en JOIN.
Avatar billede chrisrj Forsker
17. oktober 2002 - 23:01 #10
ok.. jeg venter spændt!! ;)
Avatar billede chrisrj Forsker
17. oktober 2002 - 23:19 #11
Jeg fik liige en ide.

Hvad nu hvis man, dynamisk, importerede excel dokumentet i access og så hev dataerne ud derfra??

Ville det være en mulig løsning?
Avatar billede eagleeye Praktikant
17. oktober 2002 - 23:22 #12
Jeg har prøvet med DISTINCT/DISTINCTROW for kun at vælge een række men det går ikke, den viser hele tiden en masse andet også..

oRS.Open "SELECT DISTINCT * FROM kunder, februar", oConn, 1, 2

INNER JOIN virker heller ikke den vil også havde en relation mllem de to områder..
Avatar billede eagleeye Praktikant
17. oktober 2002 - 23:26 #13
Ja men jeg tror stadig at det giver samme problem med mindre man importere sådan at kolonne A(kunder) - B(forecast) - C(budget) kommer i en tabel for Januar og kolonnerne A(kunder) - D(forecast) - E(budget) for februar.
Avatar billede chrisrj Forsker
17. oktober 2002 - 23:28 #14
ja, og så kan det jo være det samme...

Jeg må så høre om det er en aceptabel mulighed at have "id" kolonner i regnearket.

Jeg siger tak for denne gang, Guru. ;)


Læg lige et svar, så kan du få dine points.
Avatar billede eagleeye Praktikant
17. oktober 2002 - 23:31 #15
Ok.. Jeg håber du kan komme vidre med det...
Avatar billede chrisrj Forsker
17. oktober 2002 - 23:34 #16
hehe, i det "rigtige" regneark er der 100 vis af ting der skal kunne vises + ca. 10 andre ark!!!

Det skal jeg dog ikke lave, i hvert fald ikke nu... :)
Avatar billede chrisrj Forsker
31. oktober 2002 - 14:10 #17
Jeg har lavet et nyt spørgsmål med et lidt andet indhold her : http://www.eksperten.dk/spm/277597
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