Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:14 Der er 23 kommentarer og
1 løsning

Slet felt hvis værdi="0"

Findes der en smart lille stump kode der kan slette værdien af et felt i en tabel hvis værdien af feltet er = 0 ?
Jeg har søgt efter svaret, men kan ikke umiddelbart komme på noget brugbart.
Avatar billede mugs Novice
10. april 2005 - 21:18 #1
DoCmd.RunSQL "DELETE FROM Tabel1 Where TABELNAVN.FELTNAVN= 0 "
Avatar billede kabbak Professor
10. april 2005 - 21:19 #2
UPDATE Tabel1 SET Tabel1.Antal = Null
WHERE (((Tabel1.Antal)=0));

her er det Tabel1 felt Antal der får en Null værdi i stedet for 0
Avatar billede mugs Novice
10. april 2005 - 21:19 #3
Eller i en forespørgsel:

DELETE Tabel1.id
FROM Tabel1
WHERE (((Tabel1.id)=0));
Avatar billede kabbak Professor
10. april 2005 - 21:20 #4
var det ikke slette værdien, eller var det hele posten ??
Avatar billede mugs Novice
10. april 2005 - 21:20 #5
kabbak - en af os har misforstået noget, eller et dårligt formularet spørgsmål :o)

"der kan slette værdien af et felt"
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:31 #6
Jeg synes ikke rigtigt jeg kan få nogen af dem til at virke.
Der kommer flere fejlmeldinger. For det første kommer der en irriterende fejlmeddelelse om at man er ved at køre noget der kan slette poster i basen. Ja, men kan man deaktivere advarslen. For det andet kommer koden op med en inputboks hvor der åbenbart skal indtastes et eller andet i det felt man kører koden på.
Det var værdien i feltet, ikke posten der skulle slettes.
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:32 #7
Nok et dårligt formuleret spørgsmål !
Avatar billede mugs Novice
10. april 2005 - 21:33 #8
Så skal du bruge kabbak's forslag med en opdatering og ikke en sletning. for at undgå advarslerne:

Docmd.setrwarnings false
din kode
docmd.setwarnings true
Avatar billede kabbak Professor
10. april 2005 - 21:33 #9
UPDATE Tabel1 SET Tabel1.Antal = Null
WHERE (((Tabel1.Antal)=0));


denne er SQL koden til en forespørgsel


sæt den ind

Ret derefter Tabel1 til dit tabelnavn og Antal til dit Feltnavn, så skulle det virke
Avatar billede mugs Novice
10. april 2005 - 21:34 #10
en slåfejl:

Docmd.setwarnings false
din kode
docmd.setwarnings true

Husk altid at sætte warnings til true, ellres vil de forblive frakoblede i HELE applikationen.
Avatar billede kabbak Professor
10. april 2005 - 21:40 #11
DoCmd.RunSQL "UPDATE Tabel1 SET Tabel1.Antal = Null WHERE Tabel1.Antal =0"

Sådan i kode
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:42 #12
Jeg kabbak´s kode ind i en forespørgsel. Jeg kan åbenbart ikke finde ud af at køre den i modulkode. Den virker udmærket i en forespørgsels SQL kode, men sætter jeg mugs´s docmd.setwarnings ind i koden skriver den at noget andet var ventet. F.eks. INSERT m.m.

Et andet problem, som jeg har haft flere gange er at acceptere 2 svar og give lige mange point for dem. Hvordan gør i dette ? Jeg har set at det kan lykkes for andre.
kabbak - mangler svar fra dig.
Avatar billede kabbak Professor
10. april 2005 - 21:43 #13
Maker begge navne og tryk accepter.

Og et svar ;-))
Avatar billede mugs Novice
10. april 2005 - 21:44 #14
Mit forslag med docmd o.s.v. er i VBA. Derfor skal du benytte en kombination af kabbak's forslag og mit:

Docmd.setwarnings false
DoCmd.RunSQL "UPDATE Tabel1 SET Tabel1.Antal = Null WHERE Tabel1.Antal =0"
Docmd.setwarnings true

Den kan indsættes i en kommandoknap.
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:45 #15
Jeg kan ikke køre det som som kode.
Den skriver "invalid outside procedure"
Desuden beder den om et makronavn når jeg prøver at gemme kodestumpen i et modul.
Avatar billede mugs Novice
10. april 2005 - 21:48 #16
Åbn din formular i designvisning. Tag en kommandoknap fra din værktøjskasse og sæt den i formularen. Højreklik på den > Egenskaber > Fanen data > sæt markøren på linien VedKlik > Tryk på de 3 små ... i højre side og indsæt:

Docmd.setwarnings false
DoCmd.RunSQL "UPDATE Tabel1 SET Tabel1.Antal = Null WHERE Tabel1.Antal =0"
Docmd.setwarnings true

Så skal det køre.
Avatar billede kabbak Professor
10. april 2005 - 21:49 #17
Angående det 0, hvor får du det fra, er det fordi du har standardværdien for ny post til 0 på feltet, det kan du rette i designvisning på tabellen, så bliver du fri for det.
Avatar billede mugs Novice
10. april 2005 - 21:49 #18
Aghhh - Slå fejl igen. Det er åbenbart ikke min aften.

Åbn din formular i designvisning. Tag en kommandoknap fra din værktøjskasse og sæt den i formularen. Højreklik på den > Egenskaber > Fanen Hændelser > sæt markøren på linien VedKlik > Tryk på de 3 små ... i højre side og indsæt:

Docmd.setwarnings false
DoCmd.RunSQL "UPDATE Tabel1 SET Tabel1.Antal = Null WHERE Tabel1.Antal =0"
Docmd.setwarnings true

Så skal det køre.
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:56 #19
Slåfejlen kan jeg ikke få øje på, og kabbak´s kommentar ang. 0 - bliver jeg ikke klogere af, for koden virker nu. Tak for hjælpen begge 2. 15 p. til hver.
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:58 #20
Nå - hvorfor kan jeg ikke give 15 til hver ?
Skal der virkelig oprettes et nyt spørgsmål for at uddele flere point end først lovet. ?
Avatar billede mugs Novice
10. april 2005 - 21:58 #21
> Egenskaber > Fanen data >

Skal være:

> Egenskaber > Fanen Hændelser >
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 21:59 #22
Ja, den sidste med hændelser havde jeg fanget.
Avatar billede mugs Novice
10. april 2005 - 22:00 #23
Det er vist npget med avanceret. Men giv blot point til kabbak, han var først til at gennemskue, at du ville opdatere og ikke slette.
Avatar billede tommyrasmussen Nybegynder
10. april 2005 - 22:02 #24
Fint nok, men synes ikke at det er fair. Jeg smider et spørgsmål der hedder "point til mugs" vær venlig at smid et svar der.
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