16. juni 2004 - 15:24Der er
28 kommentarer og 1 løsning
Problemer med opdatering af forespørgsel
Jeg har en forespørgsel som består at to tabeller. De er joinforbundne. Det skal fungere sådan at når jeg indtaster et fakturanummer i tabel 2 skal den finde samme faktura nr i tabel 1 og aut. udfylde resten af felterne i tabel 2 med data fra tabel 1. Det er sådan set også ok, bortset fra at den ikke gør det når jeg har tastet fakturanummeret, men først når jeg har lukket foreespørgslen. Når jeg så åbner den igen er felterne opdateret. Jeg forstår ikke hvorfor den ikke opdaterer felterne når jeg er i forespørgslen. Jeg har en anden forespørgsel med samme princip blot andre tabeller, der virker det fint. Hvad er galt??
Hvorvidt Access opdatere forespørgslen og hvornår den rent faktisk gør det afhænger af flere ting; tabellernes indeksering, forespørgslens opbygning, hvorvidt tabellerne er sammenkædet eller ej m.fl.
Har du ikke lavet en formular til forespørgslen? For så kan du jo bare lave en Me.Requery på formens EfterOpdatering
øhh,, jo jeg har lavet en formular. Det er samme problem. Derfor forsøgte jeg at finde fejlen i forespørgslen. Du er også indekseret. Hvad vil du foreslå jeg gør?? Vil helst løse problemet i forespørgslen. Men hvordan kan det gøres i formularen??
Måske skulle jeg spørge, hvilke kriterier er der for at den kan opdatere med det samme? Er det de joinforbundne felter som skal være "ens" med hensyn til indeksering? Jeg har nemlig siddet og studeret den forespørgsel hvor det virker og kan ikke rigtig se en forskel på den og den der ikke virker.
Ingen ting når jeg kun flytter markøren i forspørgslen. Jeg har prøvet alt. Jeg skal helt ud af dataarkvisningen, enten ved at lukke forespørgslen helt eller gå i SQL eller designvisning.
ok, det er fordi har skrevet det i selve egenskaben i stedet for i VBA. Fjeren Me.Refresh og tryk på knappen med 3 prikker i højre side. Vælg herefter Kodegenerator.
et hurtigt spørgsmål, skal jeg skrive det i egenskaber for selv formularen eller i egenskaber for feltet som jeg taster i hvorefter resten af felterne så opdatere?
Mystisk...jeg hælder mest til, at der mangler et eller andet i din opbygning. Har du mulighed for at sende db'en til mig? Så er det nemmere for mig, at gennemskue...
kan desværre ikke sende db...den fylder 15 mb og det indeholder lidt for mange fortrolige data. MEn kan du sige mig hvad jeg skal være opmærksom på i forespørgslen? Jeg kan evt. sende dig SQL...
ok, det synes jeg nu ellers også, at jeg havde nævnt som fejlkilde i mit allerførste svar. Men tag du bare pointene selv. Jeg havde alligevel ikke andet at lave end at forsøge at gætte mig frem til hvor dit problem lå gemt ;)
Hej Thomas, jo det havde du egentlig også, men desværre ikke på en måde så jeg blev klogere eller forstod det. Mit problem lå i at jeg ikke vidste hvad ved indekseringen jeg skulle være opmærksom på. Det vidste sig at jeg skulle sætte indekseringen til Ja - Tillad dupletter, istedet for ja- ingen dubletter. Nu er mit problem bare at jeg ikke vil have dupletter i feltet. Så hvad gør man så? Ved du det, så opretter jeg et nyt spørgsmål, så skal du selvfølgelig have point, egentlig fortjente du også lidt herfra. Sorry :-)
Jeg kunne forestille mig, at jeg i rapporten i feltet "efter opdatering" kører en makro eller lign, som tjekker om det indtastede nr allerede står i tabellen. Hvis det gør kommer den med en fejlmed.
Jeg vil lægge koden på formularens Before Insert således at den kun checker ved oprettelser.
Problemet er, at det ikke forhindre en bruger i at ÆNDRE en eksisterende post. Dette problem vil jeg løse ved at låse feltet på eksisterende poster. Således:
På formularens VedAktuel (OnCurrent) lægges denne kode:
If Me.Newrecord then Me!Felt.Locked = false else Me!Felt.Locked = true endif
Felt er vel dit fakturanummer (eller det felt, som skulle udløse at resten af felterne blev hentet...
Synes godt om
Ny brugerNybegynder
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.