devotionMedlem sedan jan. 20013 582 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg 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
@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 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
@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 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 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
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
@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
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 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