Print side | Luk vindue

Værdiliste i formular

Udskrevet fra: Dansk Access Forum
Kategori: Hjælp til Access
Forum navn: Formularer (Forms)
Forum beskrivelse: Spørgsmål vedr. formularer og alt hvad der vedrører disse
Web-adresse: https://www.accessforum.dk/forum_posts.asp?TID=78
Udskrevet den: 23-11-2024 kl. 11:11


Emne: Værdiliste i formular
Besked fra: TAC
Emne: Værdiliste i formular
Posteringsdato: 24-12-2015 kl. 18:06

Har en database med bl.a. tre tabeller: PRODUKTER, VARENR og ORDRESPECIFIKATION

Brugeren indtaster ordredata via en formular (dataarkvisning) med flg. kolonner:

Ordrenr, Pakkedato, Partinr, Produktnavn, PKat, Prod.nr, VareNr, Varenavn, Produktkategori og 5 til

Ordrenr og Pakkedato kommer automatisk.

Under Partinr vælger brugeren fra en værdiliste et Partinr, hvorefter Produktnavn,PKat, ProdNr udfyldes automatisk via en Hændelsesprocedure efter opdatering og cursoren springer frem til

VareNr.

Her får brugeren en værdiliste igen med ALLE varenumre og skal så vælge et varenr hvorefter Varenavn, Produktkategori udfyldes automatisk via en Hændelsesprocedure efter opdatering

Jeg ville gerne at brugeren i værdilisten under VareNr KUN får de VareNr hvor varenrs Produktkategori er lig med PKat under Partinr. Værdilisten skal altså KUN vise de VareNr hvor Produktkategori er lig med PKat i samme ordrelinie.

Jeg kan ikke få SELECT ordren i Rækkekilden til at vælge disse. SELECT ordren skal ikke sammenligne med PKat fra PRODUKTER-tabellen men fra den samme ordrelinie i formularen.

Er der nogen der har et godt råd?




Svar:
Besked fra: hkh
Posteringsdato: 25-12-2015 kl. 07:19
Den select sætning du ikke kan få til at virke, hvordan ser den ud?
Hvordan er dine tabeller opbygget? Jeg kan ikke umiddelbart se hvilke felter der kommer fra hvilke tabeller.


-------------
Hans


Besked fra: TAC
Posteringsdato: 25-12-2015 kl. 22:00
uploads/152/Ordrespec_og_opsætning.xlsx" rel="nofollow - uploads/152/Ordrespec_og_opsætning.xlsx

Her opsætningen med de fungerende SELECT sætninger, samt det mislykkede forsøg.
Det er klart at den forsøgte SELECT sætning ikke virker, den vil jo blot vælge samtlige varenumre hvor Produktkategori og Pkat er ens og derfor vælger den blot dem alle sammen,
Databasen holder nemlig styr på hvordan produkterne er blevet til varer, altså et produkt er pakket i en eller anden colli størrelse på pakkedatoen til en bestemt ordre/kunde.
Dermed er der styr på hvor alle produkter er sendt hen.


Besked fra: hkh
Posteringsdato: 05-01-2016 kl. 12:25
For at kunne hjælpe dig videre, skal jeg bruge felterne og felttype i dine tabeller.

Men jeg gør et forsøg:
Hvis du opretter en forespørgsel, hvor du har de tabeller som du skal bruge data fra.
Der skal være en relation mellem tabellerne, ellers får du antal af poster i den ene tabel ganget med antallet af poster i den anden tabel, hvis relationen er mellem dine felter [Produktkategori] og [Pkat] kan den opsættes til 'Medtag kun poster hvor felterne er ens'(højreklik).

Men hvis du allerede har [Pkat] i et felt i formularen kan [varenummer]'s rækkekilde sættes til at vise udvalgte varer, ved hjælp af en where delen:
"SELECT Produkter.* FROM Produkter WHERE (((Produkter.Produktkode)='" & [pkat] & "'));"
Dette er kun et eksempel, men det burde virke hvis du ændrer til dine felt- og tabelnavne.
Jeg har antaget at indholdet af [pkat] er af typen tekst, derfor skal der være enkelte anførselstegn før og efter indholdet af feltet [pkat]

-------------
Hans


Besked fra: TAC
Posteringsdato: 24-04-2016 kl. 22:51
Beklager den sene reaktion, men har ikke haft lejlighed til at rode rundt i databasen i længere tid.
Dit svar har været en hjælp. Din SELECT kode virker OK i første ordrespecifikationslinie. Men i den anden viser den de samme Varenr som i første linie, så SELECT koden må kigge et forkert sted.
Det er hensigten at opslaget under Varenr skal vise de Varenr som har samme Produktkategori som står i anden kolonne under Produktart. Produktkategori og Produktart refererer til samme tabel.
I anden linie på screen-dumpet kan du se at der igen kommer Varenr med spisekartofler under produktkategori, hvor det skulle være varenr med produktkategorien spidskål, som står i anden kolonne.



Besked fra: TAC
Posteringsdato: 24-04-2016 kl. 22:57


Besked fra: hkh
Posteringsdato: 25-04-2016 kl. 04:58
Det er ikke nemt at se noget på det billede, men vi prøver igen.
Jeg antager ordreformularen hedder Ordrer og at feltet i ordreformularen hedder Pkat


SELECT varenr.* FROM varenr INNER JOIN produkter ON varenr.produktkategori '" & forms!ordrer!pkat & "'
ORDER BY varenr.varenr;


-------------
Hans


Besked fra: TAC
Posteringsdato: 06-05-2016 kl. 17:28
Nej det har du ret i, altså at det er svært at se på screendump, men jeg prøvede at tage det ud og forstørre det.
Formularen hedder rigtigt nok "Ordrer" og underformularen hvor opslaget er lavet i hedder  "Ordrespecifikation". Kolonneoverskrifterne i ordrespecifikation hedder

Ordrenr, Pakkedato, Partinummer, Produktart, Varenr, Varetekst, Produktkategori osv.
I opslag under Varenr vises flg. kolonner,
Varenr, Varetekst, Produktkategori osv.

Så er det at jeg gerne vil have at opslaget begrænses til at vise Varenr hvor Varenrs Produktkategori svarer til Produktart som svarer til Partinummers Produktart, som altså er indtastet i kolonnen ligefør Varenr.
Det er nok værd at bemærke, at Partinummers Produktart og Varenrs produktkategori er hentet fra samme tabel ved navn Produktkategorier.
Men formularen skal altså være så klog at den ved opslag KUN viser Varenr som har samme Produktkategori som Partinummeret. Hvis Partinummers Produktart er Kartofler, skal opslaget kun vise varenr med Produktkategorien Kartofler.
uploads/152/Screendump_ordrer_2.jpg" rel="nofollow - uploads/152/Screendump_ordrer_2.jpg
Det skulle du måske kunne se noget bedre på.
Jeg kom vist også til at uploade et der hedder Screendumo_ordrer som viser opslag under partinummer. Håber du kan se formularen bedre denne gang
I øvrigt tak for din indsats



Besked fra: hkh
Posteringsdato: 06-05-2016 kl. 18:28
Det kan ikke umiddelbart lade sig gøre, Partinummer er et tal og produktkategori er tekst.
Du skal have to felter af samme type.
Hvis produktkategori er et opslag burde nedenstående kunne virke.

SELECT tab_varenr.* FROM tab_varenr WHERE (((tab_varenr.produktkategori)="& partinummer & ")) ORDER BY tab_varenr. varetekst;

Du kunne evt oprette en database med formularen, formularens tabeller med noget testdata, den skal nok pakkes for at kunne vedhæftes.

-------------
Hans


Besked fra: TAC
Posteringsdato: 16-05-2016 kl. 15:54
Tak for dit forslag. Jeg har oprettet en lille testdatabase, som indeholder de relevante tabeller og formularer. Der er lagt lidt data ind i den, så det er muligt at oprette ordrer.
Tak for din medvirken, for jeg har ikke kunnet få det til at fungere. Jeg prøver at vedhæfte basen. Den fylder kun 0,7MB.
Nu har jeg uploadet her i systemet og håber du kan få den ud.


Besked fra: TAC
Posteringsdato: 16-05-2016 kl. 16:01
Ups, jeg glemte at give dig linket

uploads/152/Databasetst.accdb



Besked fra: hkh
Posteringsdato: 16-05-2016 kl. 17:07
Linket er ikke aktivt!

-------------
Hans


Besked fra: TAC
Posteringsdato: 16-05-2016 kl. 18:46
Jeg prøver igen
http://www.accessforum.dk/uploads/152/Databasetst.accdb" rel="nofollow - http://www.accessforum.dk/uploads/152/Databasetst.accdb

Det skulle virke


Besked fra: hkh
Posteringsdato: 17-05-2016 kl. 07:46
Jeg glemte lige en ting, jeg benytter version 2007.
Det gør desværre at jeg ikke kan læse nogle af dine tabeller.


-------------
Hans


Besked fra: Faroe2k9
Posteringsdato: 17-05-2016 kl. 11:14
Hey TAC.

Jeg byder mig lige ind, siden hkh ikke kan læse databasen.

Kan du kort skrive et resume over hvad der er galt, og hvad du ønsker den skal kunne?


Besked fra: hkh
Posteringsdato: 17-05-2016 kl. 14:32
Det kan jeg måske:
I formularen ordrer's underformular er der et felt kaldet produktkategori(combobox) der kun skal vise den varegruppe som er valgt i produktart(combobox)

-------------
Hans



Print side | Luk vindue