Avatar billede perfi Nybegynder
26. august 2001 - 15:58 Der er 6 kommentarer og
2 løsninger

Update på < dags.dato

Nu er jeg ingen haj i SQL, men kan det ikke lade sig gøre at update alle records i en tabel som er mindre end dags dato.

Noget alá:
\"UPDATE model, on_offer SET ID_state=0 WHERE model.ID_pics=on_offer.offer_id AND model.ID_state=1 and (((on_offer.on_offer_over)<#26/08/01#))\";

Skal godt nok benytte det i C++, men der har jeg ikke kunne finde den rette hjælp. Håber der er en eller anden der kan løse dette for mig...
Det er syntaxen jeg er ude efter. Jeg har prøvet med en indkapslet select i UPDATE uden hjælp...
Avatar billede mugs Novice
26. august 2001 - 17:15 #1
DoCmd.RunSQL \"UPDATE TABELNAVN SET TABELNAVN.FELTNAVN = False;\"
\'DoCmd.RunSQL \"UPDATE TABELNAVN SET TABELNAVN.[FELTNAVN] = Null;\"

Opdaterer tabellen i første eksempel sættes feltet af typen Ja/Nej til False.

I andet eksempel sættes feltet til Null (Ingenting)

Ovennævnte kan du kombinere med en If.. Then.. sætning i VBa, eller indsætte kriterier i forespørgslen.

I Access kan du ikke benytte Select i en Update.

Du kan evt. lave en lille testdb i Access, og lave en Opdateringsforespørgsel, derefter kan du se SQL-sætningen.
Avatar billede perfi Nybegynder
26. august 2001 - 17:26 #2
Hva\' så..
Vil det sige at man ikke kan validere på mindre end operatoren..
Er denne streng ikke valid: \"UPDATE TABELNAVN SET udgået_attribut = 1 WHERE dato_attribut =  dagsdato AND pris_attribut < 199,50\" ?
Dette må da være iorden...
PERFI:
Avatar billede mugs Novice
26. august 2001 - 17:51 #3
Jeg er ikke så meget hjemme i SQL, at jeg kan kommentere dit \"er denne streng ikke valid\". Jeg har svaret ud fra hvordan jeg selv har opdateret felter i en tabel.

vi havde spørgsmålet forleden. Søg i kategori Access og se flg. spørgsmål:

Forespørgsel skal slå op i enden forespørgsel eller tabel
Avatar billede perfi Nybegynder
26. august 2001 - 21:22 #4
Jeg kiggede lidt på din besvarelse!!! øhh, hvad har den med dette spørgsmål at gøre ???. Jeg har ingen problemer med inner join osv, men UPDATE af records der er mindre end dags dato altså <#26/08/01#. Den opdatere alle felter, uanset om det er dags dato eller ej. Ikke fedt, men jeg kan ikke se hvorfor den gør det.
Jeg har oprettet dette spørgsmål under C++, da jeg benytter sproget i forbindelse med databasen. Jeg vedlægger lige linket...den der kan hjælpe, får alle points. http://www.eksperten.dk/spm/101418
...PERFI:
Avatar billede mugs Novice
26. august 2001 - 21:26 #5
Spørgsmålet er oprettet i kategorien Access, og min besvarelse er givet ud fra denne kategori:

Mvh / Mugs
Avatar billede mugs Novice
26. august 2001 - 21:30 #6
Det er ganske korrekt, at dit link til spm. 101418 er oprettet i C++.

Men det er ikke det spm. jeg har svaret på. Jeg har svaret på spm. 102417, som er oprettet i kategorien access. ,,

Så mon ikke vi er gået helt forkert af hinanden?
Mvh / mugs
Avatar billede jens-peter Nybegynder
26. august 2001 - 22:00 #7
Forvirringen er åbenbart total, men jeg vil alligevel forsøge at komme med et bud på spørgsmål 102417.

Så vidt jeg kan se, arbejder du med en UPDATE på 2 tabeller, men det kan man så vidt jeg ved ikke umiddelbart gøre, men man kan oprette det som 2 forespørgsler. Først en udvælgelsesforespørgsel hvor de 2 tabeller sammenkædes med en INNER JOIN og derefter en opdateringsforespørgsel.

Udvælgelsesforespørgsel, Forespørgsel1:
SELECT model.ID_pics, offer.offer_id, model.ID_state, on_offer.on_offer_over FROM model INNER JOIN on_offer ON model.ID_pics = on_offer.offer_id;

Opdateringsforespørgsel:
UPDATE Forespørgsel1 SET ID_state = 0 WHERE on_offer_over < #26-08-2001#;

Jeg har ikke prøvet det, men man kan formodentlig godt sammenskrive de 2 førespørgsler til en enkelt, men det bliver ikke lettere at læse/forstå på den måde.

mvh/Jens-Peter

Avatar billede perfi Nybegynder
26. august 2001 - 22:21 #8
Hej jens-peter..
Jeg har i midlertid løst opgaven selv, og det kunne lade siggøre. Sådan ser SQL strengen ud.
UPDATE model, on_offer SET model.ID_state = 0 WHERE (((model.ID_state)=1) AND ((model.ID_pics)=[on_offer].[offer_id]) AND ((on_offer.on_offer_over)<#\"+TD_dato(TD_dato er en variabel)+\"#))\";
Og oven i hatten måtte jeg konvertere datofeltet til amerikansk format mm/dd/yyyy. Men det virker.
Jeg lukker spørgsmålet igen...Men jens-peter, det var ellers noget af det rigtige, så du får 30 point
PERFI:
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