.. dot notation? (titel afgekapt)
Hierbij een probleem wat me ondertussen al een paar dagen lang bezighoudt; enkele maanden geleden heb ik een 'digitaal archief'-applicatie opgezet in Classic ASP op IIS (5.0). Deze applicatie maakt gebruik van een relatief simpele Access 2000 database als backend.
Toen de applicatie klaar was is er echter besloten om de database alsnog naar SQL Server 2000 te migreren. De database dus -succesvol- door de upsize-wizard van Access gehaald en de database connection string in de ASP code aangepast. Zodra de applicatie echter gestart werd, stond er een ASP/SQL error in de pagina: de opgegeven velden konden niet in de recordset teruggevonden worden; een bekende error die meestal op een typo duidt. Deze SQL queries bevatten echter geen typ-fouten, aangezien ze bij de Access database nog foutloos werkten (en ik heb ze daarnet nog eens dubbelgecheckt).
Al snel kwam ik erachter dat het probleem lag bij SQL Server, dat weigerde de dot notation te slikken die ik gebruikte in mijn code:
Bij bovenstaande query genereert SQL Server een error wanneer ik tblTabel.ID gebruik om te refereren aan dat veld in de recordset, wat bij de Access database wel goed ging (en wat me ook gewoon correcte SQL lijkt). Wanneer ik echter het 'tblTabel.' gedeelte weglaat, dus:
krijg ik wel een resultaat! Dit zou helemaal niet mogen volgens de achterliggende theorie omdat ik met die verwijzing zowel tblTabel.ID als tblNogEenTabel.ID zou kunnen bedoelen (ik krijg overigens deze laatste dan terug)!
Maar even dit X-Files materiaal terzijde, waarschijnlijk gaat het wel goed, wanneer ik alle queries voorzie van aliases. Is dit inderdaad de enige uitweg (veeeeel werk
), of weet iemand hier wat er aan het handje is?
PS: Sorry voor de eventueel gepercipieerde Extreme Warrigheid™ van dit relaas
Hierbij een probleem wat me ondertussen al een paar dagen lang bezighoudt; enkele maanden geleden heb ik een 'digitaal archief'-applicatie opgezet in Classic ASP op IIS (5.0). Deze applicatie maakt gebruik van een relatief simpele Access 2000 database als backend.
Toen de applicatie klaar was is er echter besloten om de database alsnog naar SQL Server 2000 te migreren. De database dus -succesvol- door de upsize-wizard van Access gehaald en de database connection string in de ASP code aangepast. Zodra de applicatie echter gestart werd, stond er een ASP/SQL error in de pagina: de opgegeven velden konden niet in de recordset teruggevonden worden; een bekende error die meestal op een typo duidt. Deze SQL queries bevatten echter geen typ-fouten, aangezien ze bij de Access database nog foutloos werkten (en ik heb ze daarnet nog eens dubbelgecheckt).
Al snel kwam ik erachter dat het probleem lag bij SQL Server, dat weigerde de dot notation te slikken die ik gebruikte in mijn code:
code:
1
2
3
| Set Conn.Execute("SELECT tblTabel.ID, tblNogEenTabel.ID FROM tblTabel INNER JOIN tblNogEenTabel ON [i]... etc ...[/i] ")
strVariabele = RS("tblTabel.ID") |
Bij bovenstaande query genereert SQL Server een error wanneer ik tblTabel.ID gebruik om te refereren aan dat veld in de recordset, wat bij de Access database wel goed ging (en wat me ook gewoon correcte SQL lijkt). Wanneer ik echter het 'tblTabel.' gedeelte weglaat, dus:
code:
1
| strVariable = RS("ID") |
krijg ik wel een resultaat! Dit zou helemaal niet mogen volgens de achterliggende theorie omdat ik met die verwijzing zowel tblTabel.ID als tblNogEenTabel.ID zou kunnen bedoelen (ik krijg overigens deze laatste dan terug)!
Maar even dit X-Files materiaal terzijde, waarschijnlijk gaat het wel goed, wanneer ik alle queries voorzie van aliases. Is dit inderdaad de enige uitweg (veeeeel werk
PS: Sorry voor de eventueel gepercipieerde Extreme Warrigheid™ van dit relaas
[ Voor 8% gewijzigd door Verwijderd op 18-12-2003 23:11 . Reden: titel afgekapt ]