update tbl set fält = replace(fält, 'Storel', 'Solar')
Hur ska du veta var radbrytningarna ska vara?
14 svar · 409 visningar · startad av devotion
Hej!
Hej kan man uppdatera delar av ett värde i ett fält? Jag har ett noteringsfält, där jag lägger in uppgifter var en artikel är inköpt. Men det kan ju även finnas ändra uppgifter där som jag s a s vill ha kvar.
Exempel:
I fältet står följande:
Artikel inköpt hos Storel
Obs! pris 300 kr
Sedan uppdaterar jag posten dvs ändrar leverantör till Solar. Då vill jag att et ska stå:
Artikel inköpt hos Solar
Obs! Pris 300 kr
dvs endast inköpsinformationen skall ändras det andra ska stå kvar!
Hur kan man lösa detta?
Sedan undrar jag hur man lägger in "radbrytningar" i databasen. Jag vill ju att alla noteringar ska skrivas ut under varandra inte som en enda lång sträng?
Databas Access
Mvh
Henrik
update tbl set fält = replace(fält, 'Storel', 'Solar')
Hur ska du veta var radbrytningarna ska vara?
hej!
Det är väl det som är det kluriga... finns det redan text i fältet behöver det ju infogas en radbrytning innan nästa text ska in, men är det ingen text i fältet så behövs det ju ingen radbrytning liksom...
Henrik
Lägg in en radbrytning först i strängen du infogar?
Antingen kan du göra en select först för att se om fältet är tomt (null?) eller så kan du kolla med ett iif-uttryck direkt i update-frågan om fältet är tomt (null?).
Eller helt enkelt tycka att det är OK med en radbrytning först i fältet, och ta bort det vid presentationen.
ja det skulle ju funka, hur gör man det?
ja, från asp-kod!
Om det är första posten så får ju även den en radbrytning... Hur gör man för att få bort den när man skriver ut datat, så det blir snyggt
Henrik
Om du inte läste min redigering ovan:
@nders skrev:
Antingen kan du göra en select först för att se om fältet är tomt (null?) eller så kan du kolla med ett iif-uttryck direkt i update-frågan om fältet är tomt (null?).
Annars kan man ju kanske göra så här:
strFoo = replace(strFoo, vbcrlf, "<br>")
if left(strFoo, 4) = "<br>" then strFoo = right(strFoo, len(strFoo) - 4)
Oj, nä jag tittade i fel inlägg tydligen...
Jag tycker nog lösningen med att kolla direct i sql med en iif-uttryck vore det snyggaste...
Då är ju datat rätt och klart, behöver man inte göra något med det när man skriver ut det...
Hur skulle en sådan select se ut....
Mvh
Henrik
Det var inte select-frågan jag tänkte på, utan updaten.
Men jag förstår inte riktigt meningen med att lagra flera saker i samma fält?
nä, inte jag heller, men nu har dom som gjort databasstrukturen bestämt att det ska vara så...
Oj, updaten menar jag ju givetvis...
strSQL = "UPDATE tblmaterial SET Modified = #" & Now() & "#, ArtNr = '" & strEnumber & "', ArtName = '" & strArticleName & "', Price = " & iArticlePrice & ", [Note] = '" & strNote & "' " &_
"WHERE Id = " & iArticleId & ""
//H
Någon som har lust att hjälpa till med iifsats...
hmmm, funkar inte riktigt...
strSQL = "UPDATE tblmaterial SET Modified = Now(), ArtNr = '" & strEnumber & "', ArtName = '" & strArticleName & "', Price = " & iArticlePrice & ", " &_
"[Note] = replace([Note], 'Ahlsell', '" & strNote & "') " &_
"WHERE Id = " & iArticleId
objConn.Execute strSQL,, 128
Ger:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Odefinierad funktion 'replace' i uttryck.
/uppdragNu/updateArticle.asp, line 94
Finns det inte stöd för replace i MsJet (access)
Mvh
Henrik
Hmm, det kanske inte gör det?
Då får du nog hämta ut innehållet, och göra replacen i ASP-koden, och sedan ställa en UPDATE-fråga.
mvh