Toon posts:

[Access] Optional dropdownbox geeft mandatory error *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben een (doorlopend) formulier aan het maken in MS-Access. De eerste kolom is een dropdownbox die waarden bevat die uit ophaal uit een tabel. Tot zover geen probleem.

Belangrijk om te weten is dat dit veld NIET verplicht is. Maar zodra ik een record toevoeg, dan begint access te klagen dat die de (niet ingevoerde) waarde niet kan vinden.


Wat kan ik het beste doen?

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

Zorgen dat ie die waarde wel kan vinden, dus in de tabel waar je waardne uitkomen een record opnemen met in dat veld een NULL ?

edit: of Whoami's advies opvolgen :P

[ Voor 14% gewijzigd door Dido op 22-12-2003 14:41 ]

Wat betekent mijn avatar?


Verwijderd

Ik neem aan dat je bedoelt dat hij de "net ingevoerde" waarde niet kan vinden. Lijkt me niet meer dan logisch dat de "niet ingevoerde" waardes inderdaad niet gevonden worden! ;)

Mijn eerste ingeving is dat je een refresh moet uitvoeren op de bron van je data voordat nieuw ingevorde data te zien is in je combobox.

probeer eens:

code:
1
DoCmd.Runcommand (acCmdRefresh)


in de AfterUpdate() van je invoerbox.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

mmm, interessant. Bedoel je inderdaad de net ingevoerde, of de niet-ingevoerde waarde?
Ik ging niet uit van een tikfout, omdat je expliciet vermeldde dat het veld niet verplicht was.

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Verwijderd schreef op 22 december 2003 @ 14:43:
Ik neem aan dat je bedoelt dat hij de "net ingevoerde" waarde niet kan vinden. Lijkt me niet meer dan logisch dat de "niet ingevoerde" waardes inderdaad niet gevonden worden! ;)

Mijn eerste ingeving is dat je een refresh moet uitvoeren op de bron van je data voordat nieuw ingevorde data te zien is in je combobox.

probeer eens:

code:
1
DoCmd.Runcommand (acCmdRefresh)


in de AfterUpdate() van je invoerbox.
ok, dat zou op zich kunnen, maar dat is mijn probleem niet.

Bijvoorbeeld:
In de combobox staan de waarden:
'BMW'
'SEAT'
'VOLKSWAGEN'

Het record dat ik ga opslaan bevat een 'accessoire'.
Bijvoorbeeld:
Een velg voor een VOLKSWAGEN, in dat geval kan de combobox gebruikt worden.

Maar een autoradio hoeft niet perse aan een automerk gelinked te zijn, dus wil ik die leeglaten.


Ik hoop dat dit het wat duidelijker maakt.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

In plaats van een NULL record toevoegen aan je tabel, kun je toch een "DIVERS" record aan je merkentabel toevoegen?

Kun je anders bij de bron van je CB niet iets als

select merk as naam from merkentabel union select null as naam from merkentabel;

neerzetten?

(Slordig, lelijk, etc. Maar wellicht dat acces het slikt?)

[ Voor 49% gewijzigd door Dido op 22-12-2003 14:49 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
de 'manager' zegt dat het veld dan leeg moet zijn...... dus helaas is 'divers' geen optie.

[ Voor 20% gewijzigd door Verwijderd op 22-12-2003 14:49 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

Een null-record al geprobeerd? Of is een spatie "leeg" genoeg? (In mijn ervaring vaak wel ;) )

[ Voor 52% gewijzigd door Dido op 22-12-2003 14:50 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Dido schreef op 22 december 2003 @ 14:49:
Een null-record al geprobeerd? Of is een spatie "leeg" genoeg? (In mijn ervaring vaak wel ;) )
Null record is geen optie...

Als ik een spatie probeer:
"You tried to assign the null value to a variable that isn't a Variant Data type"


Dit is de 'normale' error:
"The Microsoft Jet database engine can't find a record in the table 'tblGroep' with key matching field(s) 'LDGroepId'"

Verwijderd

Hm, dan begreep ik inderdaad je probleem niet helemaal.

Het wordt er echter niet duidelijker op. De tabel waaruit je de waarden (merken) haalt is dat dezelfde tabel als waar je het nieuwe record in gaat opslaan? Op zich moet het namelijk helemaal geen probleem zijn om een record toe te voegen waarbij een van de invoervelden leeg (null) is. Ik krijg het idee dat de combobox zich niet gedraagt als invoerveld.

Verwijderd

Topicstarter
De waarden van de combobox staan in een ANDERE tabel!

dus bijv.

tblAutomerken
tblAcc


Ik probeer een record toe te voegen aan tblAcc, waarvan 1 veld gerelateerd is aan het id van tblAutomerken

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

Een spatie is geen nullvalue! Dus probeer je geen spatie te assignen ;)

De tabel waar je merken uitkomen heeft geen record met een nullvalue, dus is het logisch dat ie die niet vindt. Je zult dus in die tabel een nullvalue moeten toevoegen, of een spatie. (Tussen aanhalingstekens zetten wil wel eens helpen ;) )

Wat betekent mijn avatar?


Verwijderd

Topicstarter
dan krijgt die 'nullvalue' toch ook een id dankzij de autonummering?!?!?!

En dus zal dit id gebruikt worden in de tblAcc wat NIET mag..... :-(

[ Voor 38% gewijzigd door Verwijderd op 22-12-2003 15:06 ]


Verwijderd

Is de controlsource dan misschien ook die andere tabel?

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

Ja, en? Je laat toch niet de ID's zien, neem ik aan? Dus is je veld visueel leeg, hoewel er wel een ID instaat...

Twee dingen die ik me nu bedenk:

Als je er een combobox van maakt kun je, als ik me niet vergis, ergens aangeven dat de geselecteerde waarde niet in de datasource van de box hoeft voor te komen.

Daarnaast zou het kunnen dat je deze error krijgt omdat acces bij het invoeren van een foreign key controleert of er in de andere tabel wel een primeary key is. In hoeverre Access dan accepteert dat een veld optioneel is weet ik niet. Het lijkt me niet onwaarschijnlijk dat ie dat niet pikt :)
Dan zul je dus toch een "leeg" veld in je merkentabel op moeten nemen.

Wat betekent mijn avatar?


Verwijderd

Topicstarter
kan ik die combobox niet vullen mbv VB-script???

En dan gewoon de eerste regel leeg laten ??

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Ik denk zelfs dat Access het niet toestaan om op een foreign - key veld een NULL waarde in te geven, ook al is dat foreign-key veld als 'niet verplicht in te geven' gemarkeerd.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 22 december 2003 @ 15:13:
Ik denk zelfs dat Access het niet toestaan om op een foreign - key veld een NULL waarde in te geven, ook al is dat foreign-key veld als 'niet verplicht in te geven' gemarkeerd.
Dat is wel toegestaan, want als ik deze bewerkingen gewoon uitvoer in de tabel, dan werkt dit perfect!

Verwijderd

Topicstarter
Hmmmz... het werkt nu....

Don't ask me why....


ps. had ik al eens gezegd dat ik MS-ACCESS daadwerkelijk HAAT??!?!?!?!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:19

Dido

heforshe

Daar was ik ook net achter (dat daty mocht) :P
Lege foreign keys vindt ie fijn :D Maar waarom gaat ie toch flippen...

Ik heb echter ook geen problemen op een form, dus wat er bij jou fout gaat :?

(Wat er dus fout ging, want als het nu werkt...)

[ Voor 43% gewijzigd door Dido op 22-12-2003 15:25 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Ik snap ook niet dat mensen PERSE een applicatie in access willen hebben. Er zijn zoveel beperkingen.... ik bouw het liever in Java ofzo, daar heb je tenminste full-control.

Verwijderd

Topicstarter
Ik had wel wat veranderd!!!!

Private Sub selGroepId_NotInList(NewData As String, Response As Integer)
'Me.LDGroepId = Null
End Sub


En het gekke is: als ik die commentaar regel ERUIT laat dat krijg ik de foutmelding weer......


Dit veroorzaakt ook geen foutmelding meer (is dus zonder apostrof)
Private Sub selGroepId_NotInList(NewData As String, Response As Integer)
Me.LDGroepId = Null
End Sub

[ Voor 29% gewijzigd door Verwijderd op 22-12-2003 15:55 ]

Pagina: 1