Avatar billede netro Nybegynder
10. august 2005 - 17:51 Der er 14 kommentarer og
1 løsning

Tomme felter fra view

Jeg har et underligt problem med udtræk fra et view (SQL Server 2K) på en ASP-side. Udtrækket er rigtigt nok (har prøvet det samme i query analyzer), men jeg får tomme felter returneret. Det kan vises i simpel form med nedenstående. Har I oplevet noget lignende?

Set rs = Conn.Execute("Select Felt From View")

' Hvis denne linie undlades, udskrives blanke værdier i løkken
Response.Write rs("Felt")

While Not rs.EOF
  Response.Write rs("Felt")
  rs.MoveNext
Wend
Avatar billede busschou Praktikant
10. august 2005 - 18:34 #1
hmm, skal lige være med
Hvis du laver en udskrift så udskrives løkken?
Eller udskrives kun udskriften før løkken?
For i såfald så må det jo være fordi den er EOF af en og anden grund
Avatar billede softspot Forsker
10. august 2005 - 18:51 #2
Jeg har i forbindelse med SQL Server og ADO oplevet at felter ikke indeholder noget når jeg aflæste dem (selvom jeg vidste de havde indhold i databasen). Dette skyldtes et bug i ADO, når man bruger den ifht. SQL Server. Workaround til dette problem er at aflæse data fra recordset'et i den rækkefølge felterne bliver trukket ud af recordset'et. Kan du evt. be- eller afkræfte om dette også er tilfældet for din siuation...?
Avatar billede nielle Nybegynder
10. august 2005 - 18:57 #3
"View" er et reserveret ord i SQL Server 2000 - det er derfor en rigtig dårlig ide at have en tabel som hedder "view". Specielt eftersom at et view er en slags pseudo-tabel. Jeg ved ikke om dette er forklaringen på dit problem, men jeg kan sagtens forstå hvis databasen bliver forvirret.
Avatar billede nielle Nybegynder
10. august 2005 - 18:59 #4
... mental note to self: Læs ordentligt hvad der skrives. :^|
Avatar billede nielle Nybegynder
10. august 2005 - 19:38 #5
Jeg skal lige forstå dit problem bedre. Er det korrekt at alle værdierne bliver udskrevet hvis du bruger:

Set rs = Conn.Execute("Select Felt From View")
Response.Write rs("Felt")
While Not rs.EOF
    Response.Write rs("Felt")
    rs.MoveNext
Wend

- mens at der kun bliver udskrevet tomme rækker ved:

Set rs = Conn.Execute("Select Felt From View")
While Not rs.EOF
    Response.Write rs("Felt")
    rs.MoveNext
Wend

Og er det korrekt forstået at der faktisk bliver udskrevet tomme rækker, og ikke bare "slet ingen ting"?
Avatar billede netro Nybegynder
10. august 2005 - 21:14 #6
Mine views hedder heller ikke "view". Det var bare for at illustrere.

nielle -> Det er helt korrekt. Der er et recordsæt, men med første løsning får jeg fx. udskrevet 23, 87 og 72, mens anden løsning giver "", "" og "". Det virker tilmed lidt periodisk, og det forvirrer mig endnu mere, fordi af og til bliver nogle af felterne (Felt2, Felt3 etc.) faktisk udskrevet korrekt i løsning to.

softspot - > Jeg kan prøve at se på det.
Avatar billede netro Nybegynder
10. august 2005 - 21:44 #7
Det gav ikke så meget at sætte navnene i rigtig rækkefølge. Der er stadig problemer, og det ser ud til, at det primært er valuta og integers, der volder problemer, og ikke bliver vist. Jeg har prøvet at typecaste valuta i udtrækket, men så forsvinder pludseligt nogle af de andre værdier, der var der før. Tekstfelter skal overføres til en variabel, før de kan vises.

Jeg kan slet ikke se noget system i fejlene. Det er en gang rod!
Avatar billede netro Nybegynder
10. august 2005 - 21:55 #8
Det virker tilsyneladende med:

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select Felt From View", 3, 1

Men det er ikke så tilfredsstillende ej at kende fejlen. Og gad vide om det er samme problematik, hvis jeg anvender en stored procedure...
Avatar billede netro Nybegynder
10. august 2005 - 22:22 #9
Det er det. Suk...!
Avatar billede netro Nybegynder
11. august 2005 - 00:31 #10
Næ, hvis jeg åbner som vist ovenfor, får jeg ikke tekstfelterne ud.
Avatar billede netro Nybegynder
11. august 2005 - 03:20 #11
Jeg har fundet årsagen til alt det mystiske. Jeg skal bruge SQLOLEDB.1-provideren i stedet for MSSQL. Det stod faktisk smukt beskrevet på udbyderens side, men jeg har altid brugt den anden driver, der virker fint sammen med mine andre SQL-servere, så det skænkede jeg ikke en tanke.

Vil I have del i kagen, så læg et par svar.
Avatar billede busschou Praktikant
11. august 2005 - 06:40 #12
nja ellers tak, jeg gav vist ikke meget hjælp her og du fandt jo selv årsagen :o)
Men godt du fandt den
Avatar billede netro Nybegynder
11. august 2005 - 08:28 #13
Ok :)
Avatar billede nielle Nybegynder
11. august 2005 - 08:31 #14
Ditto. Jeg synes da bare at du skal tage dine point tilbage på denne her. :^)
Avatar billede netro Nybegynder
11. august 2005 - 08:35 #15
Så gør jeg det. Tak for indsatsen alligevel.
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