webForumDet fria alternativet

SQL Server visar inte hela resultatet

16 svar · 559 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 528 inlägg
#1

Tjena
Nu har jag ett jätteproblem som jag inte förstår mig på.
Har följande kod:

sSql =	"INSERT INTO aws_content " &_
	"(content_lang, content_anchor, content_topic, content_text, content_updated, content_updated_by, content_updated_ip) " &_
	"VALUES " &_
	"(" &_
	"" & content_lang & ", " &_
	"'" & content_anchor & "', " &_
	"N'" & content_topic & "', " &_
	"N'" & the_textarea & "', " &_
	"'" & content_updated & "', " &_
	"" & content_updated_by & ", " &_
	"'" & content_updated_ip & "'" &_
	")"

Det jag vill sparas korrekt i databasen och kollar jag tabellen finns alla fält ifyllda precis så som det ska vara.

Men när jag sedan ska plocka ut samma rad (eller någon annan):

sSql = "SELECT * FROM aws_content"
Set rs = conn.Execute(sSql)
If Not rs.EOF Then
    Response.Write(rs("content_text"))
End If

Så skrivs inte värdet ut.
Posten _finns_ och innehåller text, men hur jag än bär mig åt, så är recordsetet tomt.
De andra kolumnerna visas i webbläsaren, men inte just "content_text" resp. "content_topic".

Hur kan det komma sig?

Tack!

@ndersMedlem sedan juni 200026 914 inlägg
#2

Har du använt recordset-värdet från kolumnen tidigare i koden?
Det är ett vanligt förekommande fenomen att värden i recordset-fält där datatypen är text bara kan användas en gång. Så, börja med att lägga värdet i en variabel i ASP-koden, och använd därefter variabeln.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#3

Hmm okej, men det här funkar inte heller:

If Not rs.EOF Then
	content_id		= Trim(rs("content_id"))
	content_lang	= Trim(rs("the_lang"))
	content_anchor	= Trim(rs("content_anchor"))
	content_topic	= rs("content_topic")
	content_text	= rs("content_text")
Else
	Response.reDirect("adm_content_list.asp?layout=admin")
End If

....

<tr>
<td class="format_cell five_px_right three_px_left five_px_top">Ankare (a-z, _):</td>
</tr>
<tr>
<td class="format_cell five_px_right three_px_left"><%=content_anchor%></td>
</tr>
<tr>
<td class="format_cell five_px_right three_px_left five_px_top">Rubrik:</td>
</tr>
<tr>
<td class="form_field five_px_right"><input type="text" name="content_topic" value="<%=content_topic%>"></td>
</tr>
<tr>
<td class="format_cell five_px_right five_px_top">Text:</td>
</tr>
<tr>
<td class="form_field five_px_right"><textarea name="content_text" cols="" rows="" style="width: 450px; height: 300px;"><%=content_text%></textarea></td>
</tr>

I det här fallet skrivs endast "content_anchor" ut.

@ndersMedlem sedan juni 200026 914 inlägg
#4

Då får man prova knep #2:

Specificera alla fält i SELECT-frågan, med text-fälten sist.
Tilldela sedan variabler sina värden i den ordning fälten är specificerade i SQL-frågan.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#5

Okej, såhär ser min kod ut:

content_id = Trim(Request.Querystring("content_id"))
If Len(content_id) <= 0 Or Not isNumeric(content_id) Then Response.reDirect("adm_content_list.asp?layout=admin") End If

sSql =	"SELECT content_id, content_lang, content_anchor, content_topic, content_text, " &_
	"(SELECT TOP 1 code FROM languages WHERE id = aws_content.content_lang) AS the_lang " &_
	"FROM aws_content " &_
	"WHERE content_id = " & content_id
Set rs = Conn.Execute(sSql)
If Not rs.EOF Then
	content_id	= Trim(rs("content_id"))
	content_lang	= Trim(rs("the_lang"))
	content_anchor	= Trim(rs("content_anchor"))
	content_topic	= rs("content_topic")
	content_text	= rs("content_text")
Else
	Response.reDirect("adm_content_list.asp?layout=admin")
End If

....

<tr>
<td class="format_cell five_px_right three_px_left five_px_top">Ankare (a-z, _):</td>
</tr>
<tr>
<td class="format_cell five_px_right three_px_left"><%=content_anchor%></td>
</tr>
<tr>
<td class="format_cell five_px_right three_px_left five_px_top">Rubrik:</td>
</tr>
<tr>
<td class="form_field five_px_right"><input type="text" name="content_topic" value="<%=content_topic%>"></td>
</tr>
<tr>
<td class="format_cell five_px_right five_px_top">Text:</td>
</tr>
<tr>
<td class="form_field five_px_right"><textarea name="content_text" cols="" rows="" style="width: 450px; height: 300px;"><%=content_text%></textarea></td>
</tr>

Här skrivs inget ut i inputfälten (content_topic, content_text).

Med den här koden hämtar jag data från samma ställe i databasen:

content_anchor = Trim(FixSQL(Request.Querystring("content_id")))
If Len(content_anchor) <= 3 Then show_site = False Else show_site = True End If
If show_site Then
	sSql =	"SELECT " &_
			"t1.content_lang, t1.content_anchor, t1.content_topic, t1.content_text, " &_
			"t2.id, t2.code " &_
			"FROM aws_content t1 INNER JOIN languages t2 " &_
			"ON t1.content_lang = t2.id " &_
			"WHERE t1.content_anchor = '" & content_anchor & "' " &_
			"AND t2.code = '" & Session("lang") & "'"
	Set rs = conn.Execute(sSql)

	header_light ("")
	Response.Write (	"<div id=""pagecontent"">" & VbCrLf &_
						"<p class=""page_topic"">" & rs("content_topic") & "</p>" & VbCrLf &_
						"<p class=""text"">" & rs("content_text") & "</p>" & VbCrLf &_
						"</div>" & VbCrLf)
End If

Det funkar efter att jag tagit bort N-Preffixen i min UPDATE fråga.
Kan det ha med saken att göra?

@ndersMedlem sedan juni 200026 914 inlägg
#6

Du måste nog ha med N'-prefixandet även i din SELECT, skulle jag tro.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#7

Hmm, hur ska det se ut då?
I min UPDATE / INSERT gör jag ju såhär:

UPDATE tabell SET kolumn = N'värdet'

...men i en SELECT?

Det konstiga är att samma sida med samma DB (databasen ligger _inte_ lokalt på datorn) bara det att den här datorn där filerna ligger är ny.
Kan jag ha nån gammal version av drivrutinen?

@ndersMedlem sedan juni 200026 914 inlägg
#8

Jag har aldrig lekt med unicode, så jag vet egentligen ingenting om det. Men kan det vara då man ska använda N'SELECT ?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#9

Hmm, nä, funkade inte.
Det konstiga är att jag har det här på flera andra ställen på sidan, där det funkar kanon.

Men ju här vill inte dessa två fält plockas ut.
Det två kolumnerna är av typen "NTEXT".

Det enda som skiljer sig är att den här tabellen är skapad med nya "SQL Server Management Studio Express" och de andra tabellerna med gamla "Enterprise Manager".

Kan det ha med saken att göra?

@ndersMedlem sedan juni 200026 914 inlägg
#10

Menar du att du får ut data i NTEXT-fält du skapat i Enterprise Manager för SQL Server 2000? Ligger fungerande tabeller med ntext-fält i samma databas som de ofunkande?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#11

@nders skrev:

Menar du att du får ut data i NTEXT-fält du skapat i Enterprise Manager för SQL Server 2000? Ligger fungerande tabeller med ntext-fält i samma databas som de ofunkande?

Japp samma databas, samma datatyp, scripten ser i princip likadana ut.
Fattar inte det här...

Som jag nämnde tidigare har jag ny disk sen igår, med ny verison av windows.
Kan det var nått med nån drivrutin?

Finns det någon liknande "Connector" som ska ligga under ODBC-Datakällor som jag kan ha missat?

Det konstiga är ju just att datan sparas korrekt, men det plockas inte alls ut.
Ska jag visa mer kod?

@ndersMedlem sedan juni 200026 914 inlägg
#12

Hmm, jag är ledsen, men jag måste hoppa av här. Jag förstår helt enkelt inte. :)

Jag ska försöka googla lite, och finner jag något återkommer jag.

(Så länge kan vi ju hoppas att LarsG eller annan expert kommer hit och pekar med hela handen. :) )

mvh

MickeA.comMedlem sedan feb. 20034 528 inlägg
#13

Tack för hjälpen ändå¨.
Håller på och googlar lite jag med, hittar inget alls... skumt...

Ska testa att skapa en ny tabell i EM.

Återkommer.

MickeA.comMedlem sedan feb. 20034 528 inlägg
#14

Hmm, nu blir jag fundersam...
Testade att byta ut:

sSql =	"SELECT content_id, content_lang, content_anchor, content_topic, content_text, " &_
	"(SELECT TOP 1 code FROM languages WHERE id = aws_content.content_lang) AS the_lang " &_
	"FROM aws_content " &_
	"WHERE content_id = " & content_id

Mot:

sSql =	"SELECT content_id, content_lang, content_anchor, content_topic, content_text " &_
	"FROM aws_content " &_
	"WHERE content_id = " & content_id

Jag tog alltså bort subfrågan.
Nu hämtas även datan från fälten 'NTEXT till mitt formulär.

Har alltså löst problemet, men skulle hemskt gärna vilja få reda på varför det plötsligt inte funkar att köra med subquerys.

Förslag, någon?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#15

Nä, jag är inte med alls här.
Provade att byta ut frågan ovanför mot den INNER JOIN jag kör på den sida där datan hämtas ut korrekt.
Det funkar inte för det.

Nu testade jag att köra ett annat script, men mot samma tabell i samma databas.
Då funkar det kanon, den tar all data och sparar rätt och allt plockas ut rätt.

Fler förslag?

@ndersMedlem sedan juni 200026 914 inlägg
#16

Vad är det för skillnad på scriptet som fungerar och det som inte fungerar?

MickeA.comMedlem sedan feb. 20034 528 inlägg
#17

@nders skrev:

Vad är det för skillnad på scriptet som fungerar och det som inte fungerar?

Precis, att det ena inte fungerar ;)
Nä, skojja bara... Det är rätt mycket kod, så jag bifogar två zipfiler, så är dom "all yours".
Filen som funkar heter "view_site.asp" och den som inte funkar heter "adm_content_edit.asp".
I den sistnämnda finns tre frågor (men två bortkommenterade just nu). Om man använder exakt samma fråga som i filer som funkar, så blir det ändå fel...

Tack!

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb