Gesprekken lijst in een access form

Status
Niet open voor verdere reacties.

Kublai

Gebruiker
Lid geworden
7 mei 2012
Berichten
21
Beste,

Ik heb ooit in een database in een subform een gesprekken lijst geizen. Dit zag er als volgt uit:
In het hoofd formulier zat een subform dat gesprekken hete. Hier in stond een soort tabel met

Datum Onderwerp Followup date

zo stonden er in de tabel een hoop gesprekken onder elkaar. wanneer je op een gesprek klikte kreeg je een popup met daarin alles wat in het gesprek getyped was.
Ook was het mogelijk een nieuw gesprek toe te voegen. Wanneer je dit deed kreeg je ene zelfde pop up. wanneer je het gesprek opsloeg kwam hij onder aan in de lijst te staan (op volgorde van datum)

Nu ben ik zelf met een database bezig waar ik ook telefoon gesprekken in op wil kunnen slaan. Ik wil graag een zelfde systeem gebruiken, maar kom er niet aan uit hoe dit precies werk.
Kunt u mij hierbij helpen?

Groeten,
Tom
 
Het systeem zelf is simpel te maken, als je de juiste tabellen hebt. Om te beginnen: wat staat er op het hoofdformulier? Zoals je het vertelt, is er geen bron voor het hoofdformulier, en zie je alleen een subformulier voor de gesprekken. Die constructie is overbodig, want je kunt dan beter van het subformulier een zelfstandig hoofdformulier maken. Elk doorlopend formulier kun je zo instellen dat je records kan toevoegen (sterker nog: is standaard) dus dat is verder ook geen probleem. De popup is ofwel een apart formulier met alleen de tekst van het veld [Onderwerp], ofwel een popup van het ZOOM venster dat je kunt openen als je op <Shift>+<F2> drukt. De laatste optie kan er voor zorgen dat Access vastloopt als je dat gaat programmeren op (bijvoorbeeld) de <Bij klikken> eigenschap van het formulier. Beter is dus een apart formulier maken, en dat openen met de tekst van de geselecteerde record. Ook dat is redelijk simpel m.b.v. een wizard te maken.
 
Ik begrijp wat je bedoeld. Maar ik wil in de tabel kunnen klikken om vervolgens een popup te krijgen waar ik dan meer informatie kan typen als wat ik in de tabel zie.
Om het iets duidelijker te maken heb ik er 2 plaatjes bij gedaan. De eerste is wat ik momenteel heb, hier zie je ook duidelijk het hoofd formulier in. Het 2e plaatje is zoals ik het zou willen hebben.
We moet het zo blijven dat wanneer je op het hoofd formulier naar een volgende klant gaat dat het tabelletje met gesprekken dan ook voor die volgende klant verschijnt, vandaar het subform.

Bedankt alvast!
 

Bijlagen

  • databasevb.png
    databasevb.png
    34,2 KB · Weergaven: 43
  • databasepopup.png
    databasepopup.png
    67,9 KB · Weergaven: 52
Heel even dacht ik dat je iets onmogelijks wilde:
Maar ik wil in de tabel kunnen klikken om vervolgens een popup te krijgen waar ik dan meer informatie kan typen als wat ik in de tabel zie.
Dat kan namelijk niet: popup formulieren kun je alleen vanuit een formulier openen.

Volgens mij heb je al wat je wilt, met een paar kleine aanpassingen. Althans: als het gespreksblok op je huidige formulier inderdaad een (enkelvoudig) subformulier is. Dat formulier haal je dan van je hoofdformulier af, en vervang je door een subformulier waarin je de gesprekken in Gegevensweergave ziet. Met een actie op het veld [Gesprek] (<Bij klikken> of <Bij dubbelklikken>) open je dan het enkelvoudige gespreksformulier (liefst in acDialog modus, zodat je eerst de popup moet afsluiten).
 
Dus dan maak ik een nieuw subform in tabel weer gave, hierin zet ik wel het veld gesprekken en bij klikken op dit veld stel ik een gebeurtenis procedure in?

Wat moet ik precies in de gebeurtenis procedure zetten om dan mijn gesprekken subformulier te openen om zo de gegevens in te kunnen vullen?

Het wordt dus zoiets als dit:

Private Sub Gesprek_Click()
acDialog

End Sub

Ik heb een nieuw subform gemaakt, zie mijn printscreen. Is dit wat u bedoeld? Is het dan wel mogelijk bij klikken het oude formulier op te roepen om ze de gegevens in te voeren en bij sluiten van dit formulier dat de gegevens dan in de tabel zoals in mijn printscreen staan weergeven?

subformuliertabel.png
 
Dat is precies wat ik aangaf: je oude formulier moet je openen met de actie <Bij klikken>. Maar niet zoals je de code nu het gepost, want dat laat alleen maar de parameter zien.
Code:
Private Sub Gesprek_Click()
    DoCmd.OpenForm "Subformulier Gesprekken", AcWindowMode = acDialog
End Sub
 
Wanneer ik deze code gebruik lukt het niet om het formulier te openen bij klikken in het subformulier
de volgende fout wordt weergegeven (zie bijlage). Wanneer ik het zelfde probeer vanaf een veld in mijn hoofd formulier lukt het wel om het gesprekken formulier te openen. Kunt u me hier mee helpen?

Ook heb ik geprobeerd vanuit het subformulier opnieuw het zelfde subformulier op te roepen, dit werkt wel, maar wanneer ik dan data invoer komt deze steeds alleen bij het eerste reccord te staan en niet bij het record waar ik op geklikt heb.
 

Bijlagen

  • foutmedling.png
    foutmedling.png
    40,9 KB · Weergaven: 28
Laatst bewerkt:
Ik krijg de indruk dat je vreemd bezig bent; hetzelfde formulier twee keer openen? Wat is daar het nut van? Maak eens een voorbeeldje, want anders kan deze draad nog wel een paar weken doorsukkelen...
 
Bij deze mijn database file zoals hij op het moment is. Bij het dee = acdialog in de code gaf access een fout aan, dit heb ik er uitgelaten, het openenn van het form werkt nu wel. Het doorvoeren van gegevens die ik invoer bij het opnieuw geopende formulier werkt alleen niet. Hopelijk kunt u hier even naar kijken.
 

Bijlagen

Laatst bewerkt:
Ik heb de fouten er uitgehaald, en de formulieren op de juiste manier geopend. En een klein beetje opgeleukt :)
 

Bijlagen

Geweldig, dat ziet er al goed uit!

Alleen wanneer ik bij een nieuw reccord het onderwerp en gesprek in wil voeren dan geeft hij niet gelijk het pop up scherm maar een foutmelding. Ik heb de print scr. ervan weer bij gevoegd. Alleen wanneer je de fout melding weg klikt en in het reccord als een onderwerp typed en dan nogmaals op het reccord klikt krijg je wel het invoer schermpje.

Bedankt,
 

Bijlagen

  • foutmedling.jpg
    foutmedling.jpg
    76,4 KB · Weergaven: 34
  • foutopsporing.png
    foutopsporing.png
    24,5 KB · Weergaven: 22
Laatst bewerkt:
Is logisch, want hij kijkt naar een tabel waarin een record moet zijn opgeslagen. En dat record bestaat nog niet. Je zou, als je de datum van een gesprek invult, dat record dus eerst moeten bewaren (dan bestaat hij) en dan kan het formulier het record weer openen. Al kun je de procedure ook wel zo aanpassen dat hij voor het klikken eerst het record opslaat. Voeg dan deze regel toe in de procedure (moet wel dus als eerste worden uitgevoerd)
Code:
If Me.Dirty Then Me.Dirty=False
 

Je bedoeld in de click gebeurtenis?

Dus dan krijg je dit?

Code:
Private Sub Gesprek_Click()
    If Me.Dirty Then Me.Dirty = False
    DoCmd.OpenForm "Gesprekken invoer form", WhereCondition:="[ID]=" & Me.Id, WindowMode:=acDialog, OpenArgs:=Screen.ActiveControl.Name
    Me.Refresh
    
    End Sub

Dit werkt ook niet helemaal lekker..
 
Laatst bewerkt:
Bij mij werkt dat prima. Wat je waarschijnlijk niet doet, is iets veranderen aan de datum o.i.d. Een record moet er wel zijn, nieuw of bestaand, voordat hij kan worden opgeslagen. Omdat het subformulier datum als standaardwaarde heeft, is er geen status voor een nieuw record als je in één van de twee tekstvakken klikt. Er wordt dus ook geen record aangemaakt.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan