Avatar billede fennec Nybegynder
14. juni 2006 - 10:23 Der er 9 kommentarer og
2 løsninger

Tomme værdier ved udskrift, men der er data (MS SQL)

Jeg har et problem med udtræk fra min MS SQL database. Når jeg udskriver kolonnerne i en anden rækkefølge end de står på selecten bliver resultaterne tomme.

Dette er et forenklet eks:

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={SQL Server};SERVER=MinServer;UID=xxx;pwd=xxx; DATABASE=MinDB;"

'Læg mærke til at note kommer før navn på selecten, og er efter på udskriften.
set rs = conn.execute("select [note], navn from MinTabel")
while not rs.eof
  response.write rs("navn") &", "
  response.write rs("note") &"<br>"
  rs.MoveNext
wend

Dette giver mig navnet, men noten er altid tom. Hvis jeg derimod bytter om på note og navn i selecten eller på udskriften virker det:
set rs = conn.execute("select navn, [note] from MinTabel")
while not rs.eof
  response.write rs("navn") &", "
  response.write rs("note") &"<br>"
  rs.MoveNext
wend

eller:
set rs = conn.execute("select navn, [note] from MinTabel")
while not rs.eof
  response.write rs("note") &", "
  response.write rs("navn") &"<br>"
  rs.MoveNext
wend

Jeg kan ikke rigtig finde noget system, for nogen gange virker det. Tendensen er dog at har jeg et note felt (nText) så fejler den.

Er der nogen der har oplevet et ligende problem og har en løsning??

Ps. Med en Access database virker det fint...
Avatar billede softspot Forsker
14. juni 2006 - 10:31 #1
Hmmm... jeg har hørt om et bug i ADO-driveren til SQL Server som kræver at felterne aflæses i den rækkefølge som de udvælges i din SELECT-sætning. Jeg har dog arbejdet en del med SQL Server og ADO det sidste halve års tid og har ikke oplevet dette problem (eller rettere - jeg har ikke opdaget det).

Jeg læste en artikel om BLOB-felter i kombo med SQL Server forleden og her synes jeg at have forstået, at BLOB-felter skal stå til sidst i tabellen (eller var det resultatet - dine test kunne tyde på det sidste). Artiklen foreskriver desuden at man bør bruge GetChunk til at hente data når man aflæser BLOB-fetler, da det ellers kan blive en ganske tung affære at hente data fra tabeller med sådanne felter...

Jeg skal lige se om jeg kan finde den omtalte artikel (kan i øvrigt være jeg fandt den i hjælpen til SQL Server)...
Avatar billede gertp Nybegynder
14. juni 2006 - 10:46 #2
har oplevet samme problem, løser det ved at lægge posterne ind i variabler først fx:
while not rs.eof
note = rs("note")
navn = rs("navn") 
  response.write navn &", "
  response.write note &"<br>"
  rs.MoveNext
...men ved ikke om det er optimalt
Avatar billede -mundi- Nybegynder
14. juni 2006 - 10:59 #3
Avatar billede fennec Nybegynder
14. juni 2006 - 11:11 #4
softspot >>
Det skal jeg da lige test lidt på, men det lyder som noget i den rigtige retning :o)

gertp >>
Har også selv brugt variabel løsning, som en hovsa løsning. Jeg har selects hvor jeg trækker 20+ felter ud, og vil ikke have så mange variabler i min kode.

Mundi >>
Jeg får ingen fejl, bare ingen data. Men din artiklen nævner det samme som softspot er inde på.
Avatar billede -mundi- Nybegynder
14. juni 2006 - 11:16 #5
Jeg siger ikke noget om der kommer en fejl, men at det problem du oplever er "by design" og der står i kb artiklen hvordan du skal komme videre
Avatar billede -mundi- Nybegynder
14. juni 2006 - 11:18 #6
Lidt for hurtig var jeg vist der :-) Jeg har sat en testtabel op og får samme tomme felt som dig, med mindre jeg sætter ntext feltet bagest i queryen
Avatar billede fennec Nybegynder
14. juni 2006 - 11:20 #7
mundi >>
Din artikket er rettet mod fejlen "Microsoft OLE DB Provider for ODBC Drivers error '8002000". Men som sagt, er den også inde på noget af det som softspot skrev.

Det lader til at virke hvis jeg bruger rs.open metoden i stedet. Men det skal jeg også have testet igenne først. På den måde kan jeg nemlig bibeholde "select * ...", så jeg ikke skal til at skrive alle kolonnerne ind i den rigtige rækkefølge på mine selects. Mine note felter er nemlig ikke nødvendig vis de sidste kolonner i tabellerne....
Avatar billede softspot Forsker
14. juni 2006 - 11:26 #8
Jeg synes ikke jeg kan finde netop den artikel jeg tænker på, men hvis du har clienttools til SQL Server (2000) installeret kan du prøve at finde BLOB i indekset og så kigge på de tilknyttede sider... jeg kunne finde lidt VB-kode som illustrerede hvordan man bruger GetChunk, måske det kan hjælpe dig.
Avatar billede fennec Nybegynder
14. juni 2006 - 16:49 #9
Efter diverse tests ser det ud til at rs.open metoden virker, så den har jeg valgt at benytte mig af, da jeg så ikke skal til at omskrive alle mine selects.

Softspot skal dog have halvdelen af point for at fortælle at noter skal stå sidst på selecten. Så fik jeg i det mindste det forklaret. (ved du havde samme forklaring -mundi-, men softspot kom først).

.o) <-- One Eyed Jack
Avatar billede softspot Forsker
14. juni 2006 - 22:08 #10
OK, jamen, så må jeg jo heller lægge et svar :)
Avatar billede softspot Forsker
15. juni 2006 - 09:48 #11
Tak for point :)
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