14. juni 2006 - 10:23Der 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??
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)...
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
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å.
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....
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.
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).
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.