abrakadabri Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 Litt vanskelig å gi en god nok emnetittel så kort, men litt utfylt er problemstillingen slik: Har en tabell med flere verdier - hvis eksempelvis et felt blir valgt til verdi "Bjarne" skal disse skjules - altså alle verdier - alle oppføringer som inneholder Bjarne skal skjules. Omskrevet: Hvis en verdi oppfyller ett vilkår skal hele strengen med verdier ikke vises - tenker da hovedsaklig (i første omgang) i Skjemaet. Er dette mulig på en elegant måte? Har forsøkt å google litt, men enda ikke funnet noe fornuftig.... Takker så meget for hjelp... Lenke til kommentar
Wolverin Skrevet 22. mars 2007 Del Skrevet 22. mars 2007 Litt vanskelig å gi en god nok emnetittel så kort, men litt utfylt er problemstillingen slik: Har en tabell med flere verdier - hvis eksempelvis et felt blir valgt til verdi "Bjarne" skal disse skjules - altså alle verdier - alle oppføringer som inneholder Bjarne skal skjules. Omskrevet: Hvis en verdi oppfyller ett vilkår skal hele strengen med verdier ikke vises - tenker da hovedsaklig (i første omgang) i Skjemaet. Er dette mulig på en elegant måte? Har forsøkt å google litt, men enda ikke funnet noe fornuftig.... Takker så meget for hjelp... 8198849[/snapback] Dette er mulig ja. Du legger bare inn følgende i en spørring select * from tabell1 where felt1 not like "Bjarne" I skjemaet ditt velger du at postkilde for skjema er denne spørringen. Dersom du vil ekskludere flere ord, så kan du bruke select * from tabell1 where felt1 not like "Bjarne" and not like "Trond" Eller du kan bruke select * from tabell1 where felt1 not in ("Bjarne", "Trond") Resultatet blir det samme. Dersom det er mange slike du skal ekskludre, så kan du bruke en krysskoblings tabell. Altså legger du inn en ekstra tabell som inneholder de ordene/navn du ikke ønsker skal vises. Så tar du følgende spørring SELECT tabell1.ID, tabell1.felt1 FROM tabell1 LEFT JOIN tabell2 ON tabell1.felt1 = tabell2.felt1 WHERE (((tabell2.felt1) Is Null)); Det som gjøres her er at navn som ligger i felt1 i tabell1 sjekkes mot felt1 i tabell2, og bare de navn som kun finnes i tabell1 vises i spørringen. På den måten kan du ekskludere alle navn du ikke vil skal vises ved å legge dem inn i tabell2. Lenke til kommentar
abrakadabri Skrevet 22. mars 2007 Forfatter Del Skrevet 22. mars 2007 Jeg bøyer meg i støvet Wolverin! Du er en enestående stjerne, like unik som solen! En liten ting til; er det mulig å gjøre dette i tabellen direkte - slik at de oppføringene som innehar Slettet som Status ikke vises, men blir skjult? Og en liten ting til; Har en Makro som setter en default value i forhold til hvilket skjema en åpner (har 3 forskjellige skjema) som skriver til samme tabell. Verdien som endres basert på hvilket skjema Status. Er det mulig å endre denne makro/eller gjøre andre ting slik at denne makro ikke endrer Status hvis Status allerede innehar en verdi som skal bli stående? Og; Kan en disable/gjøre usynlig/låse et valg under Status (combo box) i et spesielt skjema da en ikke skal ha mulighet til å velge en spesifikk Status under ett felt.. Dette er kanskje litt dummies - Access, men hadde satt utrolig pris på svar - har Google't, men ikke blitt særlig klok.... Lenke til kommentar
Wolverin Skrevet 23. mars 2007 Del Skrevet 23. mars 2007 Jeg bøyer meg i støvet Wolverin! Du er en enestående stjerne, like unik som solen! En liten ting til; er det mulig å gjøre dette i tabellen direkte - slik at de oppføringene som innehar Slettet som Status ikke vises, men blir skjult? Og en liten ting til; Har en Makro som setter en default value i forhold til hvilket skjema en åpner (har 3 forskjellige skjema) som skriver til samme tabell. Verdien som endres basert på hvilket skjema Status. Er det mulig å endre denne makro/eller gjøre andre ting slik at denne makro ikke endrer Status hvis Status allerede innehar en verdi som skal bli stående? Og; Kan en disable/gjøre usynlig/låse et valg under Status (combo box) i et spesielt skjema da en ikke skal ha mulighet til å velge en spesifikk Status under ett felt.. Dette er kanskje litt dummies - Access, men hadde satt utrolig pris på svar - har Google't, men ikke blitt særlig klok.... 8211965[/snapback] Etter hva jeg skjønner så ønsker du å ikke vise en del poster i en tabell om postene har verdien Slettet på et eller annet felt, da kan du ikke i tabellen direkte ikke vise dem etter det jeg kan forstå på spørsmålet ditt. Tabellen viser de poster som finnes i tabellen, ønsker du å vise bare noen av postene i en tabell må du benytte en spørring eller et filter. Når det gjelder ditt spørsmål om den makroen, så forstår jeg det slik at du har laget en makro som setter en verdi inn i tabellen som viser åssen skjema som var aktivt når verdien skulle skrives? Dette kan mer elegant gjøres via en variabel. Denne lager du ved å deklarere den under moduler. Koden for en variabel for dette kan f.eks være Global skjemanr as Integer Så tilegner du denne variabelen en verdi om det er skjema 1 eller 2 eller 3 som er åpent. Når du setter inn verdi i tabellen sjekker du bare om posten du har aktiv har en verdi på skjemanr feltet fra før, har den det så skal du ikke sette inn noe, har den det så skal du sette inn det som står i denne variabelen. if me.skjemanummeret = "" then me.skjemanummeret = skjemanr end if Det siste spørsmålet ditt forsto jeg ikke hva du mente med, så her aner jeg ikke hva jeg skal svare. Kan du forsøke å forklare en gang til?? Lenke til kommentar
abrakadabri Skrevet 26. mars 2007 Forfatter Del Skrevet 26. mars 2007 (endret) Problemet som jeg ikke helt klarte å forklare - hva som var problemet fikk jeg løst. Problemet var at en ComboBox kun skulle vise noen oppføringer fra en tabell, men ikke alle. Dette løste seg greit ved å bare definere dette i egenskapene på ComboBoxen med SQL (kun velge de feltene en ønsket å vise).. Takk for forslaget til løsning i siste post; men for å forstå dette bedre: - Denne koden må legges inn i det skjemaet som jeg har aktivt? Eller kan det være en selvstendig kode som kan kalles på vha. en makro eller kjøres automatisk på andre vis? Global skjemanr (referer til tabellen - navnet på det?) as Integer (siden feltet har tekst verdi skal vel jeg sette dette til Text istedenfor Integer?) if me.skjemanummeret (dette refererer til verdien - combo boxen jeg har?)= "" then me.skjemanummeret = skjemanr end if Takker så utrolig for litt videre bistand slik at jeg forhåpentligvis kan komme i mål.... Føler meg som en fryktelig noob, men kan nok klare å lære endel av dette... Beklager plagingen... Edit: satt kursiv på ekstra spørsmålstekst i koden. Endret 26. mars 2007 av abrakadabri Lenke til kommentar
Wolverin Skrevet 26. mars 2007 Del Skrevet 26. mars 2007 Problemet som jeg ikke helt klarte å forklare - hva som var problemet fikk jeg løst. Problemet var at en ComboBox kun skulle vise noen oppføringer fra en tabell, men ikke alle. Dette løste seg greit ved å bare definere dette i egenskapene på ComboBoxen med SQL (kun velge de feltene en ønsket å vise).. Takk for forslaget til løsning i siste post; men for å forstå dette bedre: - Denne koden må legges inn i det skjemaet som jeg har aktivt? Eller kan det være en selvstendig kode som kan kalles på vha. en makro eller kjøres automatisk på andre vis? Global skjemanr (referer til tabellen - navnet på det?) as Integer (siden feltet har tekst verdi skal vel jeg sette dette til Text istedenfor Integer?) if me.skjemanummeret (dette refererer til verdien - combo boxen jeg har?)= "" then me.skjemanummeret = skjemanr end if Takker så utrolig for litt videre bistand slik at jeg forhåpentligvis kan komme i mål.... Føler meg som en fryktelig noob, men kan nok klare å lære endel av dette... Beklager plagingen... Edit: satt kursiv på ekstra spørsmålstekst i koden. 8240125[/snapback] Slik jeg forstod det så skulle du i variablen holde styr på hvilket skjema du hadde aktivt, og da mente jeg at skjema1 fikk verdien 1 i variabelen. Altså står det "1" som verdi i variabelen om skjema1 er aktivt. Dersom det er skjema2 som er aktivt, så blir variabelen 2 i verdi osv osv. Tror kanskje ikke jeg forstår hva du egentlig mener, så jeg hadde satt pris på at du hadde skrevet et eksempel som er reelt på hvordan du ønsker å ha det. Lenke til kommentar
abrakadabri Skrevet 27. mars 2007 Forfatter Del Skrevet 27. mars 2007 Slik som er ønskelig å ha det: Hvis en åpner Skjema1 får Status verdi Registreres, hvis Skjema2 åpnes får Status verdien Under behandling, hvis Skjema 3 åpnes får Status verdien Lukket. Det er ønskelig at en i Skjema1 og 2 kan velge Status Slettet - denne er allerede ett valg (ligger inne i Status tabellen). Men - problemet: Hvis Status er satt til Closed (som det blir gjort i Skjema 3 - og denne blir stående slik - ikke endres av den som er inne i Skjema 3) så skal en ikke kunne endre Status verken i Skjema 1 eller Skjema 2. Har fått en god del til ved hjelp av makro, men ikke fått til tilfredsstillende resultat som kjent... Ville nesten tro at det kunne være mulig å få til det ønskede resultat vha. en handlingsregel/handlingsargument i en makro som referer til kombinasjonsboksen - som forskjellige Skjemaene innehar som viser Status... Noen tanker? Setter så meget pris på bistanden din... Lenke til kommentar
Wolverin Skrevet 28. mars 2007 Del Skrevet 28. mars 2007 Slik som er ønskelig å ha det: Hvis en åpner Skjema1 får Status verdi Registreres, hvis Skjema2 åpnes får Status verdien Under behandling, hvis Skjema 3 åpnes får Status verdien Lukket. Det er ønskelig at en i Skjema1 og 2 kan velge Status Slettet - denne er allerede ett valg (ligger inne i Status tabellen). Men - problemet: Hvis Status er satt til Closed (som det blir gjort i Skjema 3 - og denne blir stående slik - ikke endres av den som er inne i Skjema 3) så skal en ikke kunne endre Status verken i Skjema 1 eller Skjema 2. Har fått en god del til ved hjelp av makro, men ikke fått til tilfredsstillende resultat som kjent... Ville nesten tro at det kunne være mulig å få til det ønskede resultat vha. en handlingsregel/handlingsargument i en makro som referer til kombinasjonsboksen - som forskjellige Skjemaene innehar som viser Status... Noen tanker? Setter så meget pris på bistanden din... 8252941[/snapback] Er det slik å forstå at Status som du refererer til er et eget felt i en tabell, som altså skal få satt verdien "Registres" om du åpner posten i skjema1, "under behandling" dersom du åpner posten i skjema2, og den skal være "lukket" dersom du åpner skjema3. Får den status "lukket", så skal den ikke lengre kunne endres til noe annet? Har jeg forstått deg rett nå? Lenke til kommentar
abrakadabri Skrevet 28. mars 2007 Forfatter Del Skrevet 28. mars 2007 God kveld, Wolverin. Helt korrekt. Slik du skrev det var vel en bedre beskrivelse av det jeg skrev i posten min... Men i tillegg; når verdi blir satt til Lukket i Skjema3 så er det ønskelig at en kan endre Status til Registreres, Under behandling (i dette skjema). Dette hvis saken ikke er registrert med nok informasjon og derfor ikke kan lukkes - men må "sendes" tilbake til den som har registrert med beskjed om at han/henne har lagt inn for lite informasjon. Lenke til kommentar
Wolverin Skrevet 28. mars 2007 Del Skrevet 28. mars 2007 (endret) God kveld, Wolverin. Helt korrekt. Slik du skrev det var vel en bedre beskrivelse av det jeg skrev i posten min... Men i tillegg; når verdi blir satt til Lukket i Skjema3 så er det ønskelig at en kan endre Status til Registreres, Under behandling (i dette skjema). Dette hvis saken ikke er registrert med nok informasjon og derfor ikke kan lukkes - men må "sendes" tilbake til den som har registrert med beskjed om at han/henne har lagt inn for lite informasjon. 8261499[/snapback] Det du kan gjøre da er å bruke Form_load til å gjøre en test for deg. Private Sub Form_Load() if kombinasjonsboks1.value = "lukket" then kombinasjonsboks1.locked = True else kombinasjonsboks1.value = "Registrere" end if end sub Det koden her gjør er å sjekke om det er verdien lukket som står, om det ikke er det, så skal den sette verdien til "Registere" som altså betyr at dette er i skjema1. Hvis det er "lukket" som verdi, så skal du ikke kunne endre det i skjema1 og skjema2, derfor henger man på å låse kombinasjonsboksen hvis verdien er "lukket". Koden blir akkurat det samme for skjema2, bare at du bytter ut teksten til "under behandling" og ikke "registrere". For skjema3 blir koden Private Sub Form_Load() if kombinasjonsboks1.value <> "lukket" then kombinasjonsboks1.value = "lukket" kombinasjonsboks1.locked = False end if end sub Her skal jo kombinasjonsboksen være mulig å endre på, derfor låser man ikke denne i dette skjema. Er verdien ikke lukket, så settes den her til lukket, men det er mulig å endre på når posten er oppe i skjema3. Mvh Wolverin Endret 28. mars 2007 av Wolverin Lenke til kommentar
abrakadabri Skrevet 29. mars 2007 Forfatter Del Skrevet 29. mars 2007 Tusen takk for hjelpen, Wolverin. Har et lite tilleggsspørsmål som jeg lurer på om du har noe erfaring med hvordan kan løses (som jeg ofte føler det i Access, når en klarer løse ett problem dukker et nytt opp): Når en velger å legge til en ny oppføring i Skjema 1 så får den direkte Status som Registrert. Hvis en da åpner Skjema 2 får første verdi (første oppføring i skjemaet verdien Under behandling som Status). Dette vil si at hvis en klikker seg videre til neste verdi får denne ikke oppdatert Statusen sin til Under behandling, men den blir stående som Registrert. Noen tips til hvordan en kan få flere enn kun første oppføring til å endre verdi til Under behandling når den blir aktiv? Har forsøkt forskjellige verdier i OnClick, OnUpdate etc. uten å ha fått det til. Siste linjen med oppdatering som du skrev - for oppdatering av Skjema 3 til Lukket fungerte ikke denne koden: if kombinasjonsboks1.value <> "lukket" then Men har nå fått til å sette verdien til Lukket automatisk (med makro) - eventuelt så går det nok greit her å bare endre Status selv i dette skjema. Men det optimale hadde selvfølgelig vært som beskrevet overfor - at Skjema 3 og Status får verdien Lukket når disse åpnes og så kan en heller endre Status til annet. Lenke til kommentar
Wolverin Skrevet 29. mars 2007 Del Skrevet 29. mars 2007 (endret) Tusen takk for hjelpen, Wolverin. Har et lite tilleggsspørsmål som jeg lurer på om du har noe erfaring med hvordan kan løses (som jeg ofte føler det i Access, når en klarer løse ett problem dukker et nytt opp): Når en velger å legge til en ny oppføring i Skjema 1 så får den direkte Status som Registrert. Hvis en da åpner Skjema 2 får første verdi (første oppføring i skjemaet verdien Under behandling som Status). Dette vil si at hvis en klikker seg videre til neste verdi får denne ikke oppdatert Statusen sin til Under behandling, men den blir stående som Registrert. Noen tips til hvordan en kan få flere enn kun første oppføring til å endre verdi til Under behandling når den blir aktiv? Har forsøkt forskjellige verdier i OnClick, OnUpdate etc. uten å ha fått det til. Siste linjen med oppdatering som du skrev - for oppdatering av Skjema 3 til Lukket fungerte ikke denne koden: if kombinasjonsboks1.value <> "lukket" then Men har nå fått til å sette verdien til Lukket automatisk (med makro) - eventuelt så går det nok greit her å bare endre Status selv i dette skjema. Men det optimale hadde selvfølgelig vært som beskrevet overfor - at Skjema 3 og Status får verdien Lukket når disse åpnes og så kan en heller endre Status til annet. 8265506[/snapback] Når det gjelder kode for å få lukket status, så prøv denne If Me.Kombinasjonsboks1.Value Like "Lukket" Then Me.Kombinasjonsboks1.Locked = False Else Me.Kombinasjonsboks1 = "Lukket" Me.Kombinasjonsboks1.Locked = False End If Når det gjelder det neste spørsmålet ditt, så må du lage dine egne navigasjonsknapper. DoCmd.GoToRecord , , acNext denne koden gir deg neste post. DoCmd.GoToRecord , , acPrevious denne koden gir deg forrige post. Skal du ha første post, blir koden DoCmd.GoToRecord , , acFirst Siste blir naturlig nok DoCmd.GoToRecord , , acLast Når du lager dine egne navigasjonsknapper, så kan du enkelt legge til følgende kode i knappen din if me.kombinasjonsboks1.value <> "Lukket" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Da sjekker du for hver post som er aktiv når du har skiftet post. Denne koden legger du selvsagt etter DoCmd.GoToRecord settningen din. Mvh Wolverin Endret 29. mars 2007 av Wolverin Lenke til kommentar
abrakadabri Skrevet 29. mars 2007 Forfatter Del Skrevet 29. mars 2007 Helt topp, Wolverin Skal forsøke litt i kveld og videre i morgen - poster her om hvordan det går... Du har nå blitt mine store virtuelle-database-kjærlighet Lenke til kommentar
abrakadabri Skrevet 30. mars 2007 Forfatter Del Skrevet 30. mars 2007 Bøyer meg i støvet, tusen hjertelig takk Wolverin - er evig takknemlig. Alt ser ut til å fungere ganske så topp nå - om jeg får lov så må jeg bare spørre om en liten ting: if me.kombinasjonsboks1.value <> "Lukket" then elseif me.kombinasjonsboks1.value <> "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Forsøkte å legge til koden slik som over (kursiv), men virker som når jeg klikker neste til ny record endrer den status til Under behandling - setter først at Status ikke skal endres (ser det som et lite "blink" at Slettet forsvinner og går over til Behandling). Finnes en enkel måte å inkludere at flere enn en (1) Verdi (mer enn Lukket) ikke skal endres? Altså at hvis Status er Lukket, men også hvis status er Under behandling så skal status ikke endres? Mulig at jeg har blitt så trangsynt etter jobbing med dette - at løsningen ligger rett foran øynene mine - men at jeg ikke evner å se den... Lenke til kommentar
Wolverin Skrevet 30. mars 2007 Del Skrevet 30. mars 2007 Bøyer meg i støvet, tusen hjertelig takk Wolverin - er evig takknemlig. Alt ser ut til å fungere ganske så topp nå - om jeg får lov så må jeg bare spørre om en liten ting: if me.kombinasjonsboks1.value <> "Lukket" then elseif me.kombinasjonsboks1.value <> "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Forsøkte å legge til koden slik som over (kursiv), men virker som når jeg klikker neste til ny record endrer den status til Under behandling - setter først at Status ikke skal endres (ser det som et lite "blink" at Slettet forsvinner og går over til Behandling). Finnes en enkel måte å inkludere at flere enn en (1) Verdi (mer enn Lukket) ikke skal endres? Altså at hvis Status er Lukket, men også hvis status er Under behandling så skal status ikke endres? Mulig at jeg har blitt så trangsynt etter jobbing med dette - at løsningen ligger rett foran øynene mine - men at jeg ikke evner å se den... 8274204[/snapback] Koden if me.kombinasjonsboks1.value <> "Lukket" then [i]elseif me.kombinasjonsboks1.value <> "Slettet" then[/i] me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Her sier du at hvis kombinasjonsboksen sin verdi ikke er lik "lukket" så skal du også ikke noen ting, hvis ikke kombinasjonsboksen sin verdi er lik "lukket" så skal du sette verdien til "Registrere" og du skal låse opp kombinasjonsboksen. Hvis ikke så skal du låse kombinasjonsboksen. Her er det ingen mening i koden om du bruker elseif slik du gjør der. Hva er det du egentlig forsøkte på? Mvh Wolverin Lenke til kommentar
ravika Skrevet 30. mars 2007 Del Skrevet 30. mars 2007 Er vel noe slikt han skal frem til? if me.kombinasjonsboks1.value <> "Lukket" Or me.kombinasjonsboks1.value <> "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Lenke til kommentar
Wolverin Skrevet 31. mars 2007 Del Skrevet 31. mars 2007 Er vel noe slikt han skal frem til? if me.kombinasjonsboks1.value <> "Lukket" Or me.kombinasjonsboks1.value <> "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if 8278611[/snapback] Ja, kanskje det. du tror altså at elseif der skulle være at han ønsket å få if setningen til å matche flere kriterier.. kanskje, kanskje Mvh Wolverin Lenke til kommentar
abrakadabri Skrevet 31. mars 2007 Forfatter Del Skrevet 31. mars 2007 Tusen takk for hjelpen begge to. Skal forsøke forslaget i morgen - forstår at jeg ikke helt klarte å fremme hva jeg ønsket å komme frem til - ser om koden fungerer i morgen - gir beskjed her hvordan det går.... Må bare få bøye meg i støvet enda en gang og ønske Dere begge en strålende lørdags ettermiddag! Lenke til kommentar
abrakadabri Skrevet 11. april 2007 Forfatter Del Skrevet 11. april 2007 La inn denne koden, men virker ikke helt: if me.kombinasjonsboks1.value <> "Lukket" Or me.kombinasjonsboks1.value <> "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Når jeg da setter verdi til Slettet i skjema 3 og så åpner skjema 2 endres ikke verdien i den første oppføringen, men hvis jeg da klikker på neste så endres verdien til Registrere (når jeg altså klikker på neste knappen som jeg har lagd). Uten Or koden (hvis en bruker gammel kode) så endres ikke verdien til annet enn Lukket hvis en klikker på neste - da blir verdien værende på alle oppføringer som har denne verdien - men dette skjer altså ikke ved bruk av Or. Har dere noen ide? Er koden feil? Har lagt inn koden etter prev_post og next_post (knappene i skjemaet) Hadde vært utrolig flott med tilbakemelding!.... Lenke til kommentar
ravika Skrevet 11. april 2007 Del Skrevet 11. april 2007 Hmm... ikke sikker jeg, men kan det være bedre med slik når det gjelder samme kombinasjonsboks? (er vel egentlig være samme koden men?) if me.kombinasjonsboks1.value <> "Lukket" Or "Slettet" then me.kombinasjonsboks1.value = "Registrere" me.kombinasjonsboks1.locked = false else me.kombinasjonsboks1.locked = true end if Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå