veld waarde wordt verwijdert bij nieuw record.

Status
Niet open voor verdere reacties.

dralex

Gebruiker
Lid geworden
21 mrt 2011
Berichten
154
ik heb in mijn formulier draaiboek een subformulier f_koppeltabel_basis-NF. in de subformulier heb ik de volgende velden:
- Basis_info_test_ID
- NF_ID
- Type Req
- Volg nr

Basis_info_test_ID neemt de id van hoofdformulier over
Na selectie in "Type Req" kan een waarde gekozen uit de lijst in "Volg nr"
NF_ID toont het id van "volg nr" uit tabel.

Dit werkt maar als ik dan in mijn subformulier naar de volgende regel ga dan verwijdert hij de waarde van veld "volg nr" en dit is niet de bedoeling

Wie weet raad
Bekijk bijlage 132031
Bekijk bijlage 132029
Bekijk bijlage 132027
 
Je hebt een aantal Requery's op het veld [volg nr] gezet (Me.Volg_nr.Requery) en omdat er een query als bron op staat, poetst hij de lijst schoon. Vrij logisch :) Haal ze weg, en hij doet het.
 
soms is het ook zo simple.
Echter volg_nr is afhankelijk van invoer veld Type Req. Als ik in de volgende regel een ander Type Req waarde geef dan toont hij in veld volg_nr de resultaaten van de vorige.
hoe los ik dit dan op.
 
Ik maak zelf mijn afhankelijke keuzelijsten via VBA, waarbij ik de keuzelijsten (behalve de eerste uiteraard) geen Rijbron meegeef, maar die genereer op basis van de keuze die is gemaakt in de actieve lijst. De sql wordt dan opgebouwd bij de gebeurtenis <Na bijwerken> van een lijst. Misschien moet je het eens op die manier proberen.
 
heb je misschien een voorbeeld heb niet echt een goed beeld hoe je het bedoelt.
 
zijn er nog andere oplossingen??

kom er niet echt uit met sql

Private Sub Type_Req_AfterUpdate()

strSQL = "Select Type_Req_ID, Type_Req From Type Req WHERE Type_Req_ID= " & Me.Type_Req
strSQL = "select Type Req.Type_Req_ID, Type Req.Type_Req Count (subcat.Type_Req_ID AS AantalSub " _
& "FROM Type Req " _
& "LEFT JOIN Type Req AS SubCat ON Type Req.Type_Req_ID = SubCat.Type_Req_ID " _
& "WHERE (Type Req.Type_Req_ID = " & Me.Type_Req & ") " _
& "GROUP BY Type Req.Type_Req_ID, Type Req.Type_Req " _
& "ORDER BY Type Req.Type_Req;"

Me.Volg_nr.RowSource = strSQL
 
Spaties in een sql statement.... big nono! Zou je eigenlijk moeten vermijden... Als er een spatie in een sql zit, moet je er rechte haken omheen zetten, zoals hieronder.

Code:
strSQL = "SELECT [Type Req].Type_Req_ID, [Type Req].Type_Req Count (subcat.Type_Req_ID AS AantalSub " _
& "FROM [Type Req] " _
& "LEFT JOIN [Type Req] AS SubCat ON [Type Req].Type_Req_ID = SubCat.Type_Req_ID " _
& "WHERE ([Type Req].Type_Req_ID = " & Me.Type_Req & ") " _
& "GROUP BY [Type Req].Type_Req_ID, Type Req.Type_Req " _
& "ORDER BY [Type Req].Type_Req;"
 
werkt helaas nog steeds niet ik denk dat de sql nog iets te ingewikkeld is voor mij.
 
In je vorige post heb je twee SELECT regels gepost; is dat als voorbeeld, of gebruik je ze in één routine? Ik heb namelijk alleen de tweede verbeterd, en je hoort er ook maar één nodig te hebben per lijst.
Wat ik zelf doe om te controleren of de sql klopt is het volgende:

Code:
strSQL = "SELECT [Type Req].Type_Req_ID, [Type Req].Type_Req Count (subcat.Type_Req_ID AS AantalSub  FROM [Type Req] " _
     & "LEFT JOIN [Type Req] AS SubCat ON [Type Req].Type_Req_ID = SubCat.Type_Req_ID " _
     & "WHERE ([Type Req].Type_Req_ID = " & Me.Type_Req & ") " _
     & "GROUP BY [Type Req].Type_Req_ID, Type Req.Type_Req " _
     & "ORDER BY [Type Req].Type_Req;"
dim tmp
tmp=Inputbox("","",strSQL)

Vervolgens kopieer je de tekst uit de Inputbox, maak je een nieuwe query zonder een tabel te selecteren, kies je de weergave SQL en plak je de code die je net hebt gekopieerd. Vervolgens voer je de query uit.
Zit er een fout in, dan zie je vrij snel waar, en is het zaak om de VBA code op dat punt aan te passen. Het kan bijvoorbeeld een spatie zijn die niet in de vba staat, waardoor de tabelnaam tegen het woord FROM aan staat, waardoor de sqlcode het woord FROM niet herkent.
 
bedankt heb de volgende sql code gekregen:

SELECT [Type Req].Type_Req_ID, [Type Req].Type_Req ( (subcat.Type_Req_ID AS AantalSub FROM [Type Req] LEFT JOIN [Type Req] AS SubCat ON [Type Req].Type_Req_ID = SubCat.Type_Req_ID WHERE ([Type Req].Type_Req_ID = ) GROUP BY [Type Req].Type_Req_ID, Type Req.Type_Req ORDER BY [Type Req].Type_Req;

maar krijg een syntax error (missing operator) in query expression. maar zie maar niet wat er fout aan is
 
Ik zie een hoop problemen met de query; om te beginnen: [Type Req].Type_Req ( (subcat.Type_Req_ID AS bevat twee ((. Nergens worden ze gesloten; dus er ontbreken twee )).
Verder snap ik dit ook niet: WHERE ([Type Req].Type_Req_ID = ) Je maakt hier een vergelijking met maar één operator. Waar moet [Type Req].Type_Req_ID gelijk aan zijn?
 
ik ga kijken of ik het op een andere manier kan doen ben hier niet echt thuis in.
 
Leg eerst eens uit wat je eigenlijk wilt; dan kijk ik wel even of ik het in jouw voorbeeldje kan implementeren.
 
Ik wil in een formulier mijn koppeltabel vullen.
aangezien een record meerdere id's van tabel nf kan bevatten heb ik een koppeltabel gemaakt waar de gegevens in opgeslagen word.

Nu wil ik in mijn formulier (is een gegevensblad) de waardes invullen.
en als ik een waarde selecteer van "type req" dat er in "volg nr" een lijst met resultaten met alle records die de opgeven waarde van "type req" heeft

Bijv. als ik "need" heb gekozen in "type req" dat ik alleen in "volg nr" N.04.06, N04.8 enz kan selecteren.
en als ik bijv. "features" heb gekozen dat ik alleen in "volg nr" F.011.15, F.011.16 enz kan selecteren.

Maar als ik voor de volgende regel\record van de gegevensblad ga dat ik dan weer een andere "type req" kan kiezen en "volg nr" zonder dat mijn vorige record weggegooid wordt
 
Dat snp ik; wat ik niet snap, is waarom je van het veld [Volg nr] in de tabe [N&F] geen sleutelveld hebt gemaakt, maar een extra sleutel met een Autonummer hebt toegevoegd. Terwijl je [Volg nr] wel hebt ingesteld als uniek veld. Je maakt het jezelf wat makkelijker door de juiste sleutels te gebruiken. En hoe bepaal je de volgnummers eigenlijk? Ik zie dat de beginletter overeenkomt me het [type req], maar verder zie ik er geen logica in terug. Ik zou zelf dus van dat veld een sleutelveld maken, en een functie die (ik neem aan op basis van de types) volgende volgnummers genereert.
Wat je eigenlijk dus wilt, is dat je bij het kiezen van een [type req] de lijst [volg nr] filtert op basis van het [type req], en dat je de reeds gebruikte volgnummers niet meer kunt kiezen. Althans: dat lijkt mij de logische stap.
 
Ik heb je voorbeeldje wel werkend gekregen geloof ik.... Kijk maar eens of dit de bedoeling is.
 

Bijlagen

Wat je eigenlijk dus wilt, is dat je bij het kiezen van een [type req] de lijst [volg nr] filtert op basis van het [type req], en dat je de reeds gebruikte volgnummers niet meer kunt kiezen. Althans: dat lijkt mij de logische stap.

Het werkt perfect echter moet ik als ik een ander basis_test_id heb geslecteerd een de volledige lijst aanwezig zijn.

Tevens heb ik nu een NF_Volgnr en een Volg nr kan jij mij uitleggen wat de 2e doet/werkt?
 
Dat kan wel kloppen, want de lijst die getoond wordt in de keuzelijst bij het maken van een nieuw record is nog gebaseerd op de query van het vorige record. Je zult de lijst dus opnieuw moeten initialiseren bij een nieuw record. En dat kan pas op het moment dat er iets is aangemaakt, zodat je een [Basis_info_test_Id] waarde hebt, want de keuzelijst gebruikt die waarde om de lijst in te stellen en bij te werken. Het veld [Volgnr] heb je zelf ingebracht; ik heb hooguit wat naampjes veranderd om er wat meer logica in aan te brengen :)
 
dan kan die weg :d




Maar hartelijke dank met mij weer op de juiste pad te brengen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan