webForumDet fria alternativet

Bytt connection

13 svar · 397 visningar · startad av Ceeron

CeeronMedlem sedan aug. 2000378 inlägg
#1

Bytta precis från en DSN till en vanlig connectionstring... Fick helt plötsligt errors på en del script osv.... Skitkonstigt?
E det olika drivrutiner lr nåt?

SebbeMedlem sedan jan. 20032 285 inlägg
#2

Hur ser connection-strängarna ut?
Vilka fel får du? Berätta!

CeeronMedlem sedan aug. 2000378 inlägg
#3

Som sagt jag körde med DSN innan och nu:

	'### Öppnar databasen
	Set objConnect = Server.CreateObject("ADODB.Connection")
	objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("../private/alkisarna.mdb")

efter bytet så fick jag följade error när jag skulle kolla gästboken som funkar med dsn kopplingen

If Session("ID") <> 0 and Session("ID") = intID Then
	sql="update kommentarer set last = True where last = False and anvID =" &Session("ID")
	objConnect.Execute(sql),,128
End If

Microsoft JET Database Engine (0x80040E14)
Syntaxfel i UPDATE-uttryck.
/alkisarna/gb.asp, line 34

Fattar inte varför jag fick någon err på detta...
Sen fick jag något annat men det slutade...

nikoMedlem sedan juni 20022 599 inlägg
#4

Fattar inte varför jag fick någon err på detta...

Olika drivers/providers kan skilja sig åt vad gäller reserverade ord. Last, tex, låter inte alls som ett lämpligt namn på en kolumn. Ta som huvudregel att undvika allt som låter som programinstruktioner: first, last, next, for .. osv, så slipper du problem när du byter driver/databas.

E det olika drivrutiner lr nåt?

Ja.

CeeronMedlem sedan aug. 2000378 inlägg
#5
	If Not Session("raknad") = "ja" Then
		Dim strIP, strWebb
		strIP = Request.ServerVariables("REMOTE_ADDR")
		strWebb = Request.ServerVariables("HTTP_USER_AGENT")

		If Request.Cookies("alkisarna.com")("raknad") = "ja" Then
			strIP = Request.Cookies("alkisarna.com")("raknarIP")
		End If

		[b]sql = "insert into raknare (IP, Tid, Webb) values ('" & strIP & "', #" & Now() & "#, '" & strWebb & "')"
		objConnect.Execute(sql)[/b]

		Session("raknad") = "ja"
		Response.Cookies("alkisarna.com").Expires = Date + 356
		Response.Cookies("alkisarna.com")("raknarIP") = strIP
		Response.Cookies("alkisarna.com")("raknad") = "ja"
	End If

Microsoft JET Database Engine (0x80040E57)
Fältet är för litet för de data du vill infoga. Försök att infoga eller klistra in mindre information.
/alkisarna/inc_slut.asp, line 17
MeleaMedlem sedan juli 20033 147 inlägg
#6

Har du ställt in maxlenght i databasen?

Om du använder MySQL så sätt Webb till Text och om du använder Access så väljer du PM.

StevePMedlem sedan mars 2003772 inlägg
#7

Precis som det står "Fältet är för litet för de data du vill infoga."

Kolla vad du har för maxlängd på respektive fält.

CeeronMedlem sedan aug. 2000378 inlägg
#8

Ändrade Webb till PM och testade med 255 i storlek på textfältet... Inget funka... Varför ska allt skita sig när man bara bytt connection? det e ju samma access databas o exakt samma kod!

@ndersMedlem sedan juni 200032 969 inlägg
#9

Det sista felmeddelandet beror inte på att du bytt anslutningstyp. Dessutom; om man är noga med sin namngivning från början, så slipper man syntaxfel för att man använt reserverade ord.

Vad har du nu för fälttyp / maxlängd inställd på de olika fälten?

CeeronMedlem sedan aug. 2000378 inlägg
#10

Fick till det... Första gången det hände nu... Det var Webb fältet som spökade som var text... bytte till PM eller va e max man kan få utav Request.ServerVariables("HTTP_USER_AGENT")?

@ndersMedlem sedan juni 200032 969 inlägg
#11

Bra fråga. Just http_user_agent kan man modifiera själv, så det är jag inte alls säker på hur lång den kan tänkas bli.

mvh

OveRRidEMedlem sedan feb. 200112 078 inlägg
#12

Om du vill slippa att byta namn på fält i databasen och liknande, så går det faktiskt att klamra reserverade ord inom [ kolumnnamn ].

Exempel:

SELECT * FROM [users] WHERE [last] = " & first & " AND [top] = 1
Engine^Medlem sedan dec. 20003 887 inlägg
#13

OveRRidE skrev:

Om du vill slippa att byta namn på fält i databasen och liknande, så går det faktiskt att klamra reserverade ord inom [ kolumnnamn ].

Exempel:

SELECT * FROM [users] WHERE [last] = " & first & " AND [top] = 1

Det går ju att göra så, men det rekommenderas inte. Bättre att ha fältnamn som inte är reserverade... lättare att undvika sql-fel då.

nikoMedlem sedan juni 20022 599 inlägg
#14

Och dessutom stöder inte alla databaser/miljöer klamring. SQL Server CE gör det tex inte (iaf sist jag kollade), vilket kan vara bra att veta om man så enkelt som möjligt vill kunna flytta sin kod/databasstruktur.

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)