Toon posts:

[Access2000] record verwijderen op excl. geopende tabel*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleem= Ik heb een hoofdformulier met allerlei gegevens over een werknemer, ook op welke afdeling hij werkt. Deze gegevens komen uit meerdere tabellen (tabel werknemer, tabel afdelingen). In de tabel werknemer staat een foreign key afdelingscode die primary key is in tabel afdelingen. In de tabel afdelingen staan 2 kolmmen: afdelingscode en afdelingsnaam.

Ik open in het hoofdformulier een pop-up scherm waar ik ook weer via een apart pop-up venster een afdeling kan toevoegen of verwijderen. Het toevoegen gaat perfect, maar als ik een afdeling wil verwijderen krijg ik deze melding:
"De tabel afdelingen is exclusief geopend door een andere gebruiker of geopend met behulp van de gebrukersinterface en kan niet door via programmering worden gemanipuleerd."

Er is maar 1 gebruiker en dat ben ik.
Wat moet ik doen, wat doe ik fout. Ik heb de query getest en deze werkt (de query wordt uitgevoerd als ik op een knop klik, nadat ik een afdeling heb geselecteerd uit een keuzelijst).

[ Voor 2% gewijzigd door Verwijderd op 10-12-2002 10:12 . Reden: selectievakje moest keuzelijst zijn ]


  • whoami
  • Registratie: December 2000
  • Nu online
Hoe verwijder je dat record, of hoe wil je dat record verwijderen? Maw, hoe ziet de code eruit om een record te verwijderen? (Post nu niet je volledige code ;) )

Heb je die tabel nog ergens anders open staan?

https://fgheysels.github.io/


Verwijderd

Topicstarter
in het hoofdformulier open ik de tabel afdelingen via een selectiequery waarmee ik alle gegevens op het formulier zet per werknemer. In het pop-up venster afdelingen open ik de tabel afdelingen om de afdelingscode en afdelingsnaam in een keuzelijst en tekstvak te zetten. Daarna kun je naar 2 andere pop-up vensters openen. 1 om een afdeling te verwijderen, in dit pop-up venster open ik de tabel afdelingen en om alle afdelingscodes in een keuzelijst te zetten doe ik: SELECT [afdelingen].[afdelingscode] FROM afdelingen;

De verwijder query:DELETE afdelingen.afdelingscode, afdelingen.*
FROM afdelingen
WHERE (((afdelingen.afdelingscode)=[Forms]![pop-up verwijder afdeling]![Keuzelijst met invoervak3]));

[ Voor 3% gewijzigd door Verwijderd op 10-12-2002 10:25 . Reden: typefouten ]


Verwijderd

Topicstarter
code van pop-up venster verwijder afdeling:

Dim stDocName As String
If IsNull(Me![Keuzelijst met invoervak3]) Then
MsgBox "Selecteer een afdeling om deze te kunnen verwijderen."
Else
stDocName = "Query verwijder afdeling"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Forms![afdelingen].Refresh 'onderliggend pop-up venster refreshen en requeryen
Forms![afdelingen].Requery
DoCmd.Close
End If

  • whoami
  • Registratie: December 2000
  • Nu online
Een 'actie-query' (INSERT, UPDATE, DELETE) moet je imho niet met OpenQuery openen, maar met een andere method (ExecuteSQL oid). OpenQuery is enkel voor SELECT queries dacht ik...

tip: gebruik [code ]-tags om je code uit te lijnen.

[ Voor 14% gewijzigd door whoami op 10-12-2002 10:30 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik heb het verwijderen van projecten exact hetzelfde opgebouwd en dit gaat wel goed, ook hier gebruik ik openquery. Alleen nu staan de projecten in het hoofdformulier in een subformulier en bij het afdelingen probleem staan de afdelingen gewoon direct in het hoofdformulier. Kan het hier aan liggen?

Verwijderd

whoami schreef op 10 December 2002 @ 10:30:
Een 'actie-query' (INSERT, UPDATE, DELETE) moet je imho niet met OpenQuery openen, maar met een andere method (ExecuteSQL oid). OpenQuery is enkel voor SELECT queries dacht ik...
Deze queries kan je ook openen mbv DoCmd.OpenQuery

Heb het wel ff geprobeerd, want een Lite-Mod geef je natuurlijk niet zomaar ongelijk ;)

Vraagje
Gebruik je de Switchboard manager om alles te sturen, of heb je zelf een form gemaakt?

Waarschijnlijk kan je het record niet wissen omdat je form erin "kijkt". De manier die ik ervoor gebruik is om de recordsource van het form op null te zetten, en dan het record te wissen, daarna de recordsource weer terug instellen en voila (werkt niet in alle gevallen.

dit doe ik zo:
code:
1
2
3
4
5
6
7
Dim OriginalRecordsource
OriginalRecordsource = Me.Recourdsource
Me.RecourdSource = ""

Voer code uit......

Me.RecordSource=OriginalRecourdSource


O.i.d. :)

Verwijderd

Topicstarter
thanx skyper, zal eens proberen.

  • whoami
  • Registratie: December 2000
  • Nu online
[nohtml]
Verwijderd schreef op 10 december 2002 @ 10:47:
[...]


Deze queries kan je ook openen mbv DoCmd.OpenQuery

Heb het wel ff geprobeerd, want een Lite-Mod geef je natuurlijk niet zomaar ongelijk ;)
Nouja, ik had dan ook gezegd IMHO. ;)
* whoami heeft zo geen ervaring in VBS in Access.
* whoami heeft eigenlijk totaal geen ervaring in VB/VBS

:o

https://fgheysels.github.io/


Verwijderd

Topicstarter
zet je de recordsource van de onderliggende formulieren op null, dus niet van het actieve pop-up venster?

Verwijderd

Topicstarter
zelfde probleem als ik recordsource van pop-up venster verwijder afdeling op null zet.

Verwijderd

Probeer dit eens:
Waarom sluit je die formulieren dan niet gewoon, en open je ze weer als je de afdeling verwijderd hebt??

De query van waaruit je de gegeven wist, is die opgebouwd uit meerdere queries?? Is dit het geval, dan kan je zo en zo niets wissen.
Probeer maar eens: open de database-view van de betreffende query, en probeer daar eens een waarde in te wissen, als dit lukt, is er niks aan de hand, lukt dit niet, en staat er This recordset is not updatable dan het je een query die opgebouwd is uit meerdere andere o.i.d

Het kan ook nog zijn dat je de instellingen van je form op updatable= false hebt staan o.i.d.

Ander probleem kan zijn dat je in je database structuur (heb je die??) een Parent probeert te wissen terwijl er nog kinderen zijn.

Ehhh... in jouw geval dus een afdeling terwijl er nog mensen werken.... :?

We gaan gewoon net zolang door tot je eruit bent 8)

Enne Whoami, Als je denkt dat je eigenlijk maar weinig weet van VBA / VB, dan weet ik nog minder, je hebt mijn problemen al vaak opgelost :)

Verwijderd

Topicstarter
De query werkt goed, heb ik al geprobeerd door hem te runnen, en hij verwijderde de afdeling gewoon.

Query sql code=
DELETE afdelingen.afdelingscode, afdelingen.*
FROM afdelingen
WHERE (((afdelingen.afdelingscode)=[Forms]![pop-up verwijder afdeling]![Keuzelijst met invoervak3]));

Hoe heet de instelling updatable in access 2000? Heb bewerken toestaan, verwijderingen toestaan en toevoegingen toestaan op "ja" staan. Gegevensinvoer = nee.

Verwijderd

Verwijderd schreef op 11 December 2002 @ 13:10:
Hoe heet de instelling updatable in access 2000? Heb bewerken toestaan, verwijderingen toestaan en toevoegingen toestaan op "ja" staan. Gegevensinvoer = nee.
Allow Deletions, dus dat zal bij jou wel zijn verwijderingen toestaan.

[n00bmode]
Needless to say :) maar deze vindt je in de FORM instellingen van het form waar de gegevens gedelete worden, dus waar de querie als recordsource aanhangt!
[/n00bmode]

Verwijderd

Topicstarter
lukt als ik de recordsource van alle onderliggende forms op null zet en ook de sorce van alle besturingselementen op deze forms.
Pagina: 1