toevoegquery verandert in tabelmaakquery

Status
Niet open voor verdere reacties.

GerwinEderveen

Gebruiker
Lid geworden
18 apr 2011
Berichten
65
Beste Allemaal,

Eerst had ik een toevoegquery, maar deze zette alleen extra waarde in de tabel en als ik dan een waarde eruit wilde halen pakte hij automatisch de oudste waarden. Nu dacht ik als ik dit in een tabelmaakquery verander, dan ververst hij de data. Echter geeft hij dan de foutmelding. Hij wordt geel bij de volgende code.

Code:
Private Sub button_weekcode_Click()
DoCmd.OpenQuery ("Qry_weekcode")
End Sub

Zelf denk ik dat er iets fout zit bij docmd.openQuery moet dit een andere code zijn bij een tabelmaakquery?

het kan ook zijn dat de fout komt doordat er in het zelfde formulier waarden uit deze tabel worden gehaald. Kan iemand mij helpen?

met vriendelijke groet,

Gerwin
 
het kan ook zijn dat de fout komt doordat er in het zelfde formulier waarden uit deze tabel worden gehaald.
Als de tabel geopend is in een formulier, kun je 'm niet vervangen met een tabelmaakquery. Ik zou de oplossing eerder zoeken in het oorspronkelijke probleem. Een toevoegquery zet inderdaad records erbij in een tabel. De clou ligt uiteraard in de naam :) Als je een record wilt verwijderen uit een tabel, moet je wel aangeven welk record(s) moet(en) worden verwijderd. En je moet daarna je formulier verversen (Requery) omdat de recordset van het formulier nog is gebaseerd op de oorspronkelijk in het formulier geladen records.
 
Hoe kan ik er dan voor zorgen dat hij de gegevens pakt die daadwerkelijk zijn toegevoegd en niet de oude gegevens?
 
Haal je niet een aantal zaken door elkaar? Een Toevoegquery voegt een compleet record toe; als je formulier is gebaseerd op de betreffende tabel, gebeurt dat al automatisch. Geldt overigens ook voor wijzigingen op het formulier... Dus als je iets toe wilt voegen aan een tabel is mijn vraag: welke tabel? En waarom zou hij niet de gemuteerde/gewijzigde gegevens nemen?
 
Het is de tabel weekcode. Ik heb een formulier gemaakt met een password waardoor er maar één persoon is die dit kan doen. hij voegt de code toe maar ik wil deze persoon laten zien wat het laatste was wat hij heeft ingevuld(de waarde die gebruikt wordt voor de to do list). Er zijn verschillende weekcodes(je kent het voorbeeld wel over review, cancel etc.) Ik wil niet dat er een keuze gemaakt moet worden welke record er gebruikt moet worden. HEt moet het laatst toegevoegde nummer zijn.

gr Gerwin
 
Ik snap er nog niet zoveel van.... behalve dat er blijkbaar een gebruiker is die op een knop klikt om iets toe te voegen aan de tabel weekcode? En wat moet je met het laatste nummer? Dat staat er al in, dus dat zal vast niet nog een keer moeten worden toegevoegd..
 
De codes die de gebruiker invoert wordt gebruikt in een ander formulier voor het controleren van materialen. Echter moet het wel zo zijn dat de nieuwste waarden, die toegevoegd zijn, gebruikt worden. (met een toevoegquery komt er een rij bij in de tabel). In hetzelfde formulier(waar de gebruiker de waarden invoert) haal ik ook gegevens uit deze tabel om te laten zien wat er het laatst is toegevoegd. Dit zou moeten veranderen bijvoorbeeld bij het heropenen van het formulier. Hopelijk is het nu iets duidelijker?

gr Gerwin
 
Laten we eens kijken of ik het snap :)
Dus een gebruiker heeft formulier1 op zijn scherm, en ziet de laatste waarden uit je controletabel. Deze waarden moeten met 1 worden verhoogd, en toegevoegd aan die tabel Dat mag, neem ik aan, maar één keer gebeuren, dus als je per ongeluk twee keer op Toevoegen klikt, mag er de tweede keer geen nieuw record worden toegevoegd. Anders heb je een hoogste waarde die te hoog is. Dus de vraag is: heb je dat ook al afgevangen? En moet het ophogen van de waarden met de hand gebeuren? En zo ja, kan dat niet automatisch? Wat moet er gebeuren als het record is toegevoegd? Wil je dan de nieuwe waarden zien op je formulier? En moeten die dan verder op andere formulieren gebruikt worden? En wanneer mag/moet het hele proces worden herhaald om nieuwe nummers te genereren?
 
uhm nee dat is het niet helemaal. De waarden voor verschillende actie codes(dus review, cancel, write off etc.) moeten handmatig aangepast worden. De ene week moet de waarde op 10 staan de andere week op 5 (Ligt eraan wat de gebruiker wilt). dus de gebruiker zou dit best iedere week of een keer in de maand moeten kunnen doen. En de bedoeling is dat de waarden eerst groter zijn (bijv. 40) en naar een tijdje worden ze steeds kleiner(bijv.12). Dit is om ervoor te zorgen dat een mrp controller niet ineens heel veel materialen krijgt maar dat dit gefaseerd gaat.

Daarnaast een vraag hoe je verschillende query's aan elkaar kan knopen? De query's halen allemaal een aantal materialcodes eruit. Deze wil ik echter van 3 query's onder elkaar in één formulier krijgen(ik ben al bezig met een query bouwen echter lukt dit nog niet echt). Krijg wel de juiste codes, echter in 3 kolommen en met alles aan elkaar geknoopt(heel logisch omdat je ze naast elkaar zet) hoe kan je dit in één kolom krijgen?
gr Gerwin
 
De laatste vraag is simpel: met een Union query. Daarmee bouw je in SQL een aantal SELECT queries op die het resultaat in één veld laten zien. Een voorbeeldje:


SELECT Last(Customers.CustomerID) AS Klant, "Duitsland" AS Land
FROM Customers
WHERE (((Customers.Country)="Germany"))
GROUP BY "Duitsland";

Code:
SELECT Last([Cancel]) AS Actiecode, "Cancel" AS Soort FROM Controletabel
UNION
SELECT Last([review]) AS Actiecode, "Review" AS Soort FROM Controletabel
UNION
SELECT Last([Write Off]) AS Actiecode, "Write Off" AS Soort FROM Controletabel

Maakt twee kolommen: een kolom Soort met de codeomschrijving, en een kolom met de actiecode.
De query is een vereenvoudige vorm overigens: maak eerst één query die laat zien wat je wilt, en kopieer daar de SQL van, en maak bovenstaande constructie aan. Een Union query kun je alleen in het SQL scherm maken; niet via het query-ontwerp.
 
Hier zit toch geen antwoord van de eerste vraag bij?

even over de tweede: In de query's hebben ze allemaal een material nummer(dus bijv: 1234.123.12345 etc.) Deze komen niet overeen bij de query's. je wilt dus de material nummers onder elkaar zetten:
1234.123.12345 (Qry.newintake)
4321.123.65432(Qry.newintake)
1234.123.12346(Qry.bckground)
1234.123.45678(Qry.wrongcomment)
etc.

Ik krijg het namelijk niet werkend en snap niet helemaal hoe ik het moet doen. Zou je het met deze dingen nogmaals weer kunnen geven(misschien begrijp ik het dan beter).

gr gerwin
 
Als ik het goed begrijp, heb je dus allemaal losse queries gemaakt om het materiaalnummer op te sporen? Dat kan uiteraard, al zou ik de oorspronkelijke queries gebruiken om de UNION query te maken, want dat scheelt weer een hoop queries. Maar op basis van je losse queries zou het dan zo moeten:

Code:
SELECT [material nummer], "NewIntake" AS Tabel FROM newintake
UNION
SELECT [material nummer], "BckGround" AS Tabel FROM bckground
UNION
SELECT [material nummer], "WrongComment" AS Tabel FROM wrongcomment

Je eerste vraag had inderdaad nog geen antwoord gekregen. En nu ook niet :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan