standaard waarde in tabel m.b.v. combobox

Status
Niet open voor verdere reacties.
Ik heb er even naar gekeken. Je zou van het tekstveld GTIN een Keuzelijst met invoervak moeten maken die je dan koppelt (bijvoorbeeld) aan deze bron:
PHP:
SELECT [GTIN product], Productomschrijving, [Productcode fabrikant], Fabrikaat, [GLN fabrikant] FROM Tab_Product;
Zodra je dan een GTIN code scant/invoert kun je velden uit de keuzelijst opvragen in andere tekstvakken. Op deze manier: =[cboGTIN].[Column](1). Deze formule is dan de nieuwe Besturingselementbron van het op te vragen tekstveld.
 
Dit werkt op zich goed; zij het niet dat elke keer als ik Frm_GeboekteMaterialen open, er steeds weer een nieuwe lege regel bij komt.
Dat zit waarschijnlijk in onderstaande code opgesloten.
Code:
Private Sub Form_Load()
Dim arr As Variant
    With Me
        If Not .OpenArgs = "" Then
            arr = Split(.OpenArgs, "|")
            .txtInlognaam.Value = arr(0)
            .txtLeverancier.Value = arr(1)
            .TxtProjectnummer.Value = arr(2)
                        .Filter = "[Id_Personeel] = " & Me.txtInlognaam.Value _
                & " AND [Id_Leverancier] = " & Me.txtLeverancier.Value _
                & " AND [Id_Projectnummer] = " & Me.TxtProjectnummer.Value
            .FilterOn = True
        End If
    End With
End Sub
 
De code triggert alleen een nieuw record als er data is in OpenArgs. Als het formulier in Toevoegmodus wordt geopend, zit je sowieso in een nieuw (leeg) record. Wil je dat niet, dan moet je de code dus anders triggeren.
 
Ik kom er niet meer uit.
Zojuist geboekte artikelen vallen na heropenen weer uit de lijst.
Voor mij niet meer te volgen.:(:(:(
 
Ik heb gemerkt dat na openen van het formulier en scannen van het eerste artikel de waarden uit de OpenArgs weer zijn verdwenen. OpenArgs is alleen gevuld op het moment van laden van het formulier. Daarna vallen ze weer weg en wordt de tabel met verkeerde waarden gevuld. Wat moet er gebeuren om OpenArgs gevuld te houden met de gekozen waarden totdat ik het formulier weer sluit? Of overschrijf ik ze zonder dat ik het zelf door heb?

Code:
Private Sub CboPersoneel_Click()
    Me.CboPersoneel.DefaultValue = Me.CboPersoneel.Value
       End Sub

Private Sub CboLeverancier_Click()
    Me.CboLeverancier.DefaultValue = Me.CboLeverancier.Value
       End Sub

Private Sub CboProjectnummer_Click()
    Me.cboProjectnummer.DefaultValue = Me.cboProjectnummer.Value
     End Sub

Private Sub Knop_Boeken_Click()
    If Me.CboLeverancier & "" = "" Or Me.CboPersoneel & "" = "" Or Me.cboProjectnummer & "" = "" Then
        Exit Sub
    Else
        DoCmd.OpenForm "Frm_GeboekteMaterialen", DataMode:=acFormAdd, WindowMode:=acDialog, OpenArgs:=Me.CboPersoneel & "|" & Me.CboLeverancier & "|" & Me.cboProjectnummer
    End If
End Sub

Code:
Option Compare Database

Private Sub Cbo_GTIN_Change()
DoCmd.GoToRecord , , acNext
End Sub

Private Sub Form_Load()
Dim arr As Variant
        If Not Me.OpenArgs = "" Then
            arr = Split(Me.OpenArgs, "|")
            Me.txtInlognaam.Value = arr(0)
            Me.txtLeverancier.Value = arr(1)
            Me.TxtProjectnummer.Value = arr(2)
                Me.Filter = "[Id_Personeel] = " & Me.txtInlognaam.Value _
                    & " AND [Id_Leverancier] = " & Me.txtLeverancier.Value _
                    & " AND [Id_Projectnummer] = " & Me.TxtProjectnummer.Value _

        End If
        DoCmd.GoToRecord , , acNewRec
End Sub
 
Steeds minder; als een formulier geopend is en blijft, wordt de OpenArgs nooit leeggemaakt. Ik heb dat althans niet eerder meegemaakt. Dus ik vermoed dat er ergens toch wat verkeerd gaat en dat je formulieren opent en weer sluit, waardoor dus de OpenArgs leeg wordt gemaakt.
 
Ik snap de rol van het filter in je code niet helemaal, vrees ik (volgens mij niet nodig namelijk) maar je 'probleem' ligt er niet zozeer in dat je OpenArgs leeg wordt gemaakt (dat is niet zo), maar dat die maar éénmaal (bij openen) wordt uitgelezen. Bij het aanmaken van een nieuw record gebeurt dat niet, en heb je dus ook de waarden niet. Dat kun je op twee manieren oplossen: door een extra gebeurtenis, of door aanvullende acties. De laatste variant zet de defaultwaarden op de velden, zodat je bij een nieuw record automatisch de juiste waarden krijgt.
Code:
Private Sub Form_Load()
Dim arr As Variant
    If Not Me.OpenArgs = "" Then
        arr = Split(Me.OpenArgs, "|")
        With Me.txtInlognaam
            .Value = arr(0)
            .DefaultValue = .Value
        End With
        With Me.txtLeverancier
            .Value = arr(1)
            .DefaultValue = .Value
        End With
        With Me.TxtProjectnummer
            .Value = arr(2)
            .DefaultValue = .Value
        End With
    End If
End Sub

Deze Form_Current gebruikt de OpenArgs bij het bladeren (dus ook een nieuw record). En dan worden de velden dus opnieuw gevuld. Beetje riskant zo, dus je moet een check inbouwen of je in een nieuw record staat.
Code:
Private Sub Form_Current()
Dim arr As Variant
    If Me.NewRecord Then
        If Not Me.OpenArgs = "" Then
            arr = Split(Me.OpenArgs, "|")
            Me.txtInlognaam.Value = arr(0)
            Me.txtLeverancier.Value = arr(1)
            Me.TxtProjectnummer.Value = arr(2)
        End If
    End If
End Sub
 
Het lijkt goed te werken met het eerste deel.
Het tweede deel heb ik niet gebruikt, ik zie niet direct waar dit voor is.
We gaan het eerst maar eens testen. Bedankt!
:thumb::thumb:
 
De tweede code is een variant voor als je de eerste niet wilt gebruiken. In beginsel zou het resultaat hetzelfde moeten zijn. Zie het als een andere weg naar Rotterdam :).
 
toch nog een probleem; als ik de scanner gebruik wordt de streepjescode niet in combobox ingelezen maar het bovenste record uit de keuzelijst.
Ik heb beide varianten van 18 April geprobeerd; de bovenste versie werkt 1 record goed daarna gaat het fout. De tweede variant geeft direct een fout record in de combobox.

Wie heeft er nog een suggestie:eek:
 
Laatst bewerkt:
Het is nogal lastig omdat ik de situatie niet kan naspelen. Wat ik vermoed, is dat de scanner de status van het formulier niet verandert. De keuzelijst wordt dus niet op de juiste manier getriggerd als je een nieuwe waarde scant. Waardoor je dus de verkeerde waarde in de keuzelijst ziet.
 
Ik begrijp dat het op afstand niet meevalt. Ik probeer nog wel wat. Bedankt voor je hulp zover.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan