Avatar billede dkclajen Juniormester
30. september 2015 - 07:15 Der 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?
Avatar billede terry Ekspert
30. september 2015 - 10:51 #1
Silly question but why make design changes to your dB when it is in use?
Avatar billede dkclajen Juniormester
30. september 2015 - 11:52 #2
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.
Avatar billede terry Ekspert
30. september 2015 - 12:22 #3
?
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.
Avatar billede dkclajen Juniormester
30. september 2015 - 16:30 #4
Troede ikke man sådan kunne slå dig ud. :)

Men min ide er sådan her;

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.

Giver det bedre mening?
Avatar billede terry Ekspert
30. september 2015 - 17:44 #5
Giver det bedre mening?

Well yes and no :-)

Just to be sure I understand what you are saying "Har en kode til at oprette et nyt felt i min tabel"

Do you create a new field in Zonetbl for each customer? If you do then your design is wrong!

This is how I think it should be.

tblZone (Zonetbl)
ID
ZoneName

tblPostNumber
ID
PostNumber
PostName
ZoneID (References tblZone.ID)

tblKunde
ID
KundeNavn
PostID /References tblPostNumber.ID)
.
.

From the above you can find which PostNumbers are in a zone.
The postnumber of a customer and from that find the Zone.
Avatar billede terry Ekspert
30. september 2015 - 18:07 #6
If customers have different Zones/postnumber then you still shouldnt have to create a new field in the table.
Avatar billede dkclajen Juniormester
02. oktober 2015 - 16:36 #7
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).
Avatar billede terry Ekspert
02. oktober 2015 - 17:31 #8
If customer can have different zones/postnr you need a table which has the zones/postnr for your customers.
So you dont need to create a new field.

So in your sub form you add all zones/postnummer into tblKunderZonePostNr



tblZone (Zonetbl)
ID
ZoneName

tblPostNumber
ID
PostNumber
PostName


tblKunde
ID
KundeNavn


tblKunderZonePostNr
KundeID (References tblKunde.ID)
ZoneID (References tblZone.ID)
PostID (References tblPostNumber.ID)
Avatar billede dkclajen Juniormester
03. oktober 2015 - 13:22 #9
den du kalder tblKunderZonePostNr; skal det være en forespørgelse så? Eller er det en tabel for sig selv med de nævnte referencer?
Avatar billede terry Ekspert
03. oktober 2015 - 14:17 #10
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.
Avatar billede terry Ekspert
03. oktober 2015 - 14:17 #11
Yes tblKunderZonePostNr ... is a table :-)
Avatar billede dkclajen Juniormester
03. oktober 2015 - 14:21 #12
Jeg prøver lige når jeg får tid igen at opbygge det på din måde og se om ikke det skulle give det ønsket resultat. :)
Avatar billede terry Ekspert
03. oktober 2015 - 14:34 #13
Thanks.
Just imagine, if you had 1000 customers or even more, and having to create a new fields for each if these :-)

This is the correct way to do it, and I'm sure you'll see the advantages when its working. Drop a comment if you need further help later here.
Avatar billede dkclajen Juniormester
03. oktober 2015 - 20:28 #14
Ja det kan jeg godt se det ikke holder. :)

Er lige gået en smule igang med det, men hvad skal være min primanøgle(primekey) i tblKunderZonerPostNr?
Avatar billede dkclajen Juniormester
03. oktober 2015 - 20:39 #15
Bliver en lille smule i tvivl om hvad jeg skal bruge tblKunderZonerPostNr til? Og skal relationerne være 1 til mange?
Avatar billede terry Ekspert
04. oktober 2015 - 09:21 #16
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.
Avatar billede terry Ekspert
04. oktober 2015 - 11:01 #17
https://support.microsoft.com/en-us/kb/304466

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.
Avatar billede dkclajen Juniormester
04. oktober 2015 - 15:31 #18
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. :)
Avatar billede dkclajen Juniormester
04. oktober 2015 - 15:32 #19
Rettelse:    Alle postnummer er præindtastet fra starten (nu i tblZone)  -->  Alle postnummer er præindtastet fra starten (nu i tblPostnummer) :)
Avatar billede terry Ekspert
04. oktober 2015 - 17:59 #20
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
Avatar billede dkclajen Juniormester
04. oktober 2015 - 19:21 #21
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?
Avatar billede terry Ekspert
05. oktober 2015 - 10:51 #22
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)
Avatar billede dkclajen Juniormester
08. oktober 2015 - 16:40 #23
Nu tror jeg vist vi er gået op på et Access niveau hvor jeg slet ikke er nået til, så må vist finde en anden måde at gøre det her på. :(
Avatar billede terry Ekspert
08. oktober 2015 - 17:43 #24
:-)

If you send me your dB I'll see if I can do it for you, how does that sound?

ekspertenATsanthell.dk
AT = @
Avatar billede dkclajen Juniormester
08. oktober 2015 - 19:45 #25
Kunne være super godt, men ud over at jeg ville bruge databasen laver jeg den også for at lære access. Men overvejer det da lige. 😊
Avatar billede terry Ekspert
09. oktober 2015 - 12:45 #26
OK.
Avatar billede dkclajen Juniormester
10. oktober 2015 - 18:29 #27
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. :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester