Permalänk

MS access hjälp tack.

Jag har försökt nu i flertal timmar att med hjälp av ett formulär att
uppdatera ett fält i en tabbel..

tabbel:

FILMER
_________
film id
filmnamn
filmgenre
upplagor
antal uthyrda
pris

nu har jag ett formulär som gör en uthyrning av en film och vill att när en film hyrs ut ska det bli -1 i upplagor i tabelen FILMER..

Vad jag förstått ska det göras med en SQL sats men jag får det verkligen inte att fungera. Någon som skulle kunna hjälpa mig på traven lite?

Säg bara till om jag glömt inkludera någon information ni behöver få reda på så postar jag den information ni behöver!

Tacksam för all hjälp jag kan få.
MVH david

Visa signatur

> försöka duger inte.

Permalänk
Medlem

UPDATE FILMER SET upplagor = upplagor - 1 WHERE 'film id' = id

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Citat:

Ursprungligen inskrivet av Phod

UPDATE FILMER SET upplagor = upplagor - 1 WHERE 'film id' = id

Blir syntax fel på det tyvärr.
"Syntax fel i UPDATE-uttryck" står det.

berätta gärna vad jag kan tänkas göra fel i SQL satsen eller vad jag behöver ge er för information för att ni ska kunna hjälpa mig bättre.
Jag är väldigt ny inom Access.. Så försök gärna förklara om ni kan

MVH david

Visa signatur

> försöka duger inte.

Permalänk
Medlem

Nu var det väldigt länge sedan jag gjorde något med Access, men kolumnnamnet "film id" kanske måste skrivas som [film id] eller något liknande. Har du ingen dokumentation att titta i? Syntaxen borde du ju kunna fixa själv.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk

Tack för din hjälp iaf Phod

Nu lyckades jag få bort Syntax felet iaf..

UPDATE filmlista SET upplagor = upplagor-1 WHERE id = "film id";

är satsen jag använde mig utav.. döpte kolumnfältet film id i formuläret till "id".

När jag nu trycker på Hyr ut kommandoknappen(spara post) i formuläret som är kopplad till en körSQL macro så kommer inget fel meddelande och det kommer upp en fråga om jag vill uppdatera 0 rader.. blir alltså fel någonstans.. förstår verkligen inte hur jag ska göra så den uppdaterar till rätt ställe..

Något som har något förslag?

MVH david

Visa signatur

> försöka duger inte.

Permalänk
Medlem

Där det står "film id" i din kod ska du på något sätt peta in IDt på den film du vill uppdatera. Står det något där som inte är att giltigt ID så uppdateras noll rader.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk

Okej.. hmm. Jag förstår vad det är jag måste göra men jag hittar verkligen inte hur jag ska göra det bara..

någon som har någon länk där jag kan läsa på lite om detta?
..själv hittar jag ingen vettig läsning vad jag än söker på.

Eller...
något som kan förklara kanske? börjar bli väldigt jobbigt att ha suttit med detta i överdrivet många timmar nu!

Uppskattar verkligen all hjälp

MVH david

Visa signatur

> försöka duger inte.

Permalänk
Medlem

Om man skriver

UPDATE filmlista SET upplagor = upplagor-1 WHERE id = "film id";

så söker SQL-satsen efter id="film id", alltså strängen "film id".

Prova det här som kod för en knapp i formuläret "Filmer",
observera här används fältnamnet film id

[code]

Private Sub Kommandoknapp12_Click()

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE FILMER SET FILMER.upplagor = [upplagor]-1 WHERE ((([FILMER].[film id])=[Forms]![Filmer]![film id]));"
DoCmd.SetWarnings True

Forms!Filmer.Requery
End Sub
(/code]

Visa signatur

jacko

Permalänk
Citat:

Ursprungligen inskrivet av jacko
Om man skriver

UPDATE filmlista SET upplagor = upplagor-1 WHERE id = "film id";

så söker SQL-satsen efter id="film id", alltså strängen "film id".

Prova det här som kod för en knapp i formuläret "Filmer",
observera här används fältnamnet film id

[code]

Private Sub Kommandoknapp12_Click()

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE FILMER SET FILMER.upplagor = [upplagor]-1 WHERE ((([FILMER].[film id])=[Forms]![Filmer]![film id]));"
DoCmd.SetWarnings True

Forms!Filmer.Requery
End Sub
(/code]

Tack tack tack och åter tack Jacko!

funkade ju nästan precis som det skulle.. men utav någon anledning ändrades ju upplagor till -1 när det var på +1... hoppade liksom över nollan.. av vilken anledning då undrar jag?

Visa signatur

> försöka duger inte.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av DavidKanNästan
Tack tack tack och åter tack Jacko!

funkade ju nästan precis som det skulle.. men utav någon anledning ändrades ju upplagor till -1 när det var på +1... hoppade liksom över nollan.. av vilken anledning då undrar jag?

Jag kan inte få fram detta fel i min dator utom om man dubbelklickar på knappen då går det två steg förstås?

Dubbelklickning kan hindras genom stoppa
effekten av dubbelklick:

Private Sub Kommandoknapp12_DblClick(Cancel As Integer) DoCmd.CancelEvent End Sub

Visa signatur

jacko

Permalänk

Okej.. väldigt skummt.. man kanske kan ställa in min värde för upplagor på något sätt då?

iaf tack igen.. hur som helst är jag nöjd med hur det är nu.. när man lämnar tillbaks filmen med inlämnings formuläret så blir det iaf +1 och det funkar som det ska.

Och när vi liksom ändå är igång.. om jag skulle vilja bygga ut detta lilla script så att även antal uthyrning i samma tabell skulle öka med +1
så antar jag att det skulle bli något i stil med

Private Sub Kommandoknapp18_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE filmlista SET filmlista.upplagor = [upplagor]-1, filmlista.antal uthyrda = [antal uthyrda]+1 WHERE ((([filmlista].[film id])=[Forms]![filmlista]![film id]));" DoCmd.SetWarnings True Forms!uthyrning.Requery End Sub

men då får jag syntaxfel i UPDATE-utryck. : /

MVH david

Visa signatur

> försöka duger inte.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av DavidKanNästan
Okej.. väldigt skummt.. man kanske kan ställa in min värde för upplagor på något sätt då?

iaf tack igen.. hur som helst är jag nöjd med hur det är nu.. när man lämnar tillbaks filmen med inlämnings formuläret så blir det iaf +1 och det funkar som det ska.

Och när vi liksom ändå är igång.. om jag skulle vilja bygga ut detta lilla script så att även antal uthyrning i samma tabell skulle öka med +1
så antar jag att det skulle bli något i stil med

Private Sub Kommandoknapp18_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE filmlista SET filmlista.upplagor = [upplagor]-1, filmlista.antal uthyrda = [antal uthyrda]+1 WHERE ((([filmlista].[film id])=[Forms]![filmlista]![film id]));" DoCmd.SetWarnings True Forms!uthyrning.Requery End Sub

men då får jag syntaxfel i UPDATE-utryck. : /

MVH david

Antal hyrda måste ha hakparenteser pga mellanslag i fältnamnet.

UPDATE filmlista SET FILMER.upplagor = [upplagor]-1, filmlista.[antal hyrda] = [antal hyrda]+1 WHERE (((FILMER.[film id])=[Forms]![Filmer]![film id]));

Visa signatur

jacko

Permalänk

Underbart Jacko.. tack för all din hjälp det funkar nu prima fint

Visa signatur

> försöka duger inte.