06. december 2018 - 12:14Der 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
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.
UPDATE tblAlleAnalyser SET tblAlleAnalyser.Korttekst = [qryFindGyldigeQS28Version].[Korttekst] where tblAlleAnalyser.StDataKT = qryFindGyldigeQS28Version.StDataKT;
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
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.
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];
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.
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 :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.