Avatar billede snie97 Nybegynder
22. august 2003 - 09:58 Der er 16 kommentarer og
3 løsninger

Queryfejl eller ASP-fejl?

Hej!

Følgende kode:
  strSQL = "Select * FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE Kursist.Navn = '" & strTekst & "' AND Kursist.KursistID = Praktikskift.KursistID AND Praktikskift.PraktikID = Praktik.PraktikID AND Virksomhed.VirksomhedsID = Praktik.VirksomhedsID"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do

  ' Udskriv værdien af kolonnen Fornavn
  Response.Write "<b>Kursist:</b><br>" & rs("Kursist.Navn") & ", " & rs("Kursist.Adresse")& ", "  & rs("Kursist.PostNummer") &"<br><br>"
  Response.Write "<b>Virksomhed:</b><br>" & rs("Virksomhed.Navn") & ", " & rs("Virksomhed.Adresse")& ", "  & rs("Virksomhed.PostNummer") &"<br><br>"
  Response.Write "<b>Kontaktperson:</b><br>" & rs("Praktik.PraktikKontaktperson") & "<br><hr><br>"

  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

Giver følgende fejl
Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/kursusweb/soeg.asp, line 23

Linje 23 er den første jeg har cut'n'pastet...

Men jeg kan ikke rigtig finde ud af hvad det er jeg har gjort galt...

strTekst er sat til en streng der står i databasen så det kan ikke være det...
Avatar billede goose Nybegynder
22. august 2003 - 10:06 #1
Check lige at du har stavet alt korrekt, fejlen betyder at du forespørger på en tabel der ikke findes i databasen, plejer at typisk at være en stavefejl.

/Goose
Avatar billede mm12010 Nybegynder
22. august 2003 - 10:13 #2
eller at du prøver at udskrive data fra en kolenne der ikke findes(også typisk en stavefejl)
Avatar billede snie97 Nybegynder
22. august 2003 - 10:20 #3
Jeg har lige rettet stavefejl (Praktik.PraktikKontaktperson blev til Praktik.PraktikKontaktpers), men den giver stadig samme fejl...
Avatar billede ocp Nybegynder
22. august 2003 - 10:22 #4
Du skal ikke proppe tabelnavnet forrest. Det hedder rs("praktikontaktpers") hvis du har sammenfaldende navne bliver du nødt til at omdøbe et par af kolonnerne f.eks.

select tbl1.test as test1, tbl2.test as test2 ...
Avatar billede mm12010 Nybegynder
22. august 2003 - 10:23 #5
så er der sikkert flere... :o)

det er ikke andet at gøre end at gå det igennem bogstav for bogstav
Avatar billede mm12010 Nybegynder
22. august 2003 - 10:24 #6
klart :o)
Avatar billede snie97 Nybegynder
22. august 2003 - 11:00 #7
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 11.
/kursusweb/soeg.asp, line 20 (som nu er "Set rs = Conn.Execute(strSQL)")
Avatar billede snie97 Nybegynder
22. august 2003 - 11:01 #8
strSQL = "Select KuristsID as kid, Kursist.Navn as knavn, Kursist.Adresse as kadr, Kursist.Postnummer as kpnr, Praktik.KursistID as pkid, Praktik.PraktikID as ppid, Praktik.Kontaktpers as pkp, Praktikskift.Praktikid as pspid, Praktikskift.VirksomhedsID as pvid, Virksomhed.VirksomhedsID as vid, Virksomhed.Navn as vnavn, Virksomhed.Adresse as vadr, Virksomhed.PostNummer as vpnr FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE knavn = '" & strTekst & "' AND kid = pkid AND ppid = pid AND vid = pvid"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL) ' linje 20

' Gennemløb Recordset (rs) med en løkke
Do

  ' Udskriv værdien af kolonnen Fornavn
  Response.Write "<b>Kursist:</b><br>" & rs("knavn") & ", " & rs("kadr")& ", "  & rs("kpnr") &"<br><br>"
  Response.Write "<b>Virksomhed:</b><br>" & rs("vnavn") & ", " & rs("vadr")& ", "  & rs("vpnr") &"<br><br>"
  Response.Write "<b>Kontaktperson:</b><br>" & rs("pkp") & "<br><hr><br>"

  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF
Avatar billede mm12010 Nybegynder
22. august 2003 - 11:09 #9
strSQL = "Select KuristsID as kid, Kursist.Navn as knavn, Kursist.Adresse as kadr, Kursist.Postnummer as kpnr, Praktik.KursistID as pkid, Praktik.PraktikID as ppid, Praktik.Kontaktpers as pkp, Praktikskift.Praktikid as pspid, Praktikskift.VirksomhedsID as pvid, Virksomhed.VirksomhedsID as vid, Virksomhed.Navn as vnavn, Virksomhed.Adresse as vadr, Virksomhed.PostNummer as vpnr FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE Kursist.Navn = '" & strTekst & "' AND kid = pkid AND ppid = pid AND vid = pvid"
Avatar billede mm12010 Nybegynder
22. august 2003 - 11:11 #10
strSQL = "Select Kursist.KuristsID as kid, Kursist.Navn as knavn, Kursist.Adresse as kadr, Kursist.Postnummer as kpnr, Praktik.KursistID as pkid, Praktik.PraktikID as ppid, Praktik.Kontaktpers as pkp, Praktikskift.Praktikid as pspid, Praktikskift.VirksomhedsID as pvid, Virksomhed.VirksomhedsID as vid, Virksomhed.Navn as vnavn, Virksomhed.Adresse as vadr, Virksomhed.PostNummer as vpnr FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE Kursist.Navn = '" & strTekst & "' AND Kursist.KuristsID = pkid AND Praktik.KursistID = Praktik.PraktikID AND Virksomhed.VirksomhedsID = Praktikskift.VirksomhedsID"
Avatar billede goose Nybegynder
22. august 2003 - 11:18 #11
Prøv lige og udskriv din strSQL med response.write strSQL og udkommentér din set rs = conn.execute(strSQL) så er det altså nemmere at se hvor det evt. går galt.

/Goose
Avatar billede snie97 Nybegynder
22. august 2003 - 11:35 #12
output:

Select Kursist.KursistID as kid, Kursist.Navn as knavn, Kursist.Adresse as kadr, Kursist.PostNummer as kpnr, Praktik.KursistID as pkid, Praktik.PraktikID as ppid, Praktik.Kontaktpers as pkp, Praktikskift.PraktikID as pspid, Praktikskift.VirksomhedsID as pvid, Virksomhed.VirksomhedsID as vid, Virksomhed.Navn as vnavn, Virksomhed.Adresse as vadr, Virksomhed.PostNummer as vpnr FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE knavn = '" & strTekst & "' AND kid = pkid AND ppid = pid AND vid = pvid
Avatar billede goose Nybegynder
22. august 2003 - 11:42 #13
Hvis det er udskriften af din strSQL, så er der da vist noget galt, b.la. bør "WHERE knavn = '" & strTekst & "' AND ..." da ikke udskrive '" & strTekst & "' men derimod indholdet af strTekst og det er nok derfor du får fejl, den mangler en parameter at lave udtrækket ud fra.

/Goose
Avatar billede snie97 Nybegynder
22. august 2003 - 12:31 #14
det var vidst en smutter....

den ser sådan her ud:
Select Kursist.KursistID as kid, Kursist.Navn as knavn, Kursist.Adresse as kadr, Kursist.PostNummer as kpnr, Praktik.KursistID as pkid, Praktik.PraktikID as ppid, Praktik.Kontaktpers as pkp, Praktikskift.PraktikID as pspid, Praktikskift.VirksomhedsID as pvid, Virksomhed.VirksomhedsID as vid, Virksomhed.Navn as vnavn, Virksomhed.Adresse as vadr, Virksomhed.PostNummer as vpnr FROM Kursist, Praktik, Praktikskift, Virksomhed WHERE knavn = 'Kim Thorhøj' AND kid = pkid AND ppid = pid AND vid = pvid
Avatar billede goose Nybegynder
22. august 2003 - 12:36 #15
Er der ikke også noget galt med:
= 'Kim Thorhøj' AND kid = pkid AND ppid = pid AND vid = pvid
mangler der ikke nogle værdier for pkid, pid og pvid eller er det mig der ikke kan følge med mere ? :o)

/Goose
Avatar billede snie97 Nybegynder
22. august 2003 - 13:27 #16
Praktik.KursistID as pkid
Praktik.PraktikID as ppid
Praktikskift.VirksomhedsID as pvid
Avatar billede ocp Nybegynder
22. august 2003 - 13:30 #17
Det kan man ikke... du skal angive dem med det "rigtige" navn, dvs.  Kursist.KursistID osv.
Avatar billede ocp Nybegynder
22. august 2003 - 13:31 #18
altså kun i where-delen. De værdier der står i select-delen bliver først "oversat" når resultatet af forespørgslen vises.
Avatar billede goose Nybegynder
22. august 2003 - 13:31 #19
jamen jeg mener bare, at når du udskriver din strSQL, så bør disse værdier indeholde nogle data ligesom du nu har knavn = 'Kim Thorhøj' ?

/Goose
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