Avatar billede torejessen Nybegynder
27. november 2005 - 16:54 Der er 13 kommentarer og
1 løsning

Reload eller requery

Hej Eksperter

Jeg har en form der driller!
Der er en kombobox på den, som ikke virker, når der skal tilføjes nye poster. Den virker hvis jeg lige gemmer posten uden at tilføje noget i dette kontrolelement.
Jeg tror det skyldes at kontrolelementet er hentet gennem en mange-til-mange relation. (Formens data er fra en query der henter fra flere tabeller. Hovedtabellen Klient, forbinder via KlientId til tabellen Modelok_velkomst.KlientFk som videre forbinder til tabellen BHJlokaler Via modelok_velkomst.modelokFk til BHJlokaler.LokaleId

Nå, kontrolelementet har jeg sat til ModelokFk

Jeg vil vælge i feltet i fbm at tilføje en ny post, så kommer der bare en fejllyd.
Skal jeg vælge et andet kontrolelement? Eller skal jeg opdatere queryen på en eller anden måde? Hvor og hvordan?

Mvh
Tore
Avatar billede mugs Novice
27. november 2005 - 16:58 #1
Er combo'ens egenskab BegrænsTilListe sat til Ja?
Avatar billede terry Ekspert
27. november 2005 - 16:58 #2
Not quite sur I ubnderstand the question but you can refresh the combo with

Me.YourCombo.Requery
Avatar billede terry Ekspert
27. november 2005 - 16:58 #3
YourCombo = name of combo box
Avatar billede torejessen Nybegynder
27. november 2005 - 17:07 #4
Ja komboens valgmuligheder er limited til list.

I komboen skal man vælge mellem 4 faste lokaler, så det er helt i orden.
Hvis det blev lidt sort snak prøver jeg lige igen:

Tabel:          Klient          modelok_velkomst        BHJlokaler
fieldrelation:  KlientId        KlientFk     
fieldrelation:                  modelokFk                LokaleId

Terry, hvor skal jeg indsætte din kode? I en event i VB eller?
Avatar billede terry Ekspert
27. november 2005 - 17:11 #5
If your trying to add a new entry to your combo then take a look at this
http://www.mvps.org/access/forms/frm0015.htm
Avatar billede torejessen Nybegynder
27. november 2005 - 17:19 #6
Jeg vil ikke tilføje en ny entry til komboens valgmuligheder. Jeg vil bare at man kan vælge en af de fire foruddefinerede.
Problemet er, at det kun virker, når jeg kigger på eksisterende poster i formulare. Så kan jeg udmærket vælge en andet lokale i komboen. Men hvis jeg vil tilføje en helt ny klient, så kan jeg ikke vælge noget lokale til ham. Der kommer bare en fejllyd, når jeg vælger et lokale. Jeg er nødt til at gemme posten (Klienten) og bagefter komme tilbage til den, og så må jeg gerne vælge et lokale til ham..
Jeg har andre komboer på formularen som virker fint, men det er nogle som er er forbundet til hovedtabellen med en-til-mange relationer. Lige denne her kombo tager sine data fra en mange-til-mange relation.  Jeg gætter på det er noget af problemet..

Håber I kan hjælpe...?
Mvh Tore
Avatar billede terry Ekspert
27. november 2005 - 17:31 #7
Normally a combo is used to select a value from a related table. When an entry is chosen from the combo, the primary key value is taken from the related table and placed in a foreign key field in the table/query used in the form.

Take a good look at the query you use in teh combo and make sure that you only use the tables/fields necessary to be able to choose a record from a related table. If you have a filter on the combo which requires that a record exists in the table/query to the form then I think you will find that the query to the combo is wrong.

Hope that makes sence
Avatar billede torejessen Nybegynder
27. november 2005 - 18:31 #8
Jo det gør det vel.. Men jeg kan stadig ikke få det til at virke.
Kan jeg lave en event i en kombo, som laver en requery af hele den query der er formens data? Det skal være en event som kører FØR der kan vælges noget fra komboen..?
Avatar billede terry Ekspert
27. november 2005 - 19:03 #9
If you have just added a record to the form then you could add
Me.YourCombo.Requery in the AFTER UPDATE event but too me it deosnt sound logical to have to add a record in the table to the form before it is possible to see a value in the combo
Avatar billede torejessen Nybegynder
27. november 2005 - 19:20 #10
Hej igen Terry
Det ser ud til jeg forklarer mig dårligt.
Komboen virker fint, den viser altid de rette 4 muligheder.
Men den vil kun tillade mig at ændre/vælge værdier, når jeg er inde på nogle af de eksisterende klienter. Fx på min form, hvis en klient 4 er sat til at skulle til møde i lokale 1. Så kan jeg godt via komboen ændre lokalet til lokale 4. Men hvis jeg vil tilføje en ny klient, og vil vælge et lokale til ham, så virker komboen ikke. Den viser de rette fire muligheder, men jeg kan ikke vælge nogen. Der kommer bare en fejllyd, og feltet er fortsat tomt...
Jeg kan så bare udfylde de eksisterende data om klienten, skifte record til en anden klient, og så komme tilbage. NU kan jeg så vælge et lokale til klienten.. Men det er jo fjollet..

Er det stadig sort snak?
Avatar billede terry Ekspert
27. november 2005 - 19:30 #11
"Men hvis jeg vil tilføje en ny klient, og vil vælge et lokale til ham, så virker komboen ikke."

This to me sound as though you have a problem in your relationships. The query in the combo requires that a record exist and it doesnt until AFTER the after update event.

Try this:
Add the Me.YourCombo.Requery to the after update event.
Now try adding a record WITHOUT choosing from the combo.

Now can you choose from teh combo?

If you can then you need to look at your table relationships, specially the ones in the query to the combo.
Avatar billede torejessen Nybegynder
27. november 2005 - 22:00 #12
Jeg prøvede dit forslag, og jeg kunne stadig ikke vælge nogle elementer fra listen på comboen.
Jeg tror du har helt ret i at der er noget galt i min relation.
Kan du forklare hvordan man laver en kombo på en form, som skal udvælge et felt fra en tabel der er relateret mange-til-mange til hovedtabellen? Hvad skal stå som kontrol-elementet?

Hovedtabellen hedder KlientTbl.
Den relaterer sig til en lokaletabel BHJlokaler.

Det gør den via en samlertabel (conjunction-table) som bla har foreign keys fra de to andre tabeller.

Komboen skal vælge primærfeltet fra BHJlokaler.

Skal kontrolelementet så være primærfeltet i BHJlokaler, eller dens forign key i the conjunction table?

Jeg har prøvet begge, men uanset har jeg ikke fået det til at virke..???
Avatar billede terry Ekspert
28. november 2005 - 08:12 #13
27/11-2005 17:31:58 > "Normally a combo is used to select a value from a related table. When an entry is chosen from the combo, the primary key value is taken from the related table and placed in a foreign key field in the table/query used in the form."

Lets look at this another way. You have many "klienter" and many "lokaler". Your form will very likely only show one "klient". But that "klient" can, with a many-to-many relationship, reserve more than one "lokal". So, if I have understood what your after, you really need a sub form where you can view all "lokaler" this "klient" has reserved.
The sub form will have the conjunction-table as its source, and becuase it is linked to the main table it will get its foreign key from the "klient". The other foreign key (modelokFk) is taken from a combo which now only has a query which takes its data from BHJlokaler. You can also have a field on the sub form to show the actual "lokal navn" if you want.

Hope that makes sence, but it is the normal method to solve many-to-many relationships.
Avatar billede terry Ekspert
29. november 2005 - 12:25 #14
thanks, hope you could my input
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester