Avatar billede dsj1972 Juniormester
24. juli 2016 - 12:01 Der er 10 kommentarer og
1 løsning

Hjælp til problem med data i underformular

Hej,

Jeg har fået lavet mig en fin lille database, syns jeg selv.
Men i takt med at jeg har ville gøre det så nemt som muligt for brugeren at indtaste data, har jeg vist fået låst mig fast.
Forklaring
Jeg har en formular med underformular som er sammenknyttet via sit Ordre nr, men i underformularen er der også et andet vigtigt felt som er knyttet til en anden tabel via et Ramme ordre ID.
Men da nogle kunder bruger ramme Ordre og andre slet ikke, giver det et problem da feltet ramme ordre Id ikke kan udelades under indtastning.

Nogen som har en ide til hvad man kan gøre så feltet ramme ordre id kan udelades nogle gange??

tabellen som underformular bygger på har Ordre Id og ramme Ordre ID som primær nøgle og relateret til hver sin tabel. Det skal lige siges at feltet Ramme ordre id er lavet som kombinations felt som ved hjælp af den kan indsætte data i andre relateret felter. Disse felter vil naturligvis skulle indskrives manuelt når ramme ordre id ikke indskrives.

Håber meget at det kan løses da jeg har brugt en hel del tid på detaljer, som jeg vil være ked af at skulle opbygge igen.


På forhånd tak!!

Mvh dsj
Avatar billede bvirk Guru
25. juli 2016 - 16:41 #1
Man kan gøre det, når underformularer skal anvendes på forskellig vis hver for sig, at man laver en underformular for hver brug og så skifter mellem dem ligesom det sker når der anvendes faner. Det er egenskaben kildeobject (eng: sourceobject ) for kontrolelementet der skal kune indeholde en valgt underformular der skal ændres ved en hensigtsmæssig hændelse. (i vba)
Avatar billede dsj1972 Juniormester
25. juli 2016 - 19:19 #2
bvirk,

Ja det kunne da være en løsning, men hvordan pokker laver man en hoved formular med underformular som skiftes på bagrund af en ændring i f.eks et tekst felt.


Jeg mener hvordan gør man i praktisk med at lave 2 underformular i samme hoved formular uden at de er synlige begge på samme tid.
Avatar billede dsj1972 Juniormester
26. juli 2016 - 14:21 #3
hvad er kode for at åbne en form i et object??
Avatar billede bvirk Guru
26. juli 2016 - 16:57 #4
Her er en lille demo hvor der skiftes subform ved at taste på en af to etiketer. Det kan sikkert også laves så det at man skriver tekst i et felt skifter subform:
https://drive.google.com/open?id=0B7nnvgTdhUrbU1VTZjhKR19OS1k
Avatar billede dsj1972 Juniormester
26. juli 2016 - 20:27 #5
Tak for demo,

Jeg har nu prøvet mig frem og tilbage, men syns snart det er lige meget hvad jeg gør så vil den ikke.

Er jo kun en praktikant, og jeg har prøvet meget, men her er hvad jeg sidst har prøvet

Men her er hvad jeg sidst prøvede:

Private Sub Kundenavn_Change()
 
    If Kundenavn = "Kunde1" Then

        Me.UnderordnetObjekt28 = "subfrmDetaljer1"
        Else
    Me.UnderordnetObjekt28 = "subfrmDetaljer2"
   
       

      End If
End Sub
     
Jeg er helt nede på knæ og bønfalder om at blive ledt på rette vej.....jeg er helt sikker på at jeg har fået skruet nogle forkerte ting sammen.
Avatar billede dsj1972 Juniormester
26. juli 2016 - 23:30 #6
Som sagt, har prøvet flere forskellige så blev nok forvirret til sidst, da jeg skrev.

sidste forsøg var sådan her

Private Sub Kundenavn_Change()
 
    If Kundenavn = "Copenhagen Sensor Technology A/S" Then

        UnderordnetObjekt28.SourceObject = "subfrmDetaljer1"
        Else
        UnderordnetObjekt28.SourceObject = "subfrmDetaljer2"
   
       

 
    End If
End Sub

men det er kun subfrmDetaljer2 der indlæses
Avatar billede dsj1972 Juniormester
27. juli 2016 - 15:14 #7
Så fandt jeg ud af det......utroligt som man kan stirre blindt på problemet uden at se at der mangler noget.......

den skulle se sådan ud for at virke

Private Sub Kundenavn_Change()

    If Kundenavn.Text = "Copenhagen Sensor Technology A/S" Then

      subform.SourceObject = "subfrmDetaljer1"
        Else
        subform.SourceObject = "subfrmDetaljer2"
   
       

 
    End If
End Sub

underobject28 er omdøbt til subform, men det var text der manglede efter "Kundenavn
Avatar billede bvirk Guru
27. juli 2016 - 15:16 #8
Blot et bud
Har feltet i subform(ene) som er bundet til et felt på hovedformen samme navn i subfrmDetaljer1 og subfrmDetaljer2. Det kan godt lade sig gøre at de har forskelligt navn, men så skal man sørge for noget - enten explicit eller vha. relationer.

Et simpelt eksempel med udgangspunkt i min demo database. Lad os antage at feltet 'sagsid' i tabel 'arbejde' blev omdøbt 'sid' - og den ikke var relateret til feltet 'id' i tabel 'sager'. For at det skulle spille skulle formular 'sager' have kodemodul:

Private Sub Form_Open(Cancel As Integer)
    korsel_Click
End Sub

Private Sub arbejde_Click()
    mySubform.SourceObject = "arbejde"
    mySubform.LinkChildFields = "sid"
End Sub


Private Sub korsel_Click()
    mySubform.SourceObject = "korsel"
    mySubform.LinkChildFields = "sagsid"
End Sub
Avatar billede dsj1972 Juniormester
27. juli 2016 - 16:31 #9
de 2 subformular er lavet ud fra samme tabel, jeg har bare udeladt det ene felt i en af dem

Det spiller nu foreløbig, som det skal.....der skal lige laves lidt detaljer på formularende, men ellers køre det som det skal , takker mange gange for gode eksempler.
Avatar billede bvirk Guru
06. august 2016 - 12:34 #10
Velbekommen
Ser at du efterfølgende udelader 'me.' prefixing af statements - ja 'me.' er virkningsmæssigt overflødig i formes og raporters objektklassemodul - overflødig når det bare prefixes objekter - anden brug af 'me' kan være smart nok!
Når jeg ser andre svarere konsekvent bruger det tænker jeg faktisk at de ikke er klogere - på den anden side, omend overflødigt virkningsmæssigt, er det en synsmæssig Tag-ning af kodelinierne: 'denne kode tilhører et objektklassemodul'
Det er lidt synd at når forelskelse i objekt dropdown'en blokere for brug af name completion dropdown'en (ctrl-space), grundet at man ikke tilegner sig et forhold til stavning af navne på ting -- et forhold der også utilsigtet animeres af guidernes nødvendigvis intetsignende objektnavngivning - f.eks 'Tekst53'
'Me' er vba's navn for dette:
https://en.wikipedia.org/wiki/This_%28computer_programming%29

Et simpelt eksempel:
Et KLASSE MODUL (class module i project explorer vinduet) indeholer

Public name
Public tel

Function init(n, t)
    name = n
    tel = t
    Set init = Me
End Function


Dette kan anvendes af kode i et STANDARD MODUL (module i project explorer vinduet)

' to omit a syntactic limitation in vba
Function o(obj): Set o = obj: End Function

Sub showMyObjCall()
    personInfo o(New Person).init("kurt hansen", "12345678")
End Sub

Sub personInfo(personObj)
    Debug.Print "name=" & personObj.name
    Debug.Print "telphone=" & personObj.tel
End Sub
Avatar billede dsj1972 Juniormester
08. august 2016 - 17:49 #11
Hej bvirk,

Tak for dit indslag, super med lidt yderligere forklaring.

Ja, jeg brugte jo først Me.  uden egentlig at vide hvad det gjorde, dog havde jeg fået den opfattelse at den på en eller anden måde arbejdede hurtigere i kode indlæsning eller hvordan man siger det. kan dog godt se på din forklaring at det nok snare hænger sammen med hvor man laver sin kode henne.

mht til dit tidligere indslag #8
så ser det faktisk ud til at jeg nu har det problem som du omtaler, dog har feltet samme navn i begge subforms, men i den ene hvor jeg bruger en kombi boks til at kalde værdier frem til de andre felter, der står det pludselig blankt på den subform. underligt for det virkede første gang, så jeg er lidt bange for at der er lavet en fejl et sted som får uheldig udfald på lige det felt i den subform. Det handler nok om hvordan de 2 subforms er lavet og relationer, men lidt svært at forklare må jeg nok indrømme uden egentlig at kunne henvise til noget.
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