webForumDet fria alternativet

Uppdatera textfält

10 svar · 477 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!

Jag har en kod som ser ut så här:

sNote = "Priset justerades med: " & ConvertToDecimal(nPercent) & "%, " & Date & " /" & Application.CurrentUser.Sign & VbCrLf & ""
	sSQL = "UPDATE [tblArticle] SET [Price] = [Price] * " & fPercentValue & ", [Modified] = GETDATE(), [Note] = [Note] + '" & sNote &"'"

Dvs jag vill lägga till en rad i [Note] vid uppdatering. Note är av typen "Text"

Det går inte, utan jag får felmeddelande enligt biogad bild.

Använder SQL-server

Kan man inte göra så? :)

Och hur ska man göra istället?

Mvh
Henrik

sql_fel001.jpg
@ndersMedlem sedan juni 200032 969 inlägg
#2

Google har några olika förslag, här kommer det första:

http://www.thescripts.com/forum/thread546477.html

devotionMedlem sedan jan. 20013 582 inlägg
#3

@nders skrev:

Google har några olika förslag, här kommer det första:

http://www.thescripts.com/forum/thread546477.html

Jag hade faktiskt sökt....

Men hur gör jag för att göra en sql-fråga av:

DECLARE @ptrval varbinary(16)
 
 
SELECT @ptrval = TEXTPTR(LOGG)
FROM GAMES
WHERE ID = 21
 
UPDATETEXT GAMES.LOGG @ptrval NULL NULL 'your text'

och göra det som min kod var tänkt att göra?

Mvh
Henrik

@ndersMedlem sedan juni 200032 969 inlägg
#4

Göra en SQL-fråga av? Det är ju en SQL-fråga?
Gör först en update på de övriga fälten du vill uppdatera, kör sedan en modifierad variant av denna kod för att uppdatera ditt textfält.

devotionMedlem sedan jan. 20013 582 inlägg
#5

@nders skrev:

... kör sedan en modifierad variant av denna kod för att uppdatera ditt textfält.

Ja, det var det jag undrade över, även om jag uttryckte mig lite oklart... :)

@ndersMedlem sedan juni 200032 969 inlägg
#6

Jag har inte använt UPDATETEXT mer än vid något tillfälle tidigare (jag brukar inte använda textfält på detta vis), men jag hade provat något sånt här:

DECLARE @ptrval varbinary(16)
 
SELECT @ptrval = TEXTPTR(Note)
FROM tblArticle
WHERE ID = 4711
 
UPDATETEXT tblArticle.Note @ptrval NULL NULL 'det du vill lägga till'

Som du ser är det inte så mycket jag ändrat - det hade du nog fixat själv. ;)

Mer läsning om UPDATETEXT

devotionMedlem sedan jan. 20013 582 inlägg
#7

Nu har jag pillat vidare lite...

Jag har följande kod:

Set Conn=CreateObject("ADODB.Connection")
	Conn.Open Application.sDbConnectionString
	'sSQL=	"DECLARE @ptrval varbinary(16)" &  vbcrlf _
			'& "SELECT @ptrval = TEXTPTR(Note) FROM tblArticle "
	'Conn.Execute sSQL
	'sSQL="UPDATETEXT tblArticle.[Note] @ptrval NULL NULL" & sNote		
	'Conn.Execute sSQL
	sSQL = "UPDATE [tblArticle] SET [Price] = [Price] * " & fPercentValue & ", [Modified] = GETDATE()"
	Conn.Execute sSQL
	Set Conn=Nothing

Jag har kommenterat bort lite saker...

Men, först tänkte jag ju bara ändra alla priser i tabellen genom att göra ett påslag med:

sSQL = "UPDATE [tblArticle] SET [Price] = [Price] * " & fPercentValue & ", [Modified] = GETDATE()"

Men nu, ska jag ju bevara det som står i [Note] och lägga på sNote...

Måste inte jag inte loopa igenom alla poster då?

Mvh
Henrik

@ndersMedlem sedan juni 200032 969 inlägg
#8

Måste inte jag inte loopa igenom alla poster då?

Jo, det får du nog göra om du ska använda updatetext.

(Hela sql-blocket ska exekveras som en fråga - dela inte upp det.)

devotionMedlem sedan jan. 20013 582 inlägg
#9

@nders skrev:

(Hela sql-blocket ska exekveras som en fråga - dela inte upp det.)

Jag trodde nog det...

Är lite ringrostig.... :h

Loopar med Recordset? Du får gärna sparka in mig på rätt spår...

Hur blir det då med det första i SQL-blocket. Ska det köras varje gång?

Mvh
Henrik

@ndersMedlem sedan juni 200032 969 inlägg
#10

Hur blir det då med det första i SQL-blocket. Ska det köras varje gång?

Tja, jag antar det... Du hämtar ju en pekare till textblocket för den specifika posten - så du borde vara tvungen att skaffa dig en ny pekare för varje post.

devotionMedlem sedan jan. 20013 582 inlägg
#11

hmmm.... :e

Har fått det att funka med en post...

Set Conn=CreateObject("ADODB.Connection")
	Conn.Open Application.sDbConnectionString
	sSQL=	"DECLARE @ptrval varbinary(16)" &  vbcrlf _
			& "SELECT @ptrval = TEXTPTR(Note) FROM tblArticle " &  vbcrlf _
			& "UPDATETEXT tblArticle.[Note] @ptrval NULL NULL '" & sNote & "'" & vbcrlf _	
			& "UPDATE [tblArticle] SET [Price] = [Price] * " & fPercentValue & ", [Modified] = GETDATE()"
			'msgBox sSQL
	Conn.Execute sSQL
	Set Conn=Nothing

Då är det bara loopningen kvar... :)

Mvh
Henrik

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