Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

query niet te wijzigen met group by

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het probleem is dat ik de status voldaan niet kan omzetten in Ja (oid) dit komt waarschijnlijk omdat de GROUP BY functie is gebruikt wat volgens mij niet anders kan?

Hoe kan ik het voor elkaar krijgen dat ik de urenregistratie.voldaan kan wijzigen in mijn forum?, die gebouwd is op deze query

SELECT urenregistratie.urenid, werkgever, factuurdatum, weeknummer, uurloon, aantaluren, SUM(aantal*prijsps) AS matrialen, COUNT(matriaal.urenid) AS [count], SUM(aantaluren*uurloon) AS arbeid, IIf(count,arbeid/count+matrialen,arbeid) AS Totaalprijs
FROM urenregistratie LEFT JOIN matriaal ON urenregistratie.urenid=matriaal.urenid
WHERE urenregistratie.voldaan="NEE"
GROUP BY urenregistratie.urenid, werkgever, factuurdatum, weeknummer, uurloon, aantaluren;


,Wouter

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

Welkom op GoT :)

Misschien handig om even vanaf het begin uit te leggen wat je nu aan het doen bent, wat je wilt bereiken , wat er nu niet lukt en niet te vergeten: wat je zelf al hebt geprobeerd om je probleem op te lossen. Bekijk ook even Programming Beleid en dan met name Programming Beleid - De Quickstart zodat je weer welke informatie we in een topicstart graag terug willen zien.

Je hebt het over iets omzetten terwijl je alleen een SELECT query toont. Nogal logisch dat je iets niet kan aanpassen lijkt me ;) Verder kan ik er weinig van maken....

[ Voor 27% gewijzigd door Creepy op 10-04-2008 21:53 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
haha, okeej

Ik heb een facturatie programma gemaakt voor me bedrijfje, gemaakt in access.
Nu is het zo dat ik een factuur op maak die standaard de status(voldaan): NEE mee krijgt.

Deze wordt geplaatst in het facturen overzicht.

Bij het facturen overzicht wil ik nu ook de bijhorende gebruikte matrialen zien en hieruit de totaal factuur prijs laten komen.(inclusief gebruikte matrialen)

nu gebruik ik de onderstaande query:

SELECT urenregistratie.urenid, urenregistratie.jaar, urenregistratie.weeknummer, urenregistratie.Factuurdatum, urenregistratie.Voldaan, urenregistratie.uurloon, urenregistratie.aantaluren, urenregistratie.werkgever
FROM urenregistratie
WHERE urenregistratie.Voldaan="Nee";

in het acces forum heb ik een drop down box waar mee ik de status (rec):voldaan kan omzetten in wacht, (facturen worden uitgeprint en wordt geplaatst in de sectie facturen wacht)

met boven getoonde query lukt dit maar met de query waar bij ik de bijhorende matrialen selecteer lukt dit niet naar mijn inziens omdat ik de group by functie gebruik ik kan de status niet wijzigen in mijn forum.

hopelijk is het zo iets duidelijker

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Ehm, niet alleen door je group by gok ik. Je 2e query is een query die maar over 1 tabel gaat ( sterker nog , hij toont maar 1 regel tegelijk ). Omdat alle gegevens uit 1 regel komen kan access dus gelijk in die regel iets veranderen.

Je 1e query daarentegen loopt over 2 tabellen, ik kan me voorstellen dat dit problemen geeft, want waar hoort nou wat bij op welke voorwaarde.
Je totaliseert dingen ( als je arbeid aanpast wat moet hij dan aanpassen, aantaluren of uurloon )
Je gebruikt iif ( waar komt de totaalprijs nou echt vandaan per record? )
En je select helemaal geen voldaan voor zover ik kan zien. Dus waar haal je deze vandaan?

Verschillende dingen die je kan doen :
- Je vuurt een losse update query uit bij het onchange event van dit combo boxje
- Je haalt het voldaan op met een subquery, deze kan wel gekoppeld worden aan je gegevens.
- Je maakt 2 query's, 1 die je koppelt aan je formulier en die je urenregistratie ophaalt en 1 die de totalen ophaalt en deze worden er los bijgezet ( je totalen zijn dan niet te veranderen ).

In principe zou ik zeggen kies voor optie 1 als het alleen maar 1 veldje is wat veranderd moet kunnen worden. Kies voor optie 3 als je alles van de urenregistratie wilt kunnen veranderen en de totalen er alleen maar ter info bij staan.
Maar misschien dat access het zelf ook snapt als je gewoon het veldje voldaan selecteert...

Verwijderd

Topicstarter
optie 1: Je vuurt een losse update query uit bij het onchange event van dit combo boxje

deze methode gebruik ik op het moment, alleen met de eerste query zijn alle velden locked dus kan ik het combo boxje(voldaan) niet wijzigen in iets anders.

optie 2: Je haalt het voldaan op met een subquery, deze kan wel gekoppeld worden aan je gegevens.

het probleem met een subquery in me forum is dat het type formulier wordt aangepast
huidig is doorlopend formulier (alle records onder elkaar)
zo gouw ik een subformulier(query) toevoeg wordt het type aangepast naar enkelvoudig formulier dus elke regel op een pagina

optie 3: zelfde als optie 2

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op donderdag 10 april 2008 @ 22:42:
optie 1: Je vuurt een losse update query uit bij het onchange event van dit combo boxje

deze methode gebruik ik op het moment, alleen met de eerste query zijn alle velden locked dus kan ik het combo boxje(voldaan) niet wijzigen in iets anders.
Ehm, je kan ze standaard niet wijzigen dus waar slaat de lock op? Btw is het een read-lock of een write-lock?
Maar ik zou dus unlocken bij het tonen, bij een on-change zelf een lock op het record gooien dan eerst even checken of de waarde in je formulier hetzelfde is als in je dbase ( oftewel heeft niemand anders hem stiekem op voldaan gezet ) indien gelijk dan veranderen en lock verwijderen. Indien ongelijk dan visuele waarde veranderen, error afhandeling in werk zetten en lock verwijderen.
optie 2: Je haalt het voldaan op met een subquery, deze kan wel gekoppeld worden aan je gegevens.

het probleem met een subquery in me forum is dat het type formulier wordt aangepast
huidig is doorlopend formulier (alle records onder elkaar)
zo gouw ik een subformulier(query) toevoeg wordt het type aangepast naar enkelvoudig formulier dus elke regel op een pagina
Snap je ook waarom access dit doet? Want ik ken access niet zo goed, maar ik kan de beweegreden erachter wel heel goed begrijpen, in wezen lock jij een heleboel records en maak je het een 2e persoon onmogelijk om dit overzicht ook in beeld te krijgen ( of een willekeurig record uit dit overzicht ) enkel en alleen maar om 1 vinkje te kunnen zetten. En dan gaat het niet over 1 tabel, maar over meerdere tabellen.
Wat jij in wezen nu verwacht is dat niemand meer iets in de urenregistratie mag doen aan een niet voldaan project ( dit valt nog enigszins te begrijpen ), maar niemand mag ook meer iets met een materiaal doen wat bij een niet voldaan project hoort.
Als je gaat normaliseren ( vb. aparte werkgevers tabel, aparte werknemers tabel, aparte lonen tabel ) dan heb je risico dat opeens het halve bedrijf niets meer kan doen omdat jij dit overzicht in beeld hebt.

Zoals Creepy al zegt, jij select hier alleen maar gegevens en vanwege de formuliermagie van access kan je dit ook editten.
Of je bouwt het om naar een behoorlijk systeem waarbij je niet vertrouwt op formuliermagie ( want zoals jij het wilt lockt dit veel te veel ) en gebruik je selects om je data op te halen, en updates om je data te veranderen. Is iets meer werk, maar mits je aan goede errorchecking en handling doet los je het vele malen netter op.
Of je verandert het locking mechanisme van access, dat hij niets meer lockt, dan kun je de formulier magie blijven gebruiken, je kan optie 1 gebruiken, alleen als je dan met zijn 2en in dit formulier aan de gang bent dan durft waarschijnlijk niemand te zeggen wat er als eindresultaat gaat komen. ( Het locking mechanisme is ergens 1-2-3 te veranderen, alleen wat ik altijd zie is dat als er dan 2 mensen in 1 record werken dat dan de 1e voor piet snot heeft zitten werken zonder waarschuwing / melding / iets )
optie 3: zelfde als optie 2
[/quote]

  • siknu
  • Registratie: Februari 2004
  • Laatst online: 30-06 15:56
Misschien wil je matrialen veranderen in materialen.
Pagina: 1