Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: insert vraagje  (gelezen 3493 keer)

0 leden en 1 gast bekijken dit topic.

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
insert vraagje
« Gepost op: 10 april 2011, 13:06:41 »
Beste forumleden,
zoek naar een oplossing om gegevens in een tabel te plaatsen vanuit een formulier.

Heb volgende code:

Dim klan As Integer
Orderdatum = Date
OrderId = 0
tInvoeg = InputBox("geef het bedrag voor kk")
klan = DLookup("klantnummer", "Queryklan")

strSQL = "insert into Klantenkaart (Orderdatum, OrderId, Aankoopbedrag, Klantnummer) values ( '" & Orderdatum & "'," & OrderId & ",'" & tInvoeg & "'," & klan & ")"

Het probleem dat ik nu heb is dat in de procedure telkens de gegevens uit Queryklan
worden ingevoegd. Deze query haalt uit de laatste order het klantnummer.
Als ik in het formulier naar voorgaande records scroll, werkt de code maar haalt hij nog steeds
de laatste record op met het laatste klantnummer.
Dit zou flexibeler moeten.
Hij zou het klantnummer vanuit het formulier moeten halen met de code.

vraag: kan er vanuit de code verwezen worden naar het formulier dat open is, zodat
van daaruit het klantnummer wordt gehaald?

zoiest als:
klan = DLookup ("klantnummer","Queryklan", Me.Klantnummer) 'maar dit werkt niet want de code haalt
dit niet op.

Hopelijk is dit duidelijk.
 Grt,

M.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: insert vraagje
« Reactie #1 Gepost op: 10 april 2011, 14:52:51 »
Hallo Maurann,

Ik heb thuis geen Access om te testen, maar ik vind overal een beetje hetzelfde terug...
[Forms]![Your Form Name]![Name of control]

bijvoorbeeld [Forms]![MyForm]![txtKeyField]

Kan je dat gebruiken in code om de waarde van het klantnummer op te halen?

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: insert vraagje
« Reactie #2 Gepost op: 10 april 2011, 15:23:38 »
Txs, Firebirdy.

Dit werkt.

Maar zou je ook iets kunnen maken afhankelijk van het
geopende formulier.
If Form1 = open
then [Forms]![MyForm1]![txtKeyField]
If Form2 = open
then [Forms]![MyForm2]![txtKeyField]

Dus dat de code eerst nagaat welk formulier open staat?

Grt,

M

 
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: insert vraagje
« Reactie #3 Gepost op: 10 april 2011, 17:07:32 »
Mogelijks dit:
Citaat
If Application.SysCmd(acSysCmdGetObjectState, acForm, nameOfForm) = acObjStateOpen Then

Met nameOfForm vb "MyForm1". Maareuh, of dit de juiste manier van werken is... ;D. Ik denk dat de Access-experts op een terrasje of in hun tuin zitten, en je kan ze het niet kwalijk nemen :).

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: insert vraagje
« Reactie #4 Gepost op: 10 april 2011, 17:28:14 »
Tja,

't is dan ook wel zalig hé ;)

M.

Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.346
  • I've Upped my standards,now,up yours!
Re: insert vraagje
« Reactie #5 Gepost op: 10 april 2011, 19:11:30 »
Een afdrukje van je formulier in ontwerpweergave zou wel handig zijn.
Ik snap niet dat je dat van een query zou halen als het als op je formulier staat.

klan = DLookup ("klantnummer","Queryklan", Me.Klantnummer) 'maar dit werkt niet want de code haalt
Zou moeten zijn
Citaat
klan = DLookup ("klantnummer","Queryklan", "Kantnummer=" & Me.Klantnummer)
Maar dit lijkt me zo overtollig? Je zoekt je klantnummer, in je query maar deze staat op op je formulier ...anders kon je er niet naar zoeken.


Citaat
txtKlantNaam= DLookup ("klantnaam","Queryklan", "Klantnummer=" & Me.Klantnummer)
Lijkt me zinvoller om te doen.

Maar ook daar ontgaat het me even waarom je dat niet meteen in de tabel gaat zoeken?


Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: insert vraagje
« Reactie #6 Gepost op: 10 april 2011, 22:17:41 »
Dizzl,

De reden is dat ik met 2 versies van een form werk. 1 versie om nieuwe ticketten te voorzien,
en een andere versie met een tickettenoverzicht.
De code gebruik ik voor de 2 versies.
Dus in het ene form
 (DoCmd.OpenForm "frmTicket", acNormal, , , acFormAdd, acDialog)

Kan het formulier geopend worden en zou de code moeten zijn:
klan = Forms!FrmTicket!Klantnummer

In het andere form kan hetzelfde formulier geopend worden
(DoCmd.OpenForm "frmTicket2", acNormal, , , acFormEdit, acDialog)
 maar zou de
code
    klan = Forms!FrmTicket2!Klantnummer moeten zijn.
De opbouw van de db is programmatisch niet perfect, maar ik zit er
nu wel mee en vroeg me af of het in de code doenbaar is deze keuze
in te bouwen afhankelijk van het geopende dossier.

Met behulp van de antwoorden in dit topic lukte het me:
If Application.SysCmd(acSysCmdGetObjectState, acForm, Ticket2) = acObjStateOpen Then

klan = Forms!FrmTicket2!Klantnummer
If Application.SysCmd(acSysCmdGetObjectState, acForm, Ticket) = acObjStateOpen Then
 klan = Forms!FrmTicket!Klantnummer
End If
End If
Misschien allemaal niet zo netjes, maar 't werkt wel.

Indien andere benaderingen mogelijk wil ik ze wel uitproberen.
Bedankt! ;)
M.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

 


www.combell.com