Toon posts:

[ASP] multiselect listbox in database

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoi

ik zit met het volgende probleem. Ik heb een multiselect listbox gemaakt. Deze wordt gevuld door de gegevens uit een database te halen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method="post" action="Hoofdafd2.asp">

Naam nieuwe medewerker<br>
<input name="Naam" value="<%=oRS.Fields("naam").value%>"
 
size="20"><br><br>
<SELECT multiple NAME="programma">   
   <%Do Until oRS2.EOF%>
      <OPTION value><% =oRS2.Fields("prognaam").value %></OPTION>
   <%oRS2.movenext  
   Loop %>
</SELECT>

<input name="Mednr" type="hidden" value=<%=Mednr%>>
<input type="submit" name="action" value="verzenden">
<INPUT type=reset>

</form>

De gebruiker kan dan meerdere keuzes maken. Als de gebruiker dan op verzenden klikt dan wordt er een ander pagina geopend en daar moeten de gegevens in de database worden weggeschreven.
code:
1
2
3
4
5
6
7
8
9
10
11
progs = Split(Request.Form("programma"),",")
For Each prog In progs
  sql = "SELECT prognr FROM programma AS prognummer WHERE prognaam='" &  
             prog & "'"
  temp = oConn.Execute (sql)
  prog1 = temp("prognummer")
  RelID = RelID + 1      'haalt hij op uit database
  sql3 ="INSERT INTO koppeltabel (relatieID,mednr,prognr) VALUES "
  sql3  =sql3 & "(" & RelID & "," & Mednr & "," & prog1 &")"
  oConn.Execute sql3,recordsaffected
Next

Als je hem opstart krijg ik de melding :

ADODB.Fields error '800a0cc1'
ADO kan het object niet vinden in de collectie die overeenkomt met de door de toepassing gewenste naam of het door de toepassing gewenste verwijzingsnummer .

Met andere woorden hij kan het geselecteerd record niet vinden en komt niet voorbij prog1 = temp("prognummer") als ik zeg prog1 = 1 dan gaat hij wel verder. Het gekke is dan de listbox wordt gevuld door gegevens uit de zelfde tabel en zijn dus precies het zelfde.

Kan iemand helpen ?

alvast bedankt

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 30-08 15:34

gorgi_19

Kruimeltjes zijn weer op :9

2 dingen:
1. Kan je voortaan [code][/code] tags gebruiken? Dat vergroot de leesbaarheid enorm.
2. Gooi je query eens op het scherm mbv Response.Redirect. Ik denk dat je dan de fout wel zult vinden... Zo niet, kan je deze dan hier er ook bij gooien?

Sowieso.....
code:
1
<OPTION value>


Moet dit niet zijn?

code:
1
<OPTION value="<%= oRS2.Fields("ProgID") %>">


Ook kan je vast wel je query samenvoegen tot een query en kan je gebruikmaken van del SQL parameter: "IN"

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Je bedoelt zeker Response.Write.

Als ik "Response.Write prog" er tussen zet dan wordt deze
goed ingevuld. Er komt de naam van het programma in te staan.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 30-08 15:34

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 21 oktober 2002 @ 15:01:
Je bedoelt zeker Response.Write.

Als ik "Response.Write prog" er tussen zet dan wordt deze
goed ingevuld. Er komt de naam van het programma in te staan.
Response.Write bedoelde ik ook... ;)

Ik doelde eigenlijk op:
code:
1
2
Response.Write sql
response.Write sql3

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
code:
1
Response.Write sql

Dit is het resultaat :
SELECT prognr FROM programma AS prognummer WHERE prognaam='AuraCatalTekenkamer'

en ik keek in de tabel en AuraCatalTekenkamer bestaat.

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
Kijk eens naar de opmerking van gorgi_19.. door het id als value in je listbox te gooien hoef je niet meer een select te doen voor elke insert

waarvoor gebruik je relId en kun je deze niet beter vervangen door een veld met autonummering

SELECT prognr FROM programma AS prognummer
moet je FROM programma en AS prognummer niet omdraaien ?
(of AS prognummer helemaal weglaten)

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Topicstarter
code:
1
<OPTION value="<%= oRS2.Fields("ProgID") %>">


als je dit invoert krijg je toch echt een vette Vbs error, zoals ik het heb gedaan werkt perfect. Ik moet trouwens de namen van de programma's laten zien en niet de nummers. Als ik de nummers laat zien dan weet de gebruiker niet welk nummer welke programma is.

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
daarom kun je aan option 2 variabelen toewijzen:

<OPTION value="423">Naam van het programma</OPTION>

Welke error krijg je nu, heb je in je SELECT statement van je eerste script wel het veld ProgID staan ?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22:17

mulder

ik spuug op het trottoir

value = progId
text = progName

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Welke error krijg je nu, heb je in je SELECT statement van je eerste script wel het veld ProgID staan ?
code:
1
2
3
  sql_prg = "SELECT * FROM Programma ORDER BY progID"
  Set oRS2 = Server.CreateObject("ADODB.Recordset") 
  oRS2.Open sql_prg, oConn


Jullie bedoelen dit
code:
1
<OPTION value = "<% oRS.Fields("progID").value %>"><%oRS2.Fields("prognaam").value %></option>

Dan krijg ik weer de melding :

ADODB.Fields error '800a0cc1'
ADO kan het object niet vinden in de collectie die overeenkomt met de door de toepassing gewenste naam of het door de toepassing gewenste verwijzingsnummer .

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
oRS2 lijkt me beter

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Topicstarter
oRS2 lijkt me beter
Ja, sorry. ;)

Maar de error blijft

Verwijderd

Doe eens het volgende ipv je listbox:
ASP:
1
2
3
For Each field in oRS2.Fields
   Response.Write field.name & "<br>" 
Next

Kijk dan eens welke fields er wel in objRS2 staan.

  • maxrebo
  • Registratie: November 2000
  • Laatst online: 04-08 19:28

maxrebo

 

[quote]Verwijderd schreef op 21 oktober 2002 @ 15:51:

code:
1
<OPTION value = "<% oRS.Fields("progID").value %>"><%oRS2.Fields("prognaam").value %></option>


Je bent de = vergeten
<% moet <%= zijn

Verwijderd

Topicstarter
ik weet het al

code:
1
sql1 = "SELECT prognr AS prognummer FROM programma WHERE prognaam='" & prog & "'"


AS prognummer moet voor FROM bedankt nescafe _/-\o_ sorry dat ik daarop laat reageer. Iedereen kwam met andere suggesties en ik heb ze allemaal geprobeerd. Hij werkt nu als een trein.
Jullie worden bedankt _/-\o_ _/-\o_
Pagina: 1