30. september 2015 - 07:15Der er
26 kommentarer og 1 løsning
Indstil kildeobject uden at oprette relation.
Har en kode til at oprette et nyt felt i min tabel, den kan af gode grunde ikke køre når tabellen er i brug. Derfor vil jeg efter den kode er kørt indsætte mit kildeobject til min underformular.
Problemet er nu at den selv opretter en relation til min hovedformular, det betyder så at den i min underformular kun viser den linje hvor id nummert passer i stedet for hele den refereret tabel.
Kan man komme uden om den relation eller måske oprette feltnavn selvom tabellen er i brug?
Det vil jeg fordi jeg har en database fyldt med postnummerer, opretter jeg så en ny kunde skal jeg oprette et nyt felt i den tabel hvor jeg har mulighed for bagefter at indtaste zone nummer til postnummerne.
? You got me there, not at all sure what you mean. Can you give an example? And if you have designed the dB correctly from the start I still wouldnt think it necessary to create new fields in a table.
Lande er tit delt op i zoner når man prissætter en transport, og i hver zone er der så en række postnummer.
De postnummer er allerede lagt ind i en database, når jeg så trykker opret kunde og skriver kundens navn skal den så gå ind i [zonetbl] og lave et felt med kundenavnet. Alt dette virker også. Nu skal jeg så bare have det sådan at den i min underformular viser [zonetbl] felt: (postnummer + by + Ny kunde) for at jeg så kan indtaste zonenummer tilhørende det rette postnummer.
Ja det giver meget god mening at oprette det på den måde, men jeg er stadig nød til at skulle ind og oprette et nyt felt, netop som du er inde på, de kan godt have forskellige zoner. Og det er jo så her mit problem igen opstår, jeg kan jo ikke oprette et felt mens tabellen bliver brugt (under opret kunde).
Yes tblKunderZonePostNr But then you can make a query (forespørgelse) where you can include other fields from related tables. On your sub form, which is linked to main form through tblKunde.ID and tblKunderZonePostNr.KundeID, you would hgave tow more combo's where you can choose Zone and post number. And you could show only postal numbers which belong to chosen zone. If zone or postal numbers dont exist then you would need code which creates them, or do it through another form.
A primary key can be made up of one or more fields and in this case it would need to be all three. KundeID ZoneID PostID
You can also add an ID (Autonumber) as the primary key, but then I would advise you to still make the three fields into a unique key. This stops you from creating another record with same values.
When you create the table you will see a data type = Lookup Wizard. Use this to make a relationship between table tblKunderZonerPostNr and the other three tables.
After you have created the three fields you can select them and then right click and select Primary key to make the three into your Primary key.
This is a many-to-many relationship which needs a junction table. In your case the junction table needs to join three tables (Ternary Relationship) because the zone/post numbers are unique for each customer.
Okay, det har jeg så prøvet nu, og jeg har bare valgt at tage ID felterne fra hver table. Er det rigtig nok? Eller skulle jeg vælge alle felter under Guidet opslag(Lookup Wizard)?
Den her måde at lave tabel opbygning på, hvad er grunden til at man gør det på dén måde? Er det bare måden at lave mange til mange relationer?
Samtidig skal jeg lige høre om vi har forstået hinanden rigtig. Alle postnummer er præindtastet fra starten (nu i tblZone) alle kunder har gør brug af ALLE postnummerne, der hvor forskellen ligger er om nordjylland er Zone 1 eller Zone 7, (hvilket jeg så skal have mulighed for at indtaste ved oprettelsen af en ny kunde. :)
The link I gave https://support.microsoft.com/en-us/kb/304466 explains the different types of relationships there are, and how you make them in a database. So to make a many-to-many relationship you will need three tables.
When you use the lookup wizard to create a field what actually happens is Access creates a relationship to the table you take fields from and at the same time it makes the field into a combo box where you can choose a value from the related table. If you only choose the ID field then the combo will only contain a column showing the ID values. Seeing only the ID may not be enough to help you choose for example which Zone you want. So having other fields in the combo will help with that. When you choose a row from the combo only the ID field is stored in the table. Hope that makes sense
Det gjorde det, og som det ser ud lige nu det jeg har fået lavet ser det ud til jeg er på rette vej.
Jeg mangler dog bare den ene ting, når jeg i mail mainform trykker "opret kunde" viser den "Kundeoplysninger", her har jeg så mulighed for at skrive kundens navn i "txtKunde". Nedenunder er der så en underformular, i denne underformular skal den så vise alle postnummerne (postnummer og byer er præindtastet i tblPostNr) Postnummerne er jo de samme til alle kunder, jeg skal bare kunne vælge vilken zone hvert postnummer har til den aktuelle kunde. Giver det mening? Og er det noget man kan få den til?
An idea could be to make an append query which you could run by pressing a button on main form AFTER you are finished creating a new customer.
Query would look something like this. INSERT INTO tblCustomerZonePostalCode ( CustomerName, PostalNumber ) SELECT [Forms]![frmCustomer]![ID] AS KundeID, tblPostalNumbers.ID FROM tblPostalNumbers ORDER BY tblPostalNumbers.ID;
Yo may also need to make alterations to the table which in my example is named tblCustomerZonePostalCode. The ZoneID column can now be empty so is no longer part of primary key. Only Custome id and postnumber ID are the primary key. and Zone ID is no longer required (can be empty)
Har alligevel valgt at sende det til dig og se om jeg måske på den måde kunne lære noget nyt og smart. :)
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.