Avatar billede mishrah Nybegynder
12. april 2007 - 12:10 Der er 6 kommentarer og
1 løsning

Datatype text, varchar(max) mm. kommer ikke med i resultsæt

Hejsa,

Jeg sidder og arbejder med et asp-projekt på en MS SQL Express 2005 database.

Jeg tilgår databasen via følgende conn.string:

Driver={SQL Native Client};Server=192.168.0.111\SQLEXPRESS;Database=WebKontrol;Uid=die;Pwd=eid2020;

Med et simpelt SQL kald som "SELECT * FROM Beskeder" får jeg naturligvis et resultsæt der indeholder felterne id, besked, afsender og modtager.

Hvis feltet "besked" er af datatypen varchar(50) så fungerer det fint og rs("besked") har den værdi der står i db.

Men hvis feltet "besked" sættes til datatypen text, så er rs("besked") helt tom.

Hvis jeg sætter feltet "besked"s datatype til varchar(MAX) så returnerer rs("besked") en firkant...

Gennem SQL manageren kan jeg sagtens se "besked"-feltets indhold, men når jeg trækker det ud gennem ASP kan jeg altså ikke få et ordentligt udtræk.

Eksempel:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL Native Client};Server=192.168.0.111\SQLEXPRESS;Database=WebKontrol;Uid=die;Pwd=eid2020;"

SQL = "SELECT * FROM beskeder"
Set rs = conn.execute(SQL)

id = rs("id") 'virker fint, returnerer id - int
modtager = rs("modtager") 'virker fint, returnerer modtager - int
afsender = rs("afsender") 'virker fint, returnerer afsender - int
besked = rs("besked") 'virer IKKE - returnerer NULL hvis datatypen er text,  hvis datatypen er varchar(MAX) og returnerer korrekt hvis datatypen er fx varchar(50). Problemet er at jeg har brug for at det er datatypen text...
%>

Alle råd vil blive værdsat! :)
På forhånd mange tak!
Martin Mahs
Avatar billede mcgoat Nybegynder
12. april 2007 - 12:21 #1
Kender ikke så meget til MS SQL, kun My SQL. Men hvis du kigger på denne side
http://www.onlamp.com/pub/a/onlamp/2001/09/13/aboutSQL.html

Så står der typen Text kun under MySql. Ved ikke om det er en fejl?
Avatar billede mishrah Nybegynder
12. april 2007 - 12:44 #2
Det er desværre en fejl. Jeg kan sagtens vælge datatypen text i min MS SQL manager, og jeg kan sagtens fylde data i den manuelt. Problemet er når jeg skal ha dataene ud igen - så er de tomme...
Avatar billede bobber Nybegynder
12. april 2007 - 13:02 #3
Hvad grunden til du bruger text, text optager mere plads en varchar.

Prøv evt. at brug GetChunk() til at hente text felt ud.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthgetchunk.asp
Avatar billede windcape Praktikant
12. april 2007 - 13:07 #4
bobber: at varchar max kan 255 chars? :p og at en post nemt kan være størrere?
mishrah:

Prøv at lade være med at bruge SELECT * , men lav "SELECT [id],[modtager],[afsender],[besked] FROM [beskeder]" , så du er 100% sikker på at den henter felterne ud, og får en fejl hvis de ikke findes.

Derefter check med dit DBMS om der rent faktisk ER data i felterne, eller om de ikke bare er NULL som default.
Avatar billede mishrah Nybegynder
12. april 2007 - 13:08 #5
Jeg bruger text, fordi jeg i mine beskeder skal kunne gemme store html dokumenter genereret af en WYSISWYG editor... derfor er de 8000 tegn der kan ligge i en varchar, ikke nok... :( GetChunk virkede ikke :(
Avatar billede mishrah Nybegynder
12. april 2007 - 13:12 #6
>> Windcape, jeg har prøvet begge dele - samme resultat. Lige så snart jeg går ind i dbms og ændrer datatypen til en fixed størrelse fx. varchar(255), så virker det, men når den er enten text eller varchar(MAX) så virker det ikke... felterne er helt sikkert ikke tomme :)
Avatar billede mishrah Nybegynder
02. oktober 2011 - 17:02 #7
Lukket pga. manglende svar
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
Computerworld tilbyder specialiserede kurser i database-management

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