Avatar billede ows Nybegynder
20. juni 2000 - 23:08 Der er 7 kommentarer

Matrix / tabel

Forestil dig en access database hvor du har en record der indeholder:

Løbenr <key>
Farve:  (fx. Rød gul blå)
Size:  (fx.  6  8  10  12)

Og du gerne vil have et skema der viser hvilke kombinationer der findes.

Farve  6  8  10  12
Rød    x      x    x
Gul        x  x    x
Blå    x  x  x

Antallet af farver x størrelser er ubekendte.
Avatar billede spacey Nybegynder
20. juni 2000 - 23:41 #1
Er det blot en algoritme eller et helt script du leder efter???

Jeg mener at der er en algot eller fortran algoritme til formålet i min "Fundememtal algorithms - The art of computer programming", og en sådan algoritme kan skrives om til asp uden for stort besvær.

Jeg tjekker lige Knuth's geniale bog, og vender tilbage.

//Jens
Avatar billede tanis Nybegynder
21. juni 2000 - 09:20 #2
Ville det ikke være lettere at lave en database som så sådanne ud

ID (Primær Nøgle)
Farve (tekst)
Size_6 True/False
Size_8 True/False
Size_10 True/false
Size_12 True/False

Hvis det ikke er lettere, så skriver jeg lige et eks. på hvordan man gør det andet, uden at kigge i en bog...
Avatar billede tanis Nybegynder
21. juni 2000 - 10:23 #3
Skal desværre på arbejde nu...
Men nu laver den da en tabel, det eneste der mangler er en kontrol for om det bliver skrevet i den rigtige række, men det skulle ikke være så svært at lave, hvis der ikke er andre som er kommet med et svar, når jeg får fri, skal jeg nok få det lavet?

<% Set MatrixData = DataAccess.Execute("Select* FROM Farver ORDER BY Farve, Size ASC;") %>
<TABLE BORDER="1" CELLPADDING="0" CELLSPACING="0" WIDTH="*" HEIGHT="*" HSPACE="0" VSPACE="0">
<% Do While Not MatrixData.EOF %>

<% If MatrixData("Farve") <> MatrixFarve Then %>
  <TR><TD><%= MatrixData("Farve") %></TD>
<% End If %>

<TD><%= MAtrixData("Size") %></TD>

<% MatrixFarve = MatrixData("Farve") %>
<% MatrixData.MoveNext %>

<% If Not MAtrixData.EOF Then %>
  <% If MatrixData("Farve") <> MatrixFarve Then %>
  </TR>
  <% End If %>
<% Else %>
  </TR>
<% End If %>

<% Loop %>

</TABLE>

<% MAtrixData.Close %>
Avatar billede ows Nybegynder
21. juni 2000 - 10:28 #4
Jeg leder efter et script.
Hvis databasen gennemkøres to gange kan det løses hvis jeg kan få lagt oplysningerne ind i den tigtige kasse.

Eks:
Første gennemløb viser størrelser horisontalt
Andet gennemløb viser farven samt størrelser

Problemer:
At få vist x i den rigtige celle på den rigtige linie

Hilsen OWS
Avatar billede tanis Nybegynder
21. juni 2000 - 11:06 #5
Her er løsningen:

<%@ LANGUAGE="VBSCRIPT" %>
<% ' http://www.eksperten.dk/spm.asp?id=19600 ' %>
<% Set DataAccess = Server.CreateObject("ADODB.Connection") %>
<% DataAccess.Open Session("Database.Global") %>
<% Set MatrixData = DataAccess.Execute("Select* FROM Farver ORDER BY Farve, Size ASC;") %>

<TABLE BORDER="1" CELLPADDING="0" CELLSPACING="0" WIDTH="*" HEIGHT="*" HSPACE="0" VSPACE="0">
<TR><TD>Farve</TD><TD>6</TD><TD>8</TD><TD>10</TD><TD>12</TD></TR>

<% Do While Not MatrixData.EOF %>
<% MatrixFarve = MatrixData("Farve") %>
<% MAtrixSize = 6 %>

<TR><TD><%= MatrixData("Farve") %></TD>

<% Do While Not MatrixData.EOF %>

  <% If MatrixFarve = MatrixData("Farve") Then %>
  <% Select Case (MatrixData("Size") - MatrixSize) %>
  <% Case 4 %>
    <TD></TD><TD><%= MatrixData("Size") %></TD>
  <% Case 6 %>
    <TD></TD><TD></TD><TD><%= MatrixData("Size") %></TD>
  <% Case Else %>
    <TD><%= MatrixData("Size") %></TD>
  <% End Select %>
  <% Else %><TR><% Exit Do End If %>

  <% MatrixFarve = MatrixData("Farve") %>
  <% MatrixSize = MatrixData("Size") %>
  <% MatrixData.MoveNext %>
<% Loop %>

<% If Not MatrixData.EOF Then MatrixData.MoveNext %>
<% Loop %>

</TABLE>

<% MatrixData.Close %>
<% DataAccess.Close %>

I kan hente det hele på http://www.danez.dk/eksperten/matrix.zip
Avatar billede tanis Nybegynder
21. juni 2000 - 11:24 #6
Mindre rettelse
<% MAtrixSize = 6 %> Skal være <% MAtrixSize = 4 %>

Kig på: http://www.danez.dk/eksperten/matrix.zip

Den er altid opdateret!


Avatar billede ows Nybegynder
21. juni 2000 - 19:36 #7
Koden mangler den variable del. F.eks hvis der i db indsættes en ekstra størrelse eller farve.

Hvis man som eks. Ser på ”Crosstab query” i access, så genererer den en query som nedenstående:


TRANSFORM Sum(Farver.ID) AS SumOfID
SELECT Farver.Farve
FROM Farver
GROUP BY Farver.Farve
PIVOT Farver.Size;

Det den mangler er at sætte informationerne rigtigt I tabelform

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