Avatar billede annettef Nybegynder
27. januar 2005 - 11:10 Der er 8 kommentarer og
1 løsning

Hente poster fra en tabel i db ud fra varenr i anden tabel i db

Hej

Jeg har en stort problem. Jeg har en database hvor i jeg har forskellige tabeller. Jeg har en tabel der hedder ordrelinie - i den tabel er der opysninger (vareid) om hvilke varer en kunde har bestilt. Dette vareid svarer så til en vare i en tabel der hedder vare.

Nu er mit problem så at jeg gerne vil udskrive en liste over de varer en kunde har bestilt. Men jeg ved ikke hvordan jeg kan hente oplysningerne i varetabellen ud fra de vareid der findes i tabellen ordrelinie.

Min kode til siden hvorpå oplysningerne skal udskrives
::::KODE::::
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--#INCLUDE FILE="config.inc"-->
<!--#INCLUDE FILE="level2.inc"-->
<!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil-->
<html>
<head>
<title>DATRONIC APS</title>
<Link Rel="stylesheet" href="datronic.css" Type="text/css" >
<!-- JavaScript funktion til at omdanne tekst links til knappe links -->
<script language="JavaScript">
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
    margin-left: 4px;
    margin-top: 0px;
}
.style1 {color: #FFFFFF}
.style3 {
    color: #000098;
    font-weight: bold;
}
-->
</style></head>
<body>
<br>
<table width="670" border="0" align="left">
  <!--Hovedtabel start-->
  <tr>
    <td height="18" valign="middle" bgcolor="#545DB9"><span class="style1">Ordreindhold</span></td>
  </tr>
    <tr valign="top">
    <td colspan="2">Tilbage til ordreoversigt - <a href="ordre_oversigt.asp" target="tekst">klik her...</a><hr>
      </div></td>
  </tr>
  <tr><td>
<%  intOrderID = request.form("ordre1")
strSQL = "SELECT * FROM ordre WHERE orderID = " & intOrderID
Set rs1 = Conn.Execute(strSQL)
%>
<%
Response.Write "<table width='660' border='0' cellspacing='0' cellpadding='0'>"
Response.Write "<tr  bgcolor='#F2F2FA'>"
Response.Write "<td width='200' colspan='2'><p>Kundeoplysninger</p></td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Ordrenummer</td>"
Response.Write "<td>"
Response.Write "<p>" & rs1("orderID") & "</p>"
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Navn</td>"
Response.Write "<td>"
Response.Write rs1("fNavn") & "&nbsp;" & rs1("eNavn")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Adresse</td>"
Response.Write "<td>"
Response.Write rs1("adresse1")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Postnr og By</td>"
Response.Write "<td>"
Response.Write rs1("postnr") & "&nbsp;" & rs1("city")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Land</td>"
Response.Write "<td>"
Response.Write rs1("land")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>&nbsp;</td>"
Response.Write "<td>&nbsp;</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>E-mail</td>"
Response.Write "<td>"
Response.Write rs1("email")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Telefon</td>"
Response.Write "<td>"
Response.Write rs1("telefon")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>&nbsp;</td>"
Response.Write "<td>&nbsp;</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Leveringsadresse<br>(hvis anden end kundeadr.)</td>"
Response.Write "<td>"
Response.Write rs1("shipAdresse")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>&nbsp;</td>"
Response.Write "<td>&nbsp;</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>Betalingsmåde</td>"
Response.Write "<td>"
Response.Write rs1("betaling")
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td width='200'>&nbsp;</td>"
Response.Write "<td>&nbsp;</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "</table>"
%>
  </td>
  </tr>
  <tr>
  <td>
  <%
strSQL = "SELECT * FROM ordrelinie WHERE orderID = " & intOrderID
Set rsProd = Conn.Execute(strSQL)

set rsProdInfo = Server.CreateObject("ADODB.Recordset")
rsProdInfo.Open "vare", adOpenStatic, adLockOptimistic, adCmdTable

            intTotal = 0

            rsProd.MoveFirst
            while not rsProd.EOF
                rsProdInfo.MoveFirst
                rsProdInfo.Find "vareid = " & rsProd("vareid")
                intProdID = rsProd("vareid")
                strProdName = rsProdInfo("titel")
                intPrice = formatNumber(rsProdInfo("pris"), 2)
                intQuant = rsProd("antal")
                intProdVaegt = rsProdInfo("vaegt")
                  longVaegt = longVaegt + (intQuant * intProdVaegt)
                intExtPrice = formatNumber((intPrice * intQuant), 2)
                intTotal = intTotal + intExtPrice
%>


<table width="660" border="0" cellspacing="0" cellpadding="0">
<tr  bgcolor="#F2F2FA">
<td width="200" colspan="5"><p>Ordreindhold</p></td>
</tr>
<tr>
                    <td width="13%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= intQuant %></font></td>
                    <td width="13%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= intProdID %></font></td>
                    <td width="44%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= strProdName %></font></td>
                    <td width="15%" align="right" valign="middle" nowrap><font face="Verdana" size="1"><%= intPrice %></font></td>
                    <td width="15%" align="right" valign="middle" nowrap><font face="Verdana" size="1"><%= intExtPrice %></font></td>
                </tr>
                <input type="hidden" value="<%=intProdVaegt %>" name="intProdVaegt">
                <input type="hidden" name="strOrderItem" value="<%= intProdID %>,<%= intQuant %>">
                <input type="hidden" value="<%= longVaegt %>" name="longVaegt">
                <input type="hidden" name="intQuant" value="<%= intQuant %>">
                <input type="hidden" name="StrProdName" value="<%= strProdName %>">
                <input type="hidden" name="intPrice" value="<%= intPrice %>">
                <input type="hidden" name="intExtPrice" value="<%= intExtPrice %>">
                <input type="hidden" name="intProdID" value="<%= intProdID %>">
           
               
               
<%
                rsProd.MoveNext
            wend                       
%>


</table>
  </td>
  </tr>
</table>
</body>
</html>
::::SLUT::::

Jeg har prøvet at sætte dette stykke kode ind - men det virker ikke
::::KODE::::
set rsProdInfo = Server.CreateObject("ADODB.Recordset")
rsProdInfo.Open "vare", adOpenStatic, adLockOptimistic, adCmdTable

            intTotal = 0

            rsProd.MoveFirst
            while not rsProd.EOF
                rsProdInfo.MoveFirst
                rsProdInfo.Find "vareid = " & rsProd("vareid")
                intProdID = rsProd("vareid")
                strProdName = rsProdInfo("titel")
                intPrice = formatNumber(rsProdInfo("pris"), 2)
                intQuant = rsProd("antal")
                intProdVaegt = rsProdInfo("vaegt")
                  longVaegt = longVaegt + (intQuant * intProdVaegt)
                intExtPrice = formatNumber((intPrice * intQuant), 2)
                intTotal = intTotal + intExtPrice
%>
::::SLUT::::

Jeg får denne fejl: ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/shop/admin/ordre_oversigt2.asp, line 134

Hvad er det jeg gør forkert? Håber der en nogen der kan hjælpe mig, for jeg ander ikke hvodan jeg skal løse problemet!

/Annette

P.S. Jeg opretter forbindelse til min database via en include fil
Avatar billede fennec Nybegynder
27. januar 2005 - 11:13 #1
Hvilken linje er 134??
Avatar billede annettef Nybegynder
27. januar 2005 - 11:19 #2
Det er denne

129  <%
130  strSQL = "SELECT * FROM ordrelinie WHERE orderID = " & intOrderID
131  Set rsProd = Conn.Execute(strSQL)
132
133  set rsProdInfo = Server.CreateObject("ADODB.Recordset")
134  rsProdInfo.Open "vare", adOpenStatic, adLockOptimistic, adCmdTable
135
136            intTotal = 0
137
138            rsProd.MoveFirst
Avatar billede fennec Nybegynder
27. januar 2005 - 17:59 #3
Det ser ud som om der mangler en database forbindelse:

rsProdInfo.Open "vare", Conn, adOpenStatic, adLockOptimistic, adCmdTable
Avatar billede annettef Nybegynder
28. januar 2005 - 08:31 #4
Hej - jeg har først nået at få set på dit forslag her til morgen

Nu har jeg tilføjet en databaseforbindelse, men får så denne fejl i stedet for
ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/shop/admin/ordre_oversigt2.asp, line 134

Linie 134
129  <%
130  strSQL = "SELECT * FROM ordrelinie WHERE orderID = " & intOrderID
131  Set rsProd = Conn.Execute(strSQL)
132
133  set rsProdInfo = Server.CreateObject("ADODB.Recordset")
134  rsProdInfo.Open "vare", conn, adOpenStatic, adLockOptimistic, adCmdTable
135
136            intTotal = 0
137
138            rsProd.MoveFirst
139            while not rsProd.EOF
140            rsProdInfo.MoveFirst
Avatar billede fennec Nybegynder
28. januar 2005 - 08:35 #5
hvad så hvis vi dropper ADODB.Recordset

set rsProdInfo ....
rsProdInfo.open ...

ændres til:
set rsProdInfo = conn.execute("vare")

Ligger "vare" som en "stored procedure"/funktion på databasen? Ellers ved den jo ikke hvad den skal bruge kommandoen til :o)
Avatar billede annettef Nybegynder
28. januar 2005 - 08:47 #6
Øøøh forstår ikke helt det med [Ligger "vare" som en "stored procedure"/funktion på databasen?]

Men hvis jeg skifter de to linier ud med ændringen [set rsProdInfo = conn.execute("vare")] så får jeg denne fejl
Microsoft JET Database Engine error '80040e29'

Rowset does not support scrolling backward.

/shop/admin/ordre_oversigt2.asp, line 141

Linie 141
129  <%
130  strSQL = "SELECT * FROM ordrelinie WHERE orderID = " & intOrderID
131  Set rsProd = Conn.Execute(strSQL)
132
133  set rsProdInfo = conn.execute("vare")
134
135
136            intTotal = 0
137
138            rsProd.MoveFirst
139            while not rsProd.EOF
140                rsProdInfo.MoveFirst
141                rsProdInfo.Find "vareid = " & rsProd("vareid")
142                intProdID = rsProd("vareid")            while not rsProd.EOF
Avatar billede fennec Nybegynder
28. januar 2005 - 09:00 #7
Så skal du bruge et ADODB.Recordset....

Der er flere forskellige måder at trække data ud. Enten kan man bruge en SQL-sætning ("select * from ...."), eller man kan kalde en funktion på databasen, hvor selecten ligger i. Da conn.execute("vare") virkede ligger funktionen på databasen, ellers ville den have fejlet.

Prøv med:
set rsProdInfo = Server.CreateObject("ADODB.Recordset")
rsProdInfo.Open "vare", conn, 2, 2
Avatar billede annettef Nybegynder
28. januar 2005 - 09:04 #8
Super - nu virker det!

Tusind tak skal du ha'

Læg et svar så du kan få point.

/Annette
Avatar billede fennec Nybegynder
28. januar 2005 - 09:07 #9
.o) <-- One Eyed Jack
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