26. maj 2003 - 18:16Der er
40 kommentarer og 1 løsning
ændre data i grupperede queryes
Jeg har en qyery1 der grupperer felt1 i table1.Kan man ikke lave et script der ændrer mere end 1 record ad gangen fra én værdi til en anden ?
eks: felt1 rød gul rød rød grøn grøn
resulterer i min qyery i : rød gul grøn nu ville jeg gerne at jeg kunne ændre 'rød' til 'lyserød'og 'grøn' til 'mørkegrøn'uden at skulle hver record igennem evt. via en update query.
Jeg kan hvis det er påkrævet lave et extra felt til opdateringsordet der skal erstatte det oprindelige.
Det kan sikkert gøres mere elegant, men det fungerer. Kan sende et eksempel. du skal oprette et felt i din tabel ved navn "Tæller":
Dim MaxUd, K Dim a As String Dim b As String a = InputBox(Prompt:="Indtast farve du vil skifte.", Title:="Farveskift", Default:="") b = InputBox(Prompt:="Hvad er den nye farve?", Title:="Farveskift", Default:="") MaxUd = DMax("[Tæller]", "Tabel1") For K = 1 To MaxUd DoCmd.FindRecord a, acEntire, False, , True, acCurrent, True If Me.felt1 = a Then Me.felt1 = b Else: DoCmd.FindNext End If DoCmd.GoToRecord acForm, "form2", acNext, 1 Next K
nemmerlig mugs... Værdierne divergerer ned gemmen tabellen. Essensen er at man kan se de farver der er i tabellen og vælge at ændre en frve til en anden. Jeg har opribndelig lavet en form hvor den grupperede forespørgsel er i med håbet om at man kunne lave et felt ved siden af hvor den reviderede tekst skulle stå. når alle rettelser var foretaget skulle den grundlæggende tabel opdateres.
eksemplet med farverne er kun et eksempel for at synliggøre problematikken og ønsket. det rigtige felt indeholder en beskrivende tekst for et antal produkter
Jeg er ispireret til at arbejde videre. Det jeg gør er at lave en ny tabel hvori jeg kører samtlige grupperede poster over i. så retter man data i denne tabel via en form, og efterflg. opdaterer den så den primære tabel med redundandte data i. til sidst slettes tabellen så den er klar igen til ny opdatering.
Dette er måske ikke optimalt med tager ikke lang tid at lave eller køre rent scriptmæssigt, og involdverer kun en extra lille tabel.
Jeg nå indrømme, at terry's SQL ser simpel og elegant ud. Jeg forstår heller ikke, hvorfor du vil oprette en temp tabel, og slet ikke hvorfor du vil gruppere dine poster inden du opdaterer.
Men der kan selvfølgelig ligge mere bag ved, som du ikke har (og ikke skal) informere om her.
correct terry. Many users think, that I'm here to give som good advice. That's not correct. I'm here to learn, but if I can give an answer I give it. My solution is correct in that way it's working. But I would have used Your solution becaurse it's more simpel and elegant.
rolig nu... med det kenskab jeg har til SQL er terry's forslag : docmd.runsql "UPDATE table1 SET felt1 = [Change to] WHERE felt1 = [Change from]" afhængig af en 'prompt' for hver ændring der foretages. Det jeg selv gerne vil gøre ( efter at være inspireret..) er at rette flere felter for så at lave en samlet opdatering. Det er ligledes et spørgsmål om brugervenlighed, idet jeg ikke skal angive gammel værdi og ny værdi, men kun behøver den nye værdi.
Der er som sagt tale om data der beskriver et produkt op til 100 katrakterer, hvorfor det er lidt fjollet først at skulle skrive/gentage de 100 karakterer og så angive 100 nye. Jeg synes personligt bedst om min egen løsning og takker for det input der er givet. tillige har jeg accepteret spørgsmålet. det kan vel ikke blive mere fair eller ?
hnto > Nu er det jo så nemt for mig at sige alt er fair, da jeg har scoret point. Men mange gange forstår jeg ikke helt, hvorfor brugeren har valgt netop den løsning. Fra min side er mine kommentarer blot ment som anmodning om lidt hjælp til en forståelse for hvorfor du valgte min løsning, og ikke den mest elegante.
Men tak for din tilbagemelding, det er ikke altid vi får den.
Og fortsat god aften til begge - Nu vil jeg ud og rode lidt i mine roser :o)
Terry> nu har jeg testet din via en formular hvor der er en continous form baseret på en grupperet query. jeg har lagt en knap ud for recorden så denne bliver gentaget når man kører formen. på dennes onclick står nu : DoCmd.RunSQL "UPDATE 230503BQ_final SET familienavn = [Change to] WHERE familienavn = [Change from]"
Først promtes jeg for hvad værdien skal være. her skriver jeg test, men så er det den som beskrevet tidligere at den spørgen fra hvilken værdi. Dette burde den selv vide da jeg klikker på den enkelte record ikke. ?
når du står i en bestemt record, vil du kun blive promptet for den nye værdi, idet variablen a allerede indehiolder værdien for den værdi du vil ændre.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.