Avatar billede hnto Nybegynder
26. maj 2003 - 18:16 Der 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.

VBA script modtages gerne ;-)
Avatar billede mugs Novice
26. maj 2003 - 18:47 #1
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
Avatar billede hnto Nybegynder
26. maj 2003 - 18:52 #2
send gerne :
atoftgaard@mail.dk
Avatar billede mugs Novice
26. maj 2003 - 19:05 #3
Sendt.
Avatar billede terry Ekspert
26. maj 2003 - 19:25 #4
In vba code
docmd.runsql "UPDATE table1 SET felt1 = 'lyserød' WHERE felt = 'rød'"

Or cut and paste ""UPDATE table1 SET felt1 = 'lyserød' WHERE felt = 'rød'"
into a query
Avatar billede hnto Nybegynder
26. maj 2003 - 19:27 #5
mugs:
kan du zippe.. firewall du ved ;-))
Avatar billede terry Ekspert
26. maj 2003 - 19:30 #6
With paramaters
UPDATE table1 SET table1 .felt1 = [Til]
WHERE (((table1.felt1)=[fra]));
Avatar billede mugs Novice
26. maj 2003 - 19:30 #7
Hi terry > I agree with You, that the question is:

How to make "rød" to "lyserød"

but I don't think that it is  the red colour that shall be changed i all situations.
Avatar billede mugs Novice
26. maj 2003 - 19:31 #8
Har lige formatteret og har deror ikke zip. Jeg prøver at omdøbe den til .txt
Avatar billede hnto Nybegynder
26. maj 2003 - 19:35 #9
mugs>>

det er stadig extension .mdb der fejler.

send som HNTO.txt
Avatar billede hnto Nybegynder
26. maj 2003 - 19:41 #10
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
Avatar billede mugs Novice
26. maj 2003 - 19:42 #11
Sendt som HNTO.txt

terry > I agree with You, that the question is: should be:

I don't agree with You, that the question is:
Avatar billede mugs Novice
26. maj 2003 - 19:44 #12
Hvis ikke det fungerer med HNTO.txt, har du så et link til noget gratis zip?
Avatar billede hnto Nybegynder
26. maj 2003 - 19:47 #13
nu hvor jeg sidder og tænker over det kunne man vel lave et script der gør noget ala det her:

if [table1]![field2].value <> null then
set field1.value = field2.value
else
end if

der skal vel bare en slags for - next kommando ind.-..

kan dette give inspiration ?
Avatar billede hnto Nybegynder
26. maj 2003 - 19:49 #14
mugs\\

hvorfor sender du igen databasen som HNTO.txt.mdb  ??
den bliver igen banned i firewalen.

omdøb og send den som HNTO.TXT
Avatar billede hnto Nybegynder
26. maj 2003 - 19:51 #15
winzip, winrar ...you name it..
Avatar billede mugs Novice
26. maj 2003 - 19:55 #16
I don't care..

Men jeg har lige sendt HNTO.txt til mig selv og gemt den på min HD. Omdøbt den til mugge.mdb oh no probs. Benuytter Outloook Expres.
Avatar billede terry Ekspert
26. maj 2003 - 20:03 #17
mugs you've lost me 26/05-2003 19:42:57 !
Avatar billede mugs Novice
26. maj 2003 - 20:07 #18
Yes ofcourse - It is nonsens. Please disregard that comment. I promise: I will only "talk" My own language in the future :o)
Avatar billede hnto Nybegynder
26. maj 2003 - 20:07 #19
nope.
outlook 2000

( kunne det tænkes at du er kommet til at sende samme fil 2 X ;-)
Avatar billede terry Ekspert
26. maj 2003 - 20:08 #20
docmd.runsql "UPDATE table1 SET felt1 = [Change to] WHERE felt1 = [Change from]"

cant be much easier than this.
Place the code in the on click event of a button
Avatar billede mugs Novice
26. maj 2003 - 20:16 #21
Sendt som zip
Avatar billede hnto Nybegynder
26. maj 2003 - 20:37 #22
ok mugs...tester lige...
Avatar billede hnto Nybegynder
26. maj 2003 - 20:39 #23
fucki.. pi. og lo.. 

jeg accepterer da jeg forventer det virker, men jeg kan ikke teste her da jeg kører 97  ;-((
Avatar billede mugs Novice
26. maj 2003 - 20:42 #24
konverterer til 97 og sender igen
Avatar billede mugs Novice
26. maj 2003 - 20:44 #25
sendt i 97 zip
Avatar billede hnto Nybegynder
26. maj 2003 - 20:52 #26
takker...er blevet inspireret...
Avatar billede mugs Novice
26. maj 2003 - 20:59 #27
Selv tak - Men fungerer det i henhold til dit spørgsmål, ellers skal du have dine point tilbage :o)
Avatar billede hnto Nybegynder
27. maj 2003 - 11:21 #28
både og....

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.

Alt dette kan laves meget simpelt i VBA
Avatar billede terry Ekspert
27. maj 2003 - 17:30 #29
hnto>What is wrong with the VERY SIMPLE solution I have given?
Avatar billede mugs Novice
27. maj 2003 - 17:34 #30
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.
Avatar billede terry Ekspert
27. maj 2003 - 17:41 #31
but at least he can say what is wrong with it mugs, that way we all can learn IKKE?
Avatar billede mugs Novice
27. maj 2003 - 17:48 #32
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.
Avatar billede hnto Nybegynder
27. maj 2003 - 19:50 #33
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 ?
Avatar billede terry Ekspert
27. maj 2003 - 20:00 #34
It will prompt only once for the old colour and then the new and then it will update ALL in one go :o)
Avatar billede terry Ekspert
27. maj 2003 - 20:01 #35
WHERE felt1 = "red"
Avatar billede terry Ekspert
27. maj 2003 - 20:02 #36
but points are given for the first correct answer, so if mugs answer is correct then great :o)
Avatar billede mugs Novice
27. maj 2003 - 20:11 #37
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)
Avatar billede hnto Nybegynder
27. maj 2003 - 20:34 #38
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. ?
Avatar billede hnto Nybegynder
27. maj 2003 - 20:34 #39
30 point for en korrekt svar...
Avatar billede hnto Nybegynder
27. maj 2003 - 20:36 #40
skal der stå noget med :

DoCmd.RunSQL "UPDATE 230503BQ_final SET familienavn = [Change to] WHERE familienavn = me!recorset.familienavn"

??? eller hvad ved jeg...
Avatar billede mugs Novice
27. maj 2003 - 21:12 #41
hnto > Ret variablen a til flg.:

a = Me.felt1

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.
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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