Ik heb twee databases. In database #1 heb ik een veld 'Body'. Hierin staat HTML data van een document. Middels een koppeling kopieer ik dit veld naar een andere database (database #2) naar tabel 'Data', veld 'Longtextfield1'.
In het veld staat dus HTML data met tekst, tags, opmaak etc.. Het kan dat in het document een afbeelding wordt gebruikt. Een stukje code zoals dit is dan zichtbaar:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}"
Het kan ook zijn dat er meerdere afbeeldingen aanwezig zijn in het document, en daarmee in dit veld. Dit stukje code is dan meermaals aanwezig. Echter wel met een eigen GUID. Dus bijvoorbeeld:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}"
en verderop in het veld nog een keer een andere afbeelding: src="Download.aspx?DocumentID={33ed5961-ac64-496e-aca8-2c1901fb95bc}"
Om de afbeelding goed te kunnen laten tonen in de (web)software die ik gebruik, zal er nog een 'RecordID' geplaatst moeten worden achter de GUID van de afbeelding. Dus, bijvoorbeeld:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}&RecordID=46170"
Iedere GUID heeft zijn eigen RecordID. De combinaties (DocumentID) GUID en RecordID zijn bekend en opgeslagen in de tabel 'DocumentData'. Iedere regel in deze tabel bevat een veld 'DocumentID' en een veld 'RecordID'. Ter illustratie:
Mijn vraag: Hoe kan ik in tabel 'Data', veld 'LongTextfield1' achter iedere (DocumentID) GUID de corresponderende RecordID zetten? Wetende dat per record in veld 'LongTextfield1' meerdere DocumentID's aanwezig kunnen zijn. Tevens wetende dat de tabellen ieder uur gevoed wordt met nieuwe data en het RecordID hierbij direct toegevoegd moet worden. Ik wil hier graag een stored procedure voor gebruiken.
...
Relevante software en hardware die ik gebruik:
Microsoft SQL Server 2017
Orbis TaskCentre
...
Wat ik al gevonden of geprobeerd heb:
Middels een REPLACE commando in een stored procedure heb ik getracht, na dat de data wordt overgezet van database #1 naar database #2, het RecordID toe te voegen. De stored procedure wordt gevoed met data uit tabel 'DocumentData', waar de combinaties DocumentID / RecordID in aanwezig zijn:
Dit werkt niet. De stored procedure voegt iedere DocumentID / RecordID combinatie toe achter iedere DocumentID die hij kan vinden, met als gevolg dus een héle lange string.
Bovenstaande stored procedure is al diverse malen gewijzigd geweest, maar tot op heden zonder resultaat. Ook via Google (stackoverflow etc.) kan ik helaas geen antwoord vinden op mijn vraag. Heeft iemand een idee hoe dit aan te pakken? Mocht iets onduidelijk zijn dan licht ik e.e.a. graag toe.
In het veld staat dus HTML data met tekst, tags, opmaak etc.. Het kan dat in het document een afbeelding wordt gebruikt. Een stukje code zoals dit is dan zichtbaar:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}"
Het kan ook zijn dat er meerdere afbeeldingen aanwezig zijn in het document, en daarmee in dit veld. Dit stukje code is dan meermaals aanwezig. Echter wel met een eigen GUID. Dus bijvoorbeeld:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}"
en verderop in het veld nog een keer een andere afbeelding: src="Download.aspx?DocumentID={33ed5961-ac64-496e-aca8-2c1901fb95bc}"
Om de afbeelding goed te kunnen laten tonen in de (web)software die ik gebruik, zal er nog een 'RecordID' geplaatst moeten worden achter de GUID van de afbeelding. Dus, bijvoorbeeld:
src="Download.aspx?DocumentID={de2cb128-dffd-446c-9a15-292ca84fedda}&RecordID=46170"
Iedere GUID heeft zijn eigen RecordID. De combinaties (DocumentID) GUID en RecordID zijn bekend en opgeslagen in de tabel 'DocumentData'. Iedere regel in deze tabel bevat een veld 'DocumentID' en een veld 'RecordID'. Ter illustratie:
code:
1
2
3
4
5
6
7
8
9
10
11
| DocumentID RecordID D4960B2A-3886-4655-8409-000308EBC71B 463193 BEBD7909-CB82-4B62-B72F-000AB5ADE0EC 463194 8B3572CB-42E6-41F1-9BF4-000B97EBCFBC 463195 D554E0A4-F642-4B6F-86AF-003246870289 463196 718E6D90-0804-4D3F-B0F9-003804D6786E 463197 6A17B0DA-1492-4BF2-A455-003ABB907903 463198 A5ADB083-5E1C-4204-83D2-0045289271C9 463199 FDE866D0-2E34-4E55-B62F-0054EE6E8514 463200 72A52F4B-311E-4401-BF6B-0063480DE3D5 463201 6816DBC1-C1CC-4C21-93B2-0087B7D6FBD7 462617 |
Mijn vraag: Hoe kan ik in tabel 'Data', veld 'LongTextfield1' achter iedere (DocumentID) GUID de corresponderende RecordID zetten? Wetende dat per record in veld 'LongTextfield1' meerdere DocumentID's aanwezig kunnen zijn. Tevens wetende dat de tabellen ieder uur gevoed wordt met nieuwe data en het RecordID hierbij direct toegevoegd moet worden. Ik wil hier graag een stored procedure voor gebruiken.
...
Relevante software en hardware die ik gebruik:
Microsoft SQL Server 2017
Orbis TaskCentre
...
Wat ik al gevonden of geprobeerd heb:
Middels een REPLACE commando in een stored procedure heb ik getracht, na dat de data wordt overgezet van database #1 naar database #2, het RecordID toe te voegen. De stored procedure wordt gevoed met data uit tabel 'DocumentData', waar de combinaties DocumentID / RecordID in aanwezig zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| CREATE PROCEDURE [dbo].[Replace_Picture2] ( @DocumentID UNIQUEIDENTIFIER, @RecordID VARCHAR(100) ) AS BEGIN UPDATE data SET LongTextfield1 = REPLACE(CAST(LongTextfield1 AS VARCHAR(MAX)), LTRIM(CAST(@DocumentID as VARCHAR(100))) + '}', LTRIM(CAST(@DocumentID as VARCHAR(100))) + '}' + '&RecordID=' + @RecordID + '"') WHERE 1=1 END GO |
Dit werkt niet. De stored procedure voegt iedere DocumentID / RecordID combinatie toe achter iedere DocumentID die hij kan vinden, met als gevolg dus een héle lange string.
Bovenstaande stored procedure is al diverse malen gewijzigd geweest, maar tot op heden zonder resultaat. Ook via Google (stackoverflow etc.) kan ik helaas geen antwoord vinden op mijn vraag. Heeft iemand een idee hoe dit aan te pakken? Mocht iets onduidelijk zijn dan licht ik e.e.a. graag toe.