Velden vullen met data uit andere tabel

Status
Niet open voor verdere reacties.

DigiEdje

Gebruiker
Lid geworden
10 sep 2008
Berichten
11
Goedemiddag Forumleden.
Ik ben bezig met een database waar ik verklaringen kan printen op basis van vaste data uit een tabel. Nu heb ik een tabel gemaakt met vaste art. nr's, productnaam, en goederencode, maar nu lukt het mij niet, om door middel van een zoekveld de data uit tabel Artikel gegevens te selecteren, en dat deze data wordt opgeslagen in de tabel LTSD. Het makkelijkste zou zijn, dat als ik een artikel nr selecteer, dat hij dan de velden Product en Goederencode automatisch aanvult. Deze gegevens staan uiteraard in de tabel Artikel gegevens. Ik kan eventueel de database mailen.



Alvast bedank voor diegene die mij hierbij kan helpen. Ben namelijk al enkele dagen aan het stoeien.
LTSD form.JPGArt gegevens.JPG

Groetjes,
Edwin


PS. Foto van selectie vakje hoort niet bij dit bericht. sorry
 

Bijlagen

  • Selectievinkje.JPG
    Selectievinkje.JPG
    25,3 KB · Weergaven: 55
Laatst bewerkt:
Ik snap je vraag (denk ik) wel, maar je probleem niet. En dat komt enerzijds doordat we de db niet hebben, en dus niet kunnen zien hoe de relaties liggen, en anderzijds doordat je een m.i. overbodige vraag stelt. Naamgeving in databases is redelijk arbitrair, maar het heeft altijd zin om daar een zekere logica in te bouwen. een tabel [Artikelen] zou ik zelf dus altijd [tArtikelen] of [tblArtikelen] noemen, zodat ik ook een query [qArtikelen] kan maken en altijd onderscheid heb tussen tabellen en quuries. Verder zou ik spaties in namen vermijden, die leveren alleen maar problemen op. Maar de tabel [Artikel gegevens] is nog enigszins duidelijk, de tabel [LTSD] is dat niet :).

Maar laten we voor het gemak even aannemen dat er een één-op-veel relatie bestaat tussen [Artikel gegevens] en [LTSD]. Dan hoef je in LTSD maar 2 velden op te nemen: ArtikelID en [Prijs]. De velden [Product] en [Goederencode] lijken mij vooral overbodig, want op basis van het unieke ArtikelID kun je altijd de overige gegevens terugvinden. Dat geldt in beginsel voor [Prijs] natuurlijk ook, maar omdat een prijs doorgaans variabel is, wil je in de (berekeningen op basis van de) transactietabel altijd de prijs terugzien op het moment van de transactie. En daar zijn verschillende technieken voor, maar de makkelijkste is toch wel om in je transacties de prijs ook mee op te slaan, zodat, als je later de prijs verandert, bij nieuwe transacties de nieuwe prijs gebruikt en de oude transacties niet veranderen.

Gek genoeg heb je het dus niet over een veld dat variabel is, maar wil je vaste gegevens mee kopiëren. En dat raadt ik je dus ten zeerste af, uit oogpunt van redundantie (dubbele gegevens nodeloos opslaan). Wat je wél kunt doen (en daar gaat je vraag ook over) is om op basis van een gekozen artikel de formuliervelden [Product] en [Goederencode] automatisch te vullen. Dat doe je vanuit de keuzelijst; daar zet je de velden die je terug wilt zien in de Rijbron van de keuzelijst, en m.b.v. een formule lees je die dan uit in een tekstvak.
Je hebt dus twee tekstvakken, die resp. de volgende formules krijgen als Besturingselementbron
Code:
txtProduct: =cboArtikel.Column(2)
txtGoederencode: =cboArtikel.Column(3)
Hoe kom ik aan die getallen? Zo zou ik het doen :). In mijn keuzelijst zou de eerste kolom (met waarde 0) het ArtikelID bevatten, de tweede kolom (waarde 1) de Artikelomschrijving (die je terugziet in de keuzelijst) en de derde en vierde kolom dus Product en Goederencode. De tekstvakken zijn dus niet-gebonden, en je slaat alleen het ArtikelID op, zoals het hoort.
 
Hoi Octafish,
Dank voor je uitgebreide reactie. Ik zal weer eens mee gaan stoeien. Voor het gemak post ik even de Database waar het om gaat. Ik heb de rapporten even verwijderd, daar hier nogal wat bedrijfsinformatie op staat.

Hoop dat het nu duidelijker is.


Groetjes en alvast bedankt.
 
Laatst bewerkt:
Snel klaar :) Daar zou ik voorlopig als ik jou was even verder geen tijd in steken, maar eerst het ontwerp van de db eens tegen het licht houden. Je hebt in je tabel LTSD 82 velden staan, waar je er met 7 kunt volstaan. Er kunnen er dus 80 uit. En wel de velden [Product 2] t/m [Product 26], [Goederencode 1] t/m [Goederencode 26] en [Artikel nr Navision 1] t/m [Artikel nr Navision 26].
Ik had het al over dataredundantie (overtollige velden opslaan) en daar is hier dus sprake van. Je hebt maar één veld [Productcode] nodig, verder dus niks. Ik zou overigens, want ik vermoed dat het om een soort van bestellingen gaat, de tabel LTSD koppelen aan de tabel [LTSD_Regels] en dáár de Productcode alsmede het veld [LTSD_Id] in opnemen, plus de velden die je nog meer denkt nodig te hebben zoals [Printen]. De LTSD is dan één record voor de Customer gegevens, en een gekoppelde tabel met de artikelgegevens. Op het hoofdformuiler op de tabel [LSTSD] zet je dan een subformulier met de tabel {LTSD_Regels] en dan kun je net zoveel records maken als je nodig hebt. Nu zit je vast aan 26. Erg slecht genormaliseerd dus, en in nmijn ogen onwerkbaar.
 
Dank voor je reactie. Ik ga er eens mee aan de gang. Dank voor je tijd om te reageren.

Groetjes en een fijne dag,
Ed
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan