Avatar billede it-dyret Nybegynder
30. januar 2002 - 14:20 Der er 18 kommentarer og
1 løsning

Ændre valgmuligheder i en comboboks via valg i anden comboboks

Jeg har en formular med bl.a. 3 combobokse (herefter benævnt (1), (2) og (3)), hvor jeg ønsker, at listen med valgmuligheder i skal ændre efter, hvad der er valg i en foregående comboboks. Således skal valget i (1) være afgørende for listen i (2) og (2) for i (3).

(1) indeholder mulighederne fra tabellen type,
(2) ------------------------------------ gruppe og
(3) ------------------------------------ kategori

For at ovenstående skal kunne lade sig gøre, indeholder tabellen gruppe et typefelt og tabellen kategori indeholder et gruppefelt.

MEN jeg mangler noget kode, som kan få den beskrevne funktionalitet til at virke. Kom venligst med udførligt eksempel!
Avatar billede terry Ekspert
30. januar 2002 - 14:27 #1
you can use the rowsource property to alter the contents. Do this in the AfterUpdate event

Me.TheCombo.rowsource = "......"
Avatar billede terry Ekspert
30. januar 2002 - 14:32 #2
Me.cboGruppe.RowSource = "SELECT * FROM GRUPPE WHERE Type = " Me.cboType
Avatar billede it-dyret Nybegynder
30. januar 2002 - 14:32 #3
Det var også min ide, men jeg er i tvivl om, hvordan koden skal se ud, hvor du har skrevet "...."

Er det noget problem, at jeg bruger "fortløbende formular", som standardvisning - eller holder "Me"-delen af koden styr på, at det kun er det aktuelle post, at der bliver pillet ved?
Avatar billede it-dyret Nybegynder
30. januar 2002 - 14:34 #4
Ahhh, du kan også læse tanker. Det var hurtigt :)
Avatar billede it-dyret Nybegynder
30. januar 2002 - 14:40 #5
Det er et lille problem... ved denne kode

Me.FeltTransaktionsGruppe.RowSource = "SELECT * FROM TblTransaktionsgrupper WHERE TypeId = " Me.FeltTransaktionsType

får jeg fejlen: "Expected end of statement", hvor den peger på Me.FeltTransaktionsType

Hvorfor gør den det?
Avatar billede terry Ekspert
30. januar 2002 - 14:41 #6
If I were you I would make sure that the RowSource for Gruppe and kategori are EMPTY when the form gets opened. This means that the Type MUST be selected before the Gruppe gets filled and the Gruppe MUST be selected  before the kategori gets filled. This way you know that the combo's are synchronised!
Avatar billede it-dyret Nybegynder
30. januar 2002 - 14:48 #7
They are already empty... Why do I get the above mentioned compile error "Excepted: end of statement"???
Avatar billede terry Ekspert
30. januar 2002 - 14:58 #8
it-dyret> I cant see how many columns or what the data types are in your combo boxes so youmay need to give the column number in the combo to get it to work.
Column numbers start from 0 up to one less than the number of columns you have in the combo.
You need to use th ecolumn which contains the TypeId!
If it was in the first column then use:

Me.FeltTransaktionsGruppe.RowSource = "SELECT * FROM TblTransaktionsgrupper WHERE TypeId = " Me.FeltTransaktionsType.Column(0)
Avatar billede terry Ekspert
30. januar 2002 - 15:00 #9
if the TypeId is a text field for example "A" then you need to use the following syntax:

Me.FeltTransaktionsGruppe.RowSource = "SELECT * FROM TblTransaktionsgrupper WHERE TypeId = '" Me.FeltTransaktionsType.Column(0) "'"
Avatar billede terry Ekspert
30. januar 2002 - 15:04 #10
Oh! I can see the problem! You need a & between the end of the string and Me.FeltTransaktionsType
.... TypeId = " & Me.FeltTransaktionsType.....
Avatar billede it-dyret Nybegynder
30. januar 2002 - 15:07 #11
Fint! Jeg skulle lige til at skrive min egen løsning, hvor jeg blot vælger den ønskede attribut i min SELECT statement, og derefter bruger & sammen med "" for at få samme resultat, men det er altid godt med alternative løsninger!

PS: Efter at have skrevet lidt på din modersmål, er det pludselig meget tydeligt, hvor meget hurtigere det er på ens eget modersmål :)
Avatar billede terry Ekspert
30. januar 2002 - 15:13 #12
:o) og mange tak!
Avatar billede it-dyret Nybegynder
30. januar 2002 - 15:15 #13
Min 56k-forbindelse halter vist lidt bagefter her... :)

Jeg kan se, at rowsource ændrer sig for samtlige poster, når jeg begynder at indtaste data i formularen. Er der en måde, hvorpå man kan begrænse ændringen til kun at omfatte den pågældende post, man arbejder på. Ellers bliver man jo nødt til at fremprovokere en AfterUpdateEvent, hvis man vil tilbage i posterne og ændre f.eks. en gruppe...

Kan det løses?
Avatar billede terry Ekspert
30. januar 2002 - 20:44 #14
I dont think its your 56k modem thats the problem, I think they have moved eksperten to a 486!

I am not sure what you mean by "rowsource ændrer sig for samtlige poster når jeg begynder at indtaste data" Try explaining in more detail
Avatar billede it-dyret Nybegynder
31. januar 2002 - 09:33 #15
Først skal jeg måske forklare, at min formular er sat til "fortløbende formular" i "standardvisning" under detajlesektionens "formater". Grunden til dette er, at det er vigtigt, at man kan se flere rækker poster/tupler, når man indtaster data i formularen.

Dette virker fint, men der dukker et problem op, hvis jeg på et tidspunkt vil rette i gamle registreringer: Comboboks (2) er nemlig altid defineret ud fra sidste valg i (1).

Det vil sige, at hvis jeg vil ændre gamle data i (2), hvor der i (1) er valg data af typen A, kan det ikke lade sig gøre, hvis jeg senest har registreret data af typen B - for nu er rowsource for (2) defineret ud fra sidste valg, nemlig datatype B. For at få den rigtige liste frem ved de gamle data, jeg ønsker at ændre, er det nu nødvendigt at vælge typen A i (1), selvom den allerede er valgt, for at udløse eventen AfterUpdate, hvor rowsource ændrer sig til det "rigtige".

Kan man gøre, så rowsource er defineret ud fra, hvilken post/tuppel man arbejder med i stedet for, hvad man valgte sidst?
Avatar billede it-dyret Nybegynder
31. januar 2002 - 09:41 #16
Du har nok ret med den 486!!! Eksperten er nok blevet andenviolin efter Sharksforum, men der er nu ikke så meget gang i Sharksforum i denne kategori...
Avatar billede terry Ekspert
31. januar 2002 - 09:57 #17
it-dyret>I think I understand your problem now! If your combo-boxes are in the detail then the contents of these is valid for ALL records. I work with Access 97 and I know this is a problem, but I am NOT 100% sure as to how it is in Access 2000 + XP, although I think it is the same.
This is JUST an idea and it will take some alterations to your program. Keep the type kombo on the detail. Then change the Gruppe and kategori comb's to text boxes. Then make a small form containing the two combo's (Gruppe and kategori). You can get this form to open in the Type Combo's after update event, and you choose the Gruppe and kategori from this form. The values you chose are then placed in the two text fields in the detail.

As I said, this IS just an idea and will take some alterations, but it about the best I can suggest.
Avatar billede it-dyret Nybegynder
31. januar 2002 - 10:12 #18
I work in Access 2000, so as far as I can tell, the problem is exactly the same...

Your idea could do the trick - I'll keep that in mind for the second release of my program :)

Thanks Terry!
Avatar billede terry Ekspert
31. januar 2002 - 10:20 #19
your welcome :o)
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