Zelfde waarde invullen in een veld van meerdere records

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.274
Denk dat ik iets vraag dat onmogelijk is, maar je weet nooit...

Kan je in access meerdere records selecteren en dan in een bepaald veld (van al die records) eenzelfde waarde invullen?

Zoals in Excel CTRL-ENTER

Liefst zonder VBA, het is naar aanleiding van een vraag in een "gewone" Access cursus.

Indien toch via VBA, iets heel eenvoudig...
 
Het kan uiteraard altijd met VBA, maar ook met een bijwerkquery. Dat is eigenlijk de enige optie als je geen VBA wil gebruiken. Maar de techniek die in Excel gebruikt wordt, is niet geschikt voor Access, daar wordt elk record apart aangepast.
 
Denk niet dat het in dit geval kan met een bijwerkquery. Dame in kwestie wil gegevens invullen in het veld "user" als dit veld leeg is. Dan wil ze bvb in dat veld voor de eerste 20 records "user1" invullen, voor de volgende 20 "user2" enz. Ik heb geprobeerde met een combinatie van "top20" en bijwerkquery maar deze 2 zijn niet compatibel. Dus met één query lukt het niet.
 
Begrijp ik goed dat ze bij het aanmaken van de records die 'vaste flexibele' waarde wil gebruiken? Dat kan je wel doen met een standaardwaarde op het veld. In dat geval zou ik een teller gebruiken op basis van DCOUNT. Bijvoorbeeld zo: ="User" & (DCount("TabelID";"Tabel")\20)+1
 
Neen, "user1" is maar een voorbeeld. Het zijn echte namen, collega's die een bepaald record moeten opvolgen.
 
Het helpt als je het probleem correct beschrijft, dan krijg je betere antwoorden :). Dan kun je deze techniek overigens nog steeds gebruiken om groepen van twintig records te maken met een extra veld in een query. Deze ‘rekenmethode’ genereert namelijk volgnummers per twintig records. Dat nummer kun je dan gebruiken met een Bijwerkquery.
 
Klopt, maar als de user in sommige records eerder al manueel werden ingevuld worden de overige records waar dat veld leeg is niet meer in correcte groepen van 20 verdeeld.
En de tabel komt dan nog uit SAP.
 
Laatst bewerkt:
Je maakt het er niet makkelijker op :). Bestaande records kun je uiteraard met een Bijwerkquery nog steeds wel bijwerken, doordat je een teller in die query kan zetten die de groepen van 20 records maakt met de formule. Dan heb je wel kans dat de bestaande (lees: ingevulde) namen worden veranderd, al zou je daar in de Bijwerkquery nog wel rekening mee kunnen houden denk ik door met een IIF het veld te controleren en dus eventueel (bij leeg) te vullen. Maar het begint er op te lijken dat handmatig invullen (of de lijst volledig vervangen/invullen) de makkelijkste opties zijn.

Of de tabel in Excel vullen, importeren en met een Bijwerkquery in Access alsnog aanvullen.
 
Dat van die Excel heb ik ondertussen ook bedacht :). Ze had nog andere problemen waarvoor Excel eigenlijk een betere tool is :)
 
Hallo, een mogelijke oplossing: in de header van de form een combo box met de mogelijke namen en een actieknop. Verder aan de onderliggende tabel een extra yes/no veld toevoegen default waarde = 0 dat men via een checkbox op het formulier in de detailsectie zet. Men kiest de gewenste gebruiker in de combo box, checkt vervolgens alle aparte records die door deze gebruiker moeten opgevolgd worden en als men op de actieknop klikt start een update query die de gekozen gebruiker bij alle aangevinkte records invult en vervolgens het yes/no veld overal terug op 0 zet.
 
Yep, mijn voorstel kan zonder VBA:
de combobox heeft geen VBA nodig. Je maakt een unbound combobox (kan via wizzard) en het enige dat je dan moet doen is een actieknop aanmaken en met de wizard aangeven dat deze de actiequery moet starten ;-) . Vermoedelijk kan het zelfs via een hyperlink in die knop. De query verwijst in de criteria naar de combo box. Nul programmatie.
 
een 10 tal minuuutjes noem ik niet veel werk, en bovendien het werkt meester
 
Er zit uiteraard wel programmacode achter, alleen zit die bij jou in een macro. Een hoop werk voor een eenmalige actie :).
Overigens heeft Rene dit zelf uiteraard ook al bedacht, daar zie ik ‘m wel voor aan. En afgekeurd :D.
 
Ik vind dat idee van Noella eigenlijk nog niet zo slecht, macro om een query die als criterium een keuzelijst op een formulier gebruikt heb ik wel uitgelegd in die cursus.
En misschien niet zo duidelijk geweest, het is geen éénmalige actie. Ik ga het eens proberen en die dame terug proberen te contacteren.
 
Ik heb de knop toch maar met VBA gedaan (te veel zoekwerk met een macro en collega van de dame heeft al een beetje met VBA gewerkt)

Code:
Private Sub cmd_Remplir_Click()
Dim i
For i = 1 To 2
'als je de procedure maar één keer uitvoert wordt er altijd 1 record vergeten - snap niet waarom
With DoCmd
    .SetWarnings False 'supprimer les messages
    .OpenQuery "qry_Users"
End With
DoCmd.SetWarnings True
Me.Refresh
Next i

End Sub

en de query:

Code:
UPDATE tbl_ARemplir SET tbl_ARemplir.[User] = [forms]![frm_ARemplir]![cbo_Users], tbl_ARemplir.ARemplir = False
WHERE (((tbl_ARemplir.ARemplir)=True));
 
Ik zou zelf één van deze varianten gebruiken:
Code:
    If Me.Dirty Then Me.Dirty = False
    Set rs = CurrentDb.OpenRecordset("SELECT User, ARemplir FROM tbl_ARemplir WHERE ARemplir = True")
    With rs
        .Edit
        !User = Me.cboUsers
        !ARemplir = False
        .Update
        .MoveNext
    End With

Code:
    If Me.Dirty Then Me.Dirty = False
    CurrentDb.Execute "UPDATE tbl_ARemplir SET (User = " & Me.cbo_Users & ", ARemplir = False) WHERE ARemplir=True", dbFailOnError
    DoCmd.SetWarnings True
    Me.Refresh
 
Zeker eleganter, en toepasbaar in een VBA opleiding, maar ik vrees Chinees voor mensen die een "gewone" cursus hebben gevolgd. DAO komt daar uiteraard niet aan bod. Maar zelf snap ik het ook niet echt. Wat betekent dirty? En is dat een verklaring voor het feit dat de eerste keer het laatst aangevinkte record niet wordt gewijzigd?
Heb hoe dan ook mijn eerdere versie al doorgestuurd maar bijleren kan nooit geen kwaad hé :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan