Just nu i M3-nätverket
Gå till innehåll

Försök att visa fler datatabeller på 1 sida


Patronbutiken

Rekommendera Poster

Patronbutiken

Har gått bet.. Igen

Jag försöker göra en sida där de olika produkttyperna skall visas i nya tabeller alt. rader mellan typerna.

QueryStringen baseras på artnr1, artnr2, osv. I databasen finns även produkttyp 1, 2 ,3 osv.

Det jag vill åstadkomma är:

Om det finns artiklar motsvarande artnr i querystring så skriv ut tabell alt.rad

Finns det ingen artikel, skriv inte ut.

Om det finns artiklar motsvarande fler produkttyper skall det skapas en ny tabell alt. ny rad.

Försökte med nedanst. kod men........

<%

 

If Rs("GRUPP") = 1 THEN

Response.Write "<table border=1 cellpadding=0 cellspacing=0 style=border-collapse: collapse bordercolor=#111111 width=100>"

Response.Write "<TR>"

Response.Write "<TD>"

Response.Write "Kompatibel"

Response.Write "</TD>"

Response.Write "</TR>"

Do Until RS.EOF

Response.Write "<TR>"

Response.Write "<TD>"

Response.Write "" & Rs.Fields ("artnr") & ""

Response.Write "</TD>"

Response.Write "</TR>"

Response.Write "</table>"

Response.Write "<BR>"

Rs.MoveNext

Loop

 

ELSE

If Rs("GRUPP") = 2 THEN

Response.Write "<table border=1 cellpadding=0 cellspacing=0 style=border-collapse: collapse bordercolor=#111111 width=100>"

Response.Write "<TR>"

Response.Write "<TD>"

Response.Write "Original"

Response.Write "</TD>"

Response.Write "</TR>"

Do Until RS.EOF

Response.Write "<TR>"

Response.Write "<TD>"

Response.Write "" & Rs.Fields ("artnr") & ""

Response.Write "</TD>"

Response.Write "</TR>"

Response.Write "</table>"

Response.Write "<BR>"

Rs.MoveNext

Loop

End If

End If

Rs.Close

conn.close %>

 

Den kodsnutten ville inte

 

Någon vänlig själ som har en susning ?

 

TPFH

Peter

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson

För att underlätta för oss andra att hjälpa dig så får du gärna skicka in felmeddelandet också.

 

Pröva med följande kod:

<% 

dim strGrupp

If Rs("GRUPP") = 1 Then
strGrupp = "Kompatibel"
Else
strGrupp = "Original"
End if

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100"">"
Response.Write "<tr>"
Response.Write "<td>"
Response.Write strGrupp
Response.Write "</td>"
Response.Write "</tr>"
Do Until RS.EOF
Response.Write "<tr>"
Response.Write "<td>"
Response.Write Rs.Fields ("artnr")
Response.Write "</td>"
Response.Write "</tr>"
Rs.MoveNext
Loop
Response.Write "</table>"
Response.Write "<br>"

Rs.Close
conn.close %>

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Varför gör du inte separata sqlfrågor? Alltså, först plocka upp alla produktgrupper, lägg i array.

Fråga sen för varje rad i arrayen om det finns artiklar. Om det finns - skriv ut, om det inte finns, gå till nsäta grupp i arrrayen och fråga på den istället.

 

Beroende på hur svår sqlsatsen blir och antal rader du plockar upp kan tiden för att göra 1 stor sql fråga kontra många små kanske vara överkomlig?

 

 

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Jag provade din kod men den visar fortf. bara artiklar med grupp 1, provade även detta

dim strGrupp

 

If Rs("GRUPP") = 1 Then

strGrupp = "Kompatibel"

Else

If Rs("Grupp") = 2 Then

strGrupp = "Original"

End if

End If

 

Med följden att samtliga artiklar visas :-(

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Detta vart lite för avancerat för mig, kan du lämna en närmare beskrivning?

 

Mvh

Peter

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

<%

nr1=Request.Querystring("nr1")

nr2=Request.Querystring("nr2")

nr3=Request.Querystring("nr3")

nr4=Request.Querystring("nr4")

nr5=Request.Querystring("nr5")

nr6=Request.Querystring("nr6")

nr7=Request.Querystring("nr7")

nr8=Request.Querystring("nr8")

 

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("./blabla/blabla.mdb")

sql = "SELECT * FROM artiklar where artnr = '" & nr1 & "' OR artnr = '" & nr2 & "' OR artnr = '" & nr3 & "' OR artnr = '" & nr4 & "' OR artnr = '" & nr5 & "' OR artnr = '" & nr6 & "' OR artnr = '" & nr7 & "' OR artnr = '" & nr8 & "' ORDER BY ARTNR ASC"

set rs = Server.CreateObject("ADODB.Recordset")

rs.Open sql, conn

 

%>

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson

Det känns som att jag inte har riktig koll på din applikation, men något i denna stil borde hjälpa dig..?

 

<%
nr1=Request.Querystring("nr1")
nr2=Request.Querystring("nr2")
nr3=Request.Querystring("nr3")
nr4=Request.Querystring("nr4")
nr5=Request.Querystring("nr5")
nr6=Request.Querystring("nr6")
nr7=Request.Querystring("nr7")
nr8=Request.Querystring("nr8")

strNr = nr1 & "," & nr2 & "," & nr3 & "," & nr4 & "," & nr5 & "," & nr6 & "," & nr7 & "," & nr8

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("./blabla/blabla.mdb")
sql = "SELECT * FROM artiklar WHERE artnr IN (" & strNr & ") ORDER BY GRUPP, ARTNR;"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn

if not rs.EOF then

If Rs("GRUPP") = 1 Then
strGrupp = "Kompatibel"
Else
strGrupp = "Original"
End if

nuvarandeGrupp = Rs("GRUPP")

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100"">"
Response.Write "<tr>"
Response.Write "<td>"
Response.Write strGrupp
Response.Write "</td>"
Response.Write "</tr>"

do until rs.EOF
If nuvarandeGrupp <> Rs("GRUPP")
If Rs("GRUPP") = 1 Then
strGrupp = "Kompatibel"
Else
strGrupp = "Original"
End if

nuvarandeGrupp = Rs("GRUPP")

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100"">"
Response.Write "<tr>"
Response.Write "<td>"
Response.Write strGrupp
Response.Write "</td>"
Response.Write "</tr>"

Response.Write "</table>"
Response.Write "<br>"

End If

Response.Write "<tr>"
Response.Write "<td>"
Response.Write Rs.Fields ("artnr")
Response.Write "</td>"
Response.Write "</tr>"
Rs.MoveNext
loop

Response.Write "</table>"
Response.Write "<br>"

end if

Rs.Close
conn.close %>

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Det är nog jag som rotat till det lite:-)

Ska försöka förlara lite bätter.

Den sidan jag skall göra heter produkt.asp till denna skickas olika artnr från förg. sida, ibland bara ett artnr iblan kanske 8 st.

Gruppnr används bara i databasen vid varje produkt och således inte i nån querystr.

Resultaten på produkt.asp skall vara enl.

 

If Grupp = 1 Then

Response.Write "Kompatibel"

här skall de olika produkterna listas som motsv. artnr i querystr. dock endast de som har siffra 1 i databasen.

Finns det inga artnr med gruppnr 1 skall inget skrivas

If Grupp = 2 then

Response.Write " Original"

här skall de olika produkterna listas som motsv. artnr i querystr. dock endast de som har siffra 2 i databasen.

Finns det inga artnr med gruppnr 2 skall inget skrivas

Osv osv.

Det skall alltså skapas en tabell eller fler med x antal rader beroende på antal artiklar motsv. grupp

 

Hoppas min förklaring håller i en domstol :-))

 

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson

Så här förstår jag dig:

På din sida produkt.asp tar du emot ett antal art.nr. Dessa art.nr kör du mot din tabell för att plocka ut och visa artiklar med motsvarande art.nr. Dock behöver art.numren inte tillhöra samma varugrupp varför du vill ha en avdelare, rent grafiskt sett, mellan de olika varugrupperna.

 

Är det rätt så långt?

 

Isf bör koden i mitt förra inlägg fungera för dig. Har du provat den? Dock skulle jag lägga till en extra tabell i db:n som namnger varje produkgrupp. Då skulle du slippa hårdkoda varje produktgrupps namn i koden.

 

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Uppfattningen är helt rätt Clas.

förra koden provade jag men jag fick lite huvudbry över kodsnutten.

sql = "SELECT * FROM artiklar WHERE artnr IN (" & strNr & ") ORDER BY GRUPP, ARTNR;"

Samt att det inte bara finns två alternativa varugrupper typ.

If Rs("GRUPP") = 1 Then

strGrupp = "Kompatibel"

Else

strGrupp = "Original"

End if

 

Annars har jag kommit en bit på väg hur du menar,

skall tillägga att jag inte använder sql utan en access-bas

 

Tack så länge

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson
förra koden provade jag men jag fick lite huvudbry över kodsnutten.

sql = "SELECT * FROM artiklar WHERE artnr IN (" & strNr & ") ORDER BY GRUPP, ARTNR;"

sql-satsen plockar ut alla artiklar med önskat art.nr. Artiklarna sorteras först efter den grupp de tillhör och sedan inom varje grupp efter artikelnr. På så sätt skrivs exempelvis alla artiklar ur grupp 1 ut först, sedan skrivs grupp 2 ut osv.

 

Samt att det inte bara finns två alternativa varugrupper typ.

Misstänkte det. Det var det jag menade med att lägga till en till tabell som håller koll på vad alla grupper heter. Den tabellen skulle kunna heta "grupper" och fälten "id" av typen autonumber och som är primärnyckel samt "gruppnamn" av datatypen text.

Sql-satsen skulle då kunna se ut så här isf:

sql = "SELECT A.*, G.gruppnamn FROM artiklar A "
sql = sql & "INNER JOIN grupper G ON A.grupp = G.id "
sql = sql & "WHERE A.artnr IN (" & strNr & ") ORDER BY A.grupp, A.artnr;"

Då får du ut artiklar som matchar art.numren i frågesträngen sorterade efter grupp och artikelnummer. I din kod kan du då loopa igenom posterna på samma sätt som jag skrev tidigare men att du slipper hårdkoda varje gruppnamn.

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Den skall vi prova i natt, när det lungnat sig lite och familjen sover.

 

Tack så länge

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Har nu provat nedanst. kod, Den lämnar inget felmeddelande men visar heller inga artiklar eller gruppnamn

KOD......

sql = "SELECT K.*, G.gruppnamn FROM KOMP K "

sql = sql & "INNER JOIN grupper G ON K.grupp = G.id WHERE K.artnr IN ('" & strNr & "') ORDER BY K.grupp, K.artnr;"

set rs = Server.CreateObject("ADODB.Recordset")

rs.Open sql, conn

%>

 

<%

If not rs.EOF then

 

If rs("grupp") = 1 Then

strGrupp = "Org"

ELSE

If rs("grupp") = 2 Then

strGrupp = "Komp"

ELSE

If rs("grupp") = 3 Then

strGrupp = "Ref"

End If

End If

End if

 

nuvarandeGrupp = Rs("grupp")

 

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100%"">"

Response.Write "<tr>"

Response.Write "<td width=""100%"">"

Response.Write strGrupp

Response.Write "</td>"

Response.Write "</tr>"

 

do until rs.EOF

If rs("grupp") = 1 Then

strGrupp = "Org"

ELSE

If rs("grupp") = 2 Then

strGrupp = "Komp"

ELSE

If rs("grupp") = 3 Then

strGrupp = "Ref"

End If

End If

 

 

nuvarandeGrupp = Rs("grupp")

 

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100%"">"

Response.Write "<tr>"

Response.Write "<td width=""100%"">"

Response.Write strGrupp

Response.Write "</td>"

Response.Write "</tr>"

 

Response.Write "</table>"

Response.Write "<BR>"

 

End If

 

Response.Write "<tr>"

Response.Write "<td>"

Response.Write Rs.Fields ("artnr")

Response.Write "</td>"

Response.Write "</tr>"

Rs.MoveNext

loop

 

Response.Write "</table>"

Response.Write "<BR>"

 

End If

 

Rs.Close

conn.close

%>

 

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson

Nej, det kan jag förstå att den inte gör. Det var lite fel i sql-satsen bland annat. Jag kan inte garantera att följande kod fungerar eftersom jag inte kan testköra, men jag har rättat till en del saker iaf. Principen är iaf rätt nu.

<%
nr1=Request.Querystring("nr1")
nr2=Request.Querystring("nr2")
nr3=Request.Querystring("nr3")
nr4=Request.Querystring("nr4")
nr5=Request.Querystring("nr5")
nr6=Request.Querystring("nr6")
nr7=Request.Querystring("nr7")
nr8=Request.Querystring("nr8")

strNr = nr1 & "," & nr2 & "," & nr3 & "," & nr4 & "," & nr5 & "," & nr6 & "," & nr7 & "," & nr8

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("./blabla/blabla.mdb")
set rs = Server.CreateObject("ADODB.Recordset")


'**********************************************
' Hämtar önskade artiklar sorterade efter
' grupptillhörighet och artikelnr.
'**********************************************
sql = "SELECT K.*, G.gruppnamn FROM KOMP K INNER JOIN grupper G ON K.grupp = G.id "
sql = sql & "WHERE K.artnr IN (" & strNr & ") ORDER BY K.grupp, K.artnr;"
rs.Open sql, conn

if not rs.EOF then

'**********************************************
' Behövs ej eftersom gruppnamnen ligger i db:n
'**********************************************
'If Rs("GRUPP") = 1 Then
'strGrupp = "Kompatibel"
'Else
'strGrupp = "Original"
'End if

nuvarandeGrupp = Rs("GRUPP")

Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100"">"
Response.Write "<tr>"
Response.Write "<td>"
Response.Write Rs("gruppnamn")
Response.Write "</td>"
Response.Write "</tr>"

do until rs.EOF
	'**********************************************
	' Kontrollerar om det är en ny grupp.
	'**********************************************
	If nuvarandeGrupp <> Rs("GRUPP") then

		'**********************************************
		' Behövs ej eftersom gruppnamnen ligger i db:n
		'**********************************************
		'If Rs("GRUPP") = 1 Then
		'	strGrupp = "Kompatibel"
		'Else
		'	strGrupp = "Original"
		'End if

		'**********************************************
		' Ändrar aktuell grupp, skriver ut html för
		' att stänga aktuell tabell och påbörja en ny.
		'**********************************************
		nuvarandeGrupp = Rs("GRUPP")

		Response.Write "</table>"
		Response.Write "<br>"
		Response.Write "<table border=""1"" cellpadding=""0"" cellspacing=""0"" style=""border-collapse: collapse"" bordercolor=""#111111"" width=""100"">"
		Response.Write "<tr>"
		Response.Write "<td>"
		Response.Write Rs("gruppnamn")
		Response.Write "</td>"
		Response.Write "</tr>"
	End If

	Response.Write "<tr>"
	Response.Write "<td>"
	Response.Write Rs.Fields ("artnr")
	Response.Write "</td>"
	Response.Write "</tr>"
	Rs.MoveNext
loop

Response.Write "</table>"
Response.Write "<br>"

end if

Rs.Close
conn.close %>

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Fick följande felkod:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'K.artnr IN (BJI642 ,CAN642,,,PA321020,,,)'.

/prodlista.asp, line 23

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Ska kanske nämna att artnr är av typ text i databasen,

om den kan va till nån hjälp

 

Länk till kommentar
Dela på andra webbplatser

Clas Ericson

Ja, då blir sql-satsen lite annorlunda. Följande stycke kan du byta ut.

strNr = nr1 & "','" & nr2 & "','" & nr3 & "','" & nr4 & "','" & nr5 & "','" & nr6 & "','" & nr7 & "','" & nr8

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("./blabla/blabla.mdb")
set rs = Server.CreateObject("ADODB.Recordset")


'**********************************************
' Hämtar önskade artiklar sorterade efter
' grupptillhörighet och artikelnr.
'**********************************************
sql = "SELECT K.*, G.gruppnamn FROM KOMP K INNER JOIN grupper G ON K.grupp = G.id "
sql = sql & "WHERE K.artnr IN ('" & strNr & "') ORDER BY K.grupp, K.artnr;"
rs.Open sql, conn

 

//Clas

 

Länk till kommentar
Dela på andra webbplatser

Patronbutiken

Den du...... :-))

Nu funkar det "HURRA" det är nu bara att bygga vidare.

Poäng till dig Clas. Tack förhjälpen

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...