Avatar billede zicko Nybegynder
14. januar 2005 - 09:53 Der er 26 kommentarer og
2 løsninger

Linke data i formular (Where?)

Jeg er lige begyndt at rode lidt med formularer i Access og har nu siddet i et par time og prøvet men er ikke kommet meget videre..

Jeg har oprettet en formular med data fra 3 tabeller (Kunde, Postnumre og Kontakter)

Tabellerne er som følger (Primær nøgle markeret med *)

[Kunde]
- Kundenummer*
- Firmanavn
- Adresse
- Postnummer

[Postnumre]
- Postnummer*
- By

[Kontakter]
- Kundenummer*
- Kontakttidspunkt*
- Kontaktet af*
- Att
- Kontaktform
- Referat


Og nu til mit spørgsmål... Jeg vil gerne lave en formular hvor jeg ved at indtaste "Kundenummer" kan få vist det "Firmanavn, Adresse, Postnummer og By" der relaterer til det valgte "Kundenummer" i almindelige felter og en liste med de "Kontakttidspunkter" der relaterer til "Kundenummer" ved siden af, når jeg så klikker på et af emnerne i "Kontakttidspunkt listen" skal der vises de emner i "Kontaktet af, Att, Kontaktform og Referat" der relaterer til det valgte "kundenummer" og "kontakttidspunkt"

Det var en længere udredning, jeg håber der er en der forstår hvad jeg mener og kan hjælpe, jeg kunne forestille mig at det er ret nemt at løse hvis man ved hvordan, det nemmeste kunne måske være hvis der er en der kan lave et eksempel jeg kan se noget ud fra... Jeg har forsøgt mig med forespørgsler og WHERE og så videre men ikke noget af det har virket.. Håber der er en der kan hjælpe... På forhånd tak! :)
Avatar billede steffansteffan Nybegynder
14. januar 2005 - 10:06 #1
Det er en større process, nok en ide og tage den i små bider i en del spørgsmål du kan oprette her inde. Men jeg ahr taget fat på en ting, nemlig den og udskriver en bestemt bruger efter kundenummer.

---------------Start kode-------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>

            <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td>
                  <%
    Conn_String = "DRIVER={Microsoft Access Driver (*.mdb)};UID=; PWD=1321;DBQ=" & Server.Mappath("Databasenavn.mdb")
    id01 = Request.QueryString("ID")
    Set Conn2=Server.CreateObject("ADODB.Connection")
    Conn2.open Conn_String
    set rs2 = Conn2.execute("select * from kunde where id= "&id01)
%>
                  <br> <form name="form" method="post" action="ret_artikel2.asp" onSubmit="return Checkform(this);">
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="12%" height="22">Overskrift:</td>
                        <td width="88%"><input type="text" name="overskrift" size="65" class="input" value="<%=rs2("overskrift")%>"></td>
                      </tr>
                      <tr>
                        <td height="18" valign="top">Beskrivelse:</td>
                        <td height="18"><textarea name="beskrivelse" class="input" rows="16" cols="85"><%=rs2("beskrivelse")%></textarea></td>
                      </tr>
                      <tr>
                        <td height="18" colspan="2">&nbsp;</td>
                      </tr>
                    </table>
                  </form>
                  <%
rs2.close
%>
                </td>
              </tr>
            </table>


</body>
</html>

----------------Slut Kode------------

Du skal selvfølgelig tilpasse databasenavn.
Ved ikke om det er 100% det du skal bruge. For det er lidt svært og forholde sig til når man kun for det på tekst.
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 10:08 #2
Kan du bruge en fil fra Acess2003? I så fald sender jeg dig en fil, hvis jeg får din e-mail adresse.
Avatar billede steffansteffan Nybegynder
14. januar 2005 - 10:09 #3
Du ved jeg ikke hvor meget du  har arbejdet med asp....Men må heller lige forklare det. Den kode jeg har smækket i indlæg #1. Tager fra en url. Det vil sige at hvis du gemmer koden i et dokument ved navn se_profil.asp. Så tager den ud fra et ID i din URL/Adresse.

Det vil sige at hvis du skriver Se_Profil.asp?id=25 Så finder den brugeren med kundenummer 25 i databasen og skriver lidt indformationer om ham.

Gemlte også og skrive at du selvfølgelig også skal tilpasse. udtrækningerne. Til de felter du har i databaen. Firmanavn. postnummer o.s.v Men prøv og leg lidt med det, held og lykke. Så er du da kommet en lille smule videre. ;)
Avatar billede mugs Novice
14. januar 2005 - 10:43 #4
Du har disse tabeller:

Kunde]
- Kundenummer*
- Firmanavn
- Adresse
- Postnummer

[Postnumre]
- Postnummer*
- By

[Kontakter]
- Kundenummer*
- Kontakttidspunkt*
- Kontaktet af*
- Att
- Kontaktform
- Referat

Tabellerne Kunde og Postnumre er OK. Disse skal fungere som "lagre" af data, som ved kombinationsbokse kan hente over i tabellen Kontakter.

Kontakter skal ændres. Opret ef felt (FLDkundenummer) og et andet felt (FLDpostnr) af samme felttype som de reskeptive felter i de 2 andre tabeller. I Feltegenskaben Opslag sætter du den til Kombinationsboks og udfylder resten således, at de henter data fra de andre tabeller. Luk tabellen og gem. Du er nu tilbage i databasevinduet. Åbn relationsvinduet og kald alle 3 tabeller ind i vinduet. Flyt rundt på tabellerne så du har tabellen Kontakter i venstre side og de 2 øvrige i højre side 8Dette er ikke strengt nødvendigt, men giver dig et bedre overblik). Peg på Kontakter med musen og klik på feltet FLDkundenummer, og træk nu musen hen til tabellen kunde og slip musen når denne peger på feltet Kundenummer. GØr det samme med feltet FLDpostnr til tabellen Postnumrer og feltet Postnummer.

Du har nu oprettet relationer mellem tabellerne. Luk relationsvinduet. I databasevinduet peger du på fanen Forespørgsler og klik > Ny > Hent alle 3 tabeller ind i forespørgslen. I tabellen Kontakter dobbeltklikker du på feltet FLDkundenummer, herefter dobbeltklikker du på alle felter i tabellen Kunde. Dobbelt på feltet FLDpostnr i tabellen Kontakter og herefter på feltet By i tabellen Postnumre. Kør forespørgslen.

Du vil nu se alle poster og bemærk at du kun har de relaterede felter fra Kontakter, og alle andre felter fra de andre tabeller.
Avatar billede zicko Nybegynder
14. januar 2005 - 13:02 #5
Steffansteffan > tak for forsøget, men det skulle være en Access formular ;) Jeg kan godt finde ud af at lave det i ASP, prøver bare at hitte lidt mere ud af Access i sig selv..
Avatar billede zicko Nybegynder
14. januar 2005 - 13:05 #6
lorentsnv > Det ville være helt super!! :) den er: imp*mail.dk (erstat * med @ ;))
Avatar billede mugs Novice
14. januar 2005 - 13:15 #7
zicko > Du kan ikke oprette relationer i en formular. Men på baggrund af forespørgslen ovenfor beskrevet, kan du lave en formular, og så fungerer relationerne igen.
Avatar billede zicko Nybegynder
14. januar 2005 - 13:33 #8
mugs > ok, hva' ved jeg ;) jeg sidder lige og prøver om jeg kan hitte ud af det du har skrevet... det er ikke sådan at du kan lave et eksempel? Ikke nødvendigvis med de tabeller jeg har angivet, mere så jeg kan se hvordan det foregår...
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 13:39 #9
Jeg har lige sendt dig en lille database med de tabeller du beskriver, og en formular der har en listboks øverst til at vælge kunde/firma, og en subreport der viser kontaktinfo.
Avatar billede zicko Nybegynder
14. januar 2005 - 13:43 #10
lorentsv > Den ser fin ud, men jeg kunne bare godt tænke mig at have informationerne om kontakttidspunkt, ATT og så videre til at fremstå i nogle tekstbokse ligesom Firmanavn, by, postnr og de andre..
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 14:10 #11
Jeg har nu sendt en ny fil, hvor jeg har sat subformularen til at fremstå som single form.
Avatar billede steffansteffan Nybegynder
14. januar 2005 - 14:15 #12
zicko, hehe min fejl, overså det i Access, Misforstod det til og være fra Access, beklager.
Avatar billede zicko Nybegynder
14. januar 2005 - 14:29 #13
mugs > jeg prøvede lige din version, når jeg kører forespørgslen får jeg: "Datatyper i JOIN-udtrykket stemmer ikke overens" hvad vil det sige og hvad kan jeg gøre for at rette det ?
Avatar billede mugs Novice
14. januar 2005 - 14:34 #14
zicko > Fejlen betyder, at de felter du prøver at relatere har forskellig datatype. F.eks kan det ene felt være tekst og det andet tal. De skal være ens. Du bliver nødt til at rette eet af felterne.
Avatar billede mugs Novice
14. januar 2005 - 14:37 #15
Husk på, at Access er en relationsdatabase, hvis styrke jo netop ligger i relationerne mellem de enkelte tabeller.

Er du statig interesseret i et eksempel, eller har du nok i lorentsnv. Jeg har ikke tid til at lave det lige nu, men jeg kan senere.

Jeg har for øvrigt en gammel lektion der viser hvordan du skruer en Access db sammen. Så vidt jeg husker består den af 13 Wordlektioner med skærmdumps fra Access97, men det kan sagtens bruges i nyere versioner også. Den kan jeg sende med det samme.
Avatar billede zicko Nybegynder
14. januar 2005 - 14:37 #16
Ja det fandt jeg også ud af.. det var kundenummer...
Nå men nu virker forespørgselen og formularen, så er det bare hvordan jeg får det til at virke med Kontakttidspunkt ?
Avatar billede mugs Novice
14. januar 2005 - 14:40 #17
Kotakttidspunkt og andre felter, trækker du blot ned i forespørgslen også. Derefter kan du åbne din formular i designvisning og trykke på ikonet med feltlisten, derefter trykker du på det ønskede felt og trækker det ned i formularen på det sted du ønsker.
Avatar billede zicko Nybegynder
14. januar 2005 - 14:43 #18
Ok, men hele fidusen var at jeg gerne ville have en liste over kontakttidspunkter i en listbox, sådan så når man klikkede på et kontakttidspunkt i listboxen ville man kunne læse Att, Kontaktperson, Referat og så videre...
Avatar billede mugs Novice
14. januar 2005 - 14:47 #19
Hvad vil du gøre, hvis du har det same kontakttidspunkt mere end een gang?. Hvis hver post har en unik nøgle, kan du programmere dig ud af at åbne en anden formular med detaljer om den valgte post.
Avatar billede zicko Nybegynder
14. januar 2005 - 15:05 #20
hmm.. det lyder indviklet... Findes der virkelig ikke en nem måde hvorpå man kan sige noget i retning af: "HVIS der står 2 i feltet KUNDENUMMER så skal listboxen KONTAKTTIDSPUNKTER vise alle emner fra tabellen KONTAKTER hvor KUNDENUMMER=2" og når der klikkes på et emne i KONTAKTTIDSPUNKTER skal felterne ATT, KONTAKTFORM, REFERAT vise ATT, KONTAKTFORM, REFERAT fra tabellen KONTAKTER hvor KUNDENUMMER=2 og KONTAKTTIDSPUNKT=det man valgte i listboxen..."
Avatar billede mugs Novice
14. januar 2005 - 15:07 #21
Det er egentlig ganske simpelt. Sender en demo om lidt.
Avatar billede mugs Novice
17. januar 2005 - 17:20 #22
zicko -> Hvordan går det ?
Avatar billede zicko Nybegynder
18. januar 2005 - 14:11 #23
mugs > undskyld jeg kom lige fra det.. jeg har siddet og kigget på den du sendte, men kan ikke helt gennemskue hvordan den fungerer og hvad den gør.. Det ser ud som om der er noget programmering med eller hvad?
Avatar billede mugs Novice
18. januar 2005 - 16:53 #24
Du har 2 formularer. Access starter automatisk i formular1. Nu ønsker du at se detaljer om den post du står i i formular1. Derfor trykker du på den blå kommandoknap, og formular 2 vil blive åbnet og markøren stiller sig i samme post som du forlof i formular1. Koden ligger i kommandoknappens Vedklik hændelse.
Avatar billede zicko Nybegynder
27. januar 2005 - 17:30 #25
mugs > har sendt et forslag retur til dig som ser ud som jeg havde forestillet mig det, har du mulighed for lige at kigge på det og se om du kan få den til at opdatere Kontaktinformationer når man klikker på et emne i listen med kontakttidspunkter?
Avatar billede mugs Novice
27. januar 2005 - 20:00 #26
zicko arbejder med en liste, og det har jeg ikke meget forstand på. Har returneret et forslag med en underformular bundet til parentform.
Avatar billede lorentsnv Nybegynder
28. januar 2005 - 06:48 #27
zicko -> send mig eventuelt din database igen, så kan jeg forsøge at kigge lidt på den i weekenden.
Avatar billede zicko Nybegynder
09. februar 2005 - 12:14 #28
tak for forsøgene, jeg fik det ikke til at virke helt som jeg havde håbet.. Men tilnærmelsesvis med hjælp fra mugs, lorentsnv får lidt for forsøget..

Tak :)
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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