sigyn Mester
06. december 2018 - 12:14 Der er 12 kommentarer og
1 løsning

Opdateringsforespørgsel der driller

Jeg er ved at lave en opdateringsforespørgsel, og umiddelbart mener jeg, at den burde virke, men jeg får beskeden "Handlingen skal bruge en opdaterbar forespørgsel", så hvad gør jeg galt?
Jeg har en anden i samme database, og den virker, og jeg kan ikke rigtigt gennemskue hvorfor denne ikke gør
06. december 2018 - 12:17 #1
Det er ofte på grund af manglende primærnøgle, så opdateringen ikke er entydig, men det er svært ud fra det oplyste at sige mere...
sigyn Mester
06. december 2018 - 12:48 #2
Der er en primær nøgle i den tabel der skal opdateres, en slags id, og feltet der skal opdateres, er en lidt mere forklarende tekst. Og forespørgslen der skal opdateres fra, indeholder de to samme felter, samt et enkelt med en udgave.
der er grupperet på ID'en, maks på udgvenummeret og sidste på den forklarende tekst.
terry Ekspert
06. december 2018 - 13:33 #3
can we see the sql?
sigyn Mester
06. december 2018 - 13:45 #4
UPDATE tblAlleAnalyser INNER JOIN qryFindGyldigeQS28Version ON tblAlleAnalyser.StDataKT = qryFindGyldigeQS28Version.StDataKT SET tblAlleAnalyser.Korttekst = [qryFindGyldigeQS28Version].[Korttekst];


Primærnøglen er StDataKT
06. december 2018 - 13:52 #5
Hvad med

UPDATE tblAlleAnalyser  SET tblAlleAnalyser.Korttekst = [qryFindGyldigeQS28Version].[Korttekst] where tblAlleAnalyser.StDataKT = qryFindGyldigeQS28Version.StDataKT;

(fra hoften...)
terry Ekspert
06. december 2018 - 15:49 #6
SQL Actually looks OK, so I suspect that what Thor suggests in #1 is probably the issue
terry Ekspert
06. december 2018 - 15:51 #7
and if you still cant find problem then I think it will be necessary to look at the dB or at least the relevant objects to see what the problem is.

you can send to ekspertenATsanthell.dk
AT = @
terry Ekspert
06. december 2018 - 16:05 #8
first try making a simple select query where you inner join the table and query

Then run the select query to get a result set. Now try changing the data directly in the result set. If you can not update here, then an update query will fail. I suspect that its the data from the query qryFindGyldigeQS28Version which is the issue
sigyn Mester
07. december 2018 - 10:40 #9
terry, jeg har lige sendt en test til dig, den virker heller ikke
Jeg har også prøvet som du skrev sidst, også uden held. Jeg tænker også, at det er forespørgslen der er problemet. Jeg kan bare ikke gennemskue det. Jeg har prøvet forskellige andre versioner også

Thor, når jeg prøvede med dit forslag, kom beskeden "Handlingen skal bruge en opdaterbar forespørgsel" ikke, men den opdaterede heller ikke noget som helst.

Et andet forsøg fik fjernet alle korttekster, men ikke indsat dem igen.

Det er en gammel database, oprindeligt lavet i en ældre version af Access, som jeg er ved at give et facelift, og lige præcis den tekst her, har altid været et issue, når der blev rettet i den, derfor opdateringsforespørgslen
En anden opdateringsforespørgsel i samme database, bare fra en anden tabel og anden forespørgsel virker fint, den er dog lavet i den gamle version for lang tid siden.
terry Ekspert
07. december 2018 - 18:26 #10
well as we suspected the query qryFindGyldigeQS28Version is the issue. Its using a GROUP with MAX and LAST so there are no true unique records and therefore the query is not updateable.
So a couple of solutions:

1:
Change query so it uses a Dlookup to find value from the query qryFindGyldigeQS28Version

EG:
UPDATE tblAlleAnalyser AS T SET T.Korttekst = DLookup("Korttekst", "qryFindGyldigeQS28Version", "StDataKT='" & StDataKT & "'")

2:
Make a MakeTable query which creates a table containing result data from qryFindGyldigeQS28Version, then use this table in your update query in place of qryFindGyldigeQS28Version.

EG:
SELECT qryFindGyldigeQS28Version.StDataKT, qryFindGyldigeQS28Version.Korttekst INTO tblTemp
FROM qryFindGyldigeQS28Version

and update query is now
UPDATE DISTINCTROW tblAlleAnalyser INNER JOIN tblTemp ON tblAlleAnalyser.StDataKT = tblTemp.StDataKT SET tblAlleAnalyser.Korttekst = [tblTemp].[Korttekst];
terry Ekspert
07. december 2018 - 18:31 #11
The first solution using Dlookup is OK where there is a limited number of records to update, for each record to be updated the Dlookup runs the query qryFindGyldigeQS28Version to find the new text, so this will have an impact on performance.
sigyn Mester
10. december 2018 - 12:23 #12
Mange tak.
Jeg brugte løsning to. Jeg havde prøvet med en ekstra forespørgsel på qryFindGyldigeQS28Version, men også konstateret, at det ikke heller ikke duede, og troede så egentlig heller ikke, at tabelløsningeng gjorde. Jeg havde tænkt tanken, men ikke prøvet.
Så rigtigt mange tak for hjælpen :-)
terry Ekspert
10. december 2018 - 12:44 #13
Selv tak ;-)
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Test: Huaweis Matebook X er særlig laptop med en svaghed, som du skal være opmærksom på
Huawei beviser endnu en gang, at de sagtens kan mingle sig med de bedste pc-producenter. Men alligevel skyder selskabet lidt ved siden af, med sin nyeste maskine.
Computerworld
Bitcoinen nåede lige at kulminere igen – men så kom krakket
Der blev sat en ny rekord for bitcoinens værdi i år – men godt 24 timer efter blev der høvlet næsten 20.000 kroner af den.
CIO
Podcast: Her er seks gode råd om ledelse og digitalisering fra danske top-CIO'er
The Digital Edge: Vi har talt med 17 af Danmarks dygtigste digitale ledere - og samlet deres seks bedste råd om digitalisering og ledelse. Få alle rådene på 26 minutter i denne episode af podcasten The Digital Edge.
Job & Karriere
Se Waoos forklaring: Derfor har selskabet fyret topchef Jørgen Stensgaard med omgående virkning
Waaos bestyrelse opsiger fiberselskabets topchef, Jørgen Stensgaard, der fratræder med omgående virkning. Se hele forklaringen fra Waao her.
White paper
Sådan sikrer du hovednøglen til jeres data
80% af alle ransomwareangreb skyldes misbrug af privilegerede brugeradgange. Ved at begrænse og overvåge adfærden på de privilegerede konti samt kontrollere mængden af tildelte rettigheder kan du mindske skaden ved hackerangreb mod din virksomhed og i visse tilfælde helt blokere dem. Internt kan du bruge kontrollen med brugeradgange til at dokumentere, hvem der bevæger sig i hvilke systemer, og hvad der foregår derinde. Privilegeret brugerstyring har de seneste to år stået øverst på Gartners Top10-liste over it-sikkerhedsprojekter, der bør få højeste prioritet. Alligevel er teknologien kun så småt ved at finde fodfæste i Danmark. Det kan viden om åbenlyse gevinster, relativ kort implementeringstid og yderst rimeligt budget være med til at ændre på. I dette whitepaper folder vi temaet privilegeret brugerstyring ud og placerer teknologien i det væld af prioriteringer, som CISO’en hver dag skal foretage.