[MS Access / VBA] Update Query adhv Recordset

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Ik heb een formuliertje met een recordset gebaseerd op een query.
De gebruiker kan nu leuke filtertjes toepassen hierop.

Nu wil ik een update query uitvoeren die de velden die nu geselecteerd zijn update.
Is dit mogelijk op een betrekkelijk eenvoudige manier? Of kan ik alleen maar door de complete recordset heenlopen en elk veld met de hand updaten? (Dat is wat ik nu doe.)

Bij dit voorbeeldje is dat niet echt zo'n probleem, dit gaat vrij snel. Maar elders heb ik een soortgelijk iets, maar daar voer ik een insert query op een table aan de hand van de huidige selectie, en dat gaat echt ontzettend langzaam, als ie 25.000 queries uitvoert, telkens met weer een record uit mn recordset als invoer parameters voor die query.

Iemand ideeen? Vind niet echt iets bruikbaars met google / got search.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 26-07 17:36

NMe

Quia Ego Sic Dico.

Wat ben jij nou voor /14-regular? :+ Waar hoort mijn topic? :*

PRG>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Je m'excuse.
Ik heb tot voor kort nog nooit wat gedaan met Office producten (voor mn werk dan), en had er niet bij nagedacht dat er een apart hoekje op GoT was voor het aanklooien met deze software. ;)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Grijze Vos schreef op dinsdag 10 oktober 2006 @ 15:13:
dat er een apart hoekje op GoT was voor het aanklooien met deze software. ;)
Jij weet hoe je vrienden maakt ;)

Maar ik snap het niet helemaal. Je selecteert *velden* en die wil je updaten en dan met 25000 tegelijk? Eén insert cq updatequery die zijn where conditie's overneemt uit je formulier behoort niet tot de mogelijkheden, m.a.w. de selectie van die 25000 is volslagen willekeurig?

Al geprobeerd om ipv een insertquery een ado insert/update(batch) op een recordset te gebruiken?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Was niet negatief bedoeld hoor. ;)

Hmz, van wat ik zie is wat jij zei een .net feature, dus dat gaat het sowieso niet worden.

De user kan idd random filters gebruiken om die selectie te maken. Is er een manier om de gebruikte SQL-query om de huidige recordset op te halen te achterhalen? Dan zou ik die selectie-query kunnen gebruiken in een insert statement.

Ik denk dat de snelste manier waarschijnlijk is door mijn data te flaggen , en dan middels 1 insert query die geflagde elementen te gebruiken in mijn selectie van die insert query.
Dat zal iig een stuk sneller gaan dan 25000 losse insert queries.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Niet alle ado is ado.net hoor ;)

En wat betreft die bronquery. Die moet je ergens instellen, dus daar kun je hem ook uitlezen. Werkt je formulier met formulierfilters dan lees je die uit in de filter property van je formulier. Als je gebruiker idd willekeurig records in de gui selecteert dan zal flaggen ongeveer het enige zijn wat er op zit denk ik.

misschien moet je iets meer informatie geven over hoe je het e.e.a. hebt opgezet, want het is nu een tikje koffiedik kijken

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
tabel1
ID1
UserID
BlaID
Random Data

tabel2
ID2
UserID
Random Data

formulier gebruikt een select query op tabel1 als start query.
(iets in de trant van SELECT * FROM tabel1 WHERE BlaID=2)

Dan heeft de gebruiker dat formulier voor zich en kan hij de selectie verkleinen middels filters op de random data. Dan heeft hij uiteindelijk een x aantal records over, en die records moeten geinsert worden in tabel2. (Alleen het UserID hoeft geset te worden in die tabel, de rest blijft verder nog leeg.)

ID1 en ID2 zijn gewoon PK autoincrements.

Hoop dat dit het iets verduidelijkt.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 26-07 16:53

Dido

heforshe

Ik kan me twee dingen bedenken:
Allemaal pseudocode!):
code:
1
2
my_query = "INSERT INTO tabel2 fields(UsirID, RandomData) " & me.query.value
docmd.SQL(my_query)

Of je definieert een recordset voor tabel 2 en je doet iets als
code:
1
2
3
For each record in me.recordset
tabel2rs.insert values(record.UserID, record.randomdata)
next

?

Wat betekent mijn avatar?


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je heb thet over filters. Is dat eigen maaksel of het access formfilter? Want in het laatste geval geeft me.filter een kant-en-klare where conditie die je zo in je sql string plakt en dan met execute uit kunt voeren.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Niesje schreef op woensdag 11 oktober 2006 @ 11:48:
Je heb thet over filters. Is dat eigen maaksel of het access formfilter? Want in het laatste geval geeft me.filter een kant-en-klare where conditie die je zo in je sql string plakt en dan met execute uit kunt voeren.
Dat zijn idd de access form filters.
Bedankt, ik ben eruit dankzij je tip.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1