Gå til innhold

Requery på kombinasjonsboks i access (løst)


Anbefalte innlegg

Jeg har kommet borti et lite problem i access.

 

Jeg har to kombinasjonsbokser.

cbo_omr og cbo_sted

 

Listen på cbo_sted skal basere seg på hva som står i cbo_omr.

Dette løste jeg ved å sette følgende SQL på radkilde på cbo_sted

SELECT Hent_gyldige_sted.ID, Hent_gyldige_sted.stedsnavn FROM Hent_gyldige_sted WHERE (([omr_id]))=forms!hoved!cbo_omr); 

Som dere kan se så har jeg altså sagt at vilkåret for å finne rett sted, er basert på hva som står på omr_id i spørringen hent_gyldige_sted.

 

Videre har jeg koden

Private Sub cbo_omr_BeforeUpdate(Cancel As Integer)
omraade_valgt = cbo_omr.Value
cbo_sted.Requery
End Sub

 

Dette fungerer fint, helt til jeg skal velge et annet område.

Det som da skjer er at alle stedene som er på et annet område lengre opp i skjema listen (skjema er av typen tabell skjema), de forsvinner.

Verdien er der, men siden det kjøres en requery så får alle en verdi som ikke er gyldige med den nye listen, og da vises dem ikke lengre.

Hvordan kan jeg kjøre en requery bare på den aktive posten og ikke ALLE postene i skjemaet, eventuelt åssen kan jeg låse så verdien vises på de ikke aktive postene selv om requery kjøres på kombinasjonsboksen?

Endret av Wolverin
Lenke til kommentar
Videoannonse
Annonse
Problemet er vel at du oppdaterer kombinasjonsboksen med BeforeUpdate istedet for AfterUpdate, slik at vilkåret fremdeles er det samme.

7900110[/snapback]

 

Problemet er ikke at jeg ikke får endret listen i cbo_sted, problemet er at dersom området endres, så vil verdien som vises i cbo_sted på alle som har et annet område enn det valgte forsvinne.

 

Eks:

valgt område 1, gyldige sted er 1,2,3,4

valgt område 2, gyldige sted 5,6,7,8

 

La oss si at post 1 har omr 1 og sted 4

post 2 har omr 1 og sted 2.

 

Så lager jeg en post 3, og da velger jeg område 2, og sted 5.

Nå vises bare sted 5, fordi requery på cbo_sted for post 1 og post 2 er nå ikke i listen og kan derfor ikke vises. Den ligger lagret i tabellen, men er ikke mulig å vise.

 

Lager jeg en post 4, og område 1 igjen og sed 2, så vil også sted på post 1 og 2 komme frem igjen, men nå vil sted på post 3 være blankt.

 

Håper dette ble forståelig.

Lenke til kommentar

Hmm.... tror jeg skjønnte problemet ja....

Er ikke sikker på om det finnes en "ordentlig" løsning på dette, men ser for meg at det går ann å omgå problemet ved å endre kontrollkilden til tekstboksen. Slik at den har parameterspørringen når du skal endre på sted og leser fra tabellen når du leser/laster poster.

Lenke til kommentar
Hmm.... tror jeg skjønnte problemet ja....

Er ikke sikker på om det finnes en "ordentlig" løsning på dette, men ser for meg at det går ann å omgå problemet ved å endre kontrollkilden til tekstboksen. Slik at den har parameterspørringen når du skal endre på sted og leser fra tabellen når du leser/laster poster.

7903054[/snapback]

 

Jeg fant ut etter ditt svar, at dersom jeg klikker på "Bare fra liste" og setter denne til Nei, så holder postene seg, MEN han viser da ID feltet, altså løpenummeret på Sted, og ikke stedsnavnet.

cbo_sted er 2 felt. ID og stedsnavn

Det er ID som skal lagres fra cbo_sted, men det er stedsnavn som skal vises.

Lenke til kommentar
Jeg fant ut etter ditt svar, at dersom jeg klikker på "Bare fra liste" og setter denne til Nei, så holder postene seg, MEN han viser da ID feltet, altså løpenummeret på Sted, og ikke stedsnavnet.

cbo_sted er 2 felt. ID og stedsnavn

Det er ID som skal lagres fra cbo_sted, men det er stedsnavn som skal vises.

7908881[/snapback]

Sett opp kombinasjonsboksen slik at den inneholder ID og stedsnavn. Dermed er det bare å sette kolonner lik 2 og radbredde på den første kolonnen lik 0. Når du da har ID som kolonne 1 lagres det i tabellen, mens stedsnavnet vises i kombinasjonsboksen.

Lenke til kommentar
Jeg fant ut etter ditt svar, at dersom jeg klikker på "Bare fra liste" og setter denne til Nei, så holder postene seg, MEN han viser da ID feltet, altså løpenummeret på Sted, og ikke stedsnavnet.

cbo_sted er 2 felt. ID og stedsnavn

Det er ID som skal lagres fra cbo_sted, men det er stedsnavn som skal vises.

7908881[/snapback]

Sett opp kombinasjonsboksen slik at den inneholder ID og stedsnavn. Dermed er det bare å sette kolonner lik 2 og radbredde på den første kolonnen lik 0. Når du da har ID som kolonne 1 lagres det i tabellen, mens stedsnavnet vises i kombinasjonsboksen.

7910254[/snapback]

 

hvis jeg setter opp listen med

kolonnebredder: 0cm;2,54cm

antall kolonner: 2

bundet kolonne: 1

så får jeg ikke lov av access å sette "bare fra liste" til nei, får da feilmelding.

Bundet kolonne må vist være 2.

Lenke til kommentar
Sett opp kombinasjonsboksen slik at den inneholder ID og stedsnavn. Dermed er det bare å sette kolonner lik 2 og radbredde på den første kolonnen lik 0. Når du da har ID som kolonne 1 lagres det i tabellen, mens stedsnavnet vises i kombinasjonsboksen.

7910254[/snapback]

Access vil ikke gjøre slik jeg vil... pokker..

Lenke til kommentar

Jeg hadde samme problem for noen år siden, som jeg løste enkelt og genialt slik:

 

Problemet er, som du har funnet ut, at verdien i comboen i de andre radene forsvinner når du endrer rowsource i comboen. Det løser du ved å legge en identisk combo under, med rowsource som viser alle verdier. Denne comboen skal ha egenskapene Aktiv: Nei, og Låst: Ja, og pass på at den ligger nederst av de to (Format, Plasser lengst bak).

 

For at dette skal virke, må du bruke standardvisning "Kontinuerlige skjemaer".

Lenke til kommentar
Jeg hadde samme problem for noen år siden, som jeg løste enkelt og genialt slik:

 

Problemet er, som du har funnet ut, at verdien i comboen i de andre radene forsvinner når du endrer rowsource i comboen. Det løser du ved å legge en identisk combo under, med rowsource som viser alle verdier. Denne comboen skal ha egenskapene Aktiv: Nei, og Låst: Ja, og pass på at den ligger nederst av de to (Format, Plasser lengst bak).

 

For at dette skal virke, må du bruke standardvisning "Kontinuerlige skjemaer".

7971637[/snapback]

 

Jeg ser ikke helt hvordan dette fungerer da.

Kan du forklare?

Lenke til kommentar

Dummy-comboen som ligger nederst, er ikke aktiv, og den vises faktisk ikke i det hele tatt, så lenge comboen på toppen har en verdi (da har de to comboene samme verdi, men den nederste vises jo ikke da siden den ligger nøyaktig på samme plass). Når comboen på toppen mister sin verdi og blir blank (pga det problemet du har beskrevet), så vil verdien i den nederste comboen tre frem, og vise riktig verdi likevel ...

 

Du må forresten oppdatere rowsource i comboen din (den øverste) også i Form_Current ("Ved gjeldende" for skjemaet).

 

Jeg bruker dette her og nå, og det fungerer helt transparent for brukeren, trikset er ikke synlig i det hele tatt. Det er verd å eksperimentere litt med dette til du får det til.

Endret av twb
Lenke til kommentar
Dummy-comboen som ligger nederst, er ikke aktiv, og den vises faktisk ikke i det hele tatt, så lenge comboen på toppen har en verdi (da har de to comboene samme verdi, men den nederste vises jo ikke da siden den ligger nøyaktig på samme plass). Når comboen på toppen mister sin verdi og blir blank (pga det problemet du har beskrevet), så vil verdien i den nederste comboen tre frem, og vise riktig verdi likevel ...

 

Du må forresten oppdatere rowsource i comboen din (den øverste) også i Form_Current ("Ved gjeldende" for skjemaet).

 

Jeg bruker dette her og nå, og det fungerer helt transparent for brukeren, trikset er ikke synlig i det hele tatt. Det er verd å eksperimentere litt med dette til du får det til.

7976962[/snapback]

 

Har du mulighet til å legge en link til databasen du har en slik en i?

Altså lage en database, og lage to slike kombobokser og få tekikken til å fungere, slik at jeg kan se det i drift.

Jeg henger med på å lage to kombobokser, og få den ene til å være bak den andre, men jeg henger ikke med på å få til at verdien blir hengene igjen i den andre boksen, og jeg forstår ikke når jeg skal få boksen til å "tre" frem.

 

Satt veldig stor pris på et eksempel :D

Lenke til kommentar
Jeg hadde samme problem for noen år siden, som jeg løste enkelt og genialt slik:

 

Problemet er, som du har funnet ut, at verdien i comboen i de andre radene forsvinner når du endrer rowsource i comboen. Det løser du ved å legge en identisk combo under, med rowsource som viser alle verdier. Denne comboen skal ha egenskapene Aktiv: Nei, og Låst: Ja, og pass på at den ligger nederst av de to (Format, Plasser lengst bak).

 

For at dette skal virke, må du bruke standardvisning "Kontinuerlige skjemaer".

7971637[/snapback]

 

Der tror jeg at jeg fant ut av det.

Jeg måtte lagre verdien fra denne andre kombinasjonsboksen også, ellers fungerte det ikke.

 

Jeg laget en kombinasjonsboks jeg kaller for cbo_shadow som får verdien som blir valgt i den opprinnelige kombinasjonsboksen for sted, og jeg legger som du sier denne bakerst ved å gå på menyen for format og legg bakerst.

Når den opprinnelige kombinasjonsboksen mister sine verdier fordi jeg velger et område som ikke sted passer til, så kommer verdien i cbo_shadow frem i bakgrunnen. :-)

Lenke til kommentar

Bra du fikk det til! :thumbup:

 

Kunne laget en eksempel-database til deg, men ikke før i helgen. Og siden du fikk det til så ...

 

Merk at samme teknikk (eller lignende i alle fall, kan utledes fra denne) kan benyttes til andre ting også, f.eks. gi ulik farge til tekstbokser/comboer i en tabell basert på innhold. En slik funksjon ligger jo i nyere versjoner enn Access97 ("conditional formating"), men nevnte teknikk fungerer både mer stabilt og mer anvendelig (og fungerer også i Access97).

Endret av twb
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...