gegevens worden niet weggeschreven

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
ik heb volgende code:

Code:
    Dim strSQL As String
    Dim itm As Variant
    Dim sql As String
    Dim toer As Integer
    Dim TB As Recordset
    Set db = CurrentDb()
    toer = 1
    
    DoCmd.RunSQL "DELETE correspondentie.* FROM correspondentie;"
    Set db = CurrentDb()
    Set TB = db.OpenRecordset("correspondentie", dbOpenDynaset)
    TB.AddNew
          For Each itm In Me.Patholgieën.ItemsSelected
            If toer = 1 Then
                strSQL = Me.Patholgieën.Column(5) & " van " & Me.Patholgieën.Column(3) & " op datum: " & Me.Patholgieën.Column(2)
                Brief_patho1 = strSQL
                toer = toer + 1
            Else
                strSQL = strSQL & vbCrLf & Me.Patholgieën.Column(5) & " van " & Me.Patholgieën.Column(3) & " op datum: " & Me.Patholgieën.Column(2)
                Brief_patho2 = strSQL
            End If

          Next itm
    TB.Update

Brief_patho1 en Brief_patho2 zijn beide velden in de tabel "correspondentie"
de waarden strSQL zijn niet leeg en toch staan ze niet in het corresponderende veld

Wat is hier fout?

Merci
JP
 
Geen idee wat je precies met deze (beroerde) code probeert te doen.
Je schrijft in ieder geval niets weg naar een tabel.

Tardis
 
Als je met Recordsets werkt, moet je de Recordset eerst openen (check), dan een nieuw record aanmaken (check), dan de velden vullen (check mislukt), vervolgens de nieuwe record opslaan (check mislukt) en dan eventueel, als je een loop gebruikt, het proces herhalen. Jij gebruikt (wederom) de .Update op de verkeerde plek, buiten de loop. Daarnaast gebruik je een variabele (strSQL) die m.i. nergens voor nodig is. Tenzij je in het veld [Brief_patho] de SQL tekst wilt opslaan. Maar dat doe je dus verkeerd.
Code:
    Set TB = db.OpenRecordset("correspondentie", dbOpenDynaset)
    TB.AddNew
          For Each itm In Me.Patholgieën.ItemsSelected
            If toer = 1 Then
                !Brief_patho1 = strSQL
                toer = toer + 1
            Else
                !Brief_patho2 = strSQL
            End If
            TB.Update
          Next itm
    TB.Close
 
Ik dacht dat je de update pas moest doen als je alle velden aangepast hebt, en niet veld per veld
 
Niet om het een of ander, maar je hebt een For .. Next gemaakt die door de geselecteerde items heenloopt. Die lus loopt dus elke keer (zeg dat je er 5 aanvinkt, dan loopt hij 5 keer) langs hetzelfde veld, en overschrijft dus steeds de waarde van dat veld, in mijn voorbeeldje: 5 keer. Je hebt gelijk dat updaten dan geen enkele zin heeft. Sterker nog: als je binnen één nieuw record hetzelfde veld 5 keer vult met steeds een andere waarde, dan kun je dat veld beter gelijk met de laatste gekozen waarde vullen, want de (in mijn ogen) 4 keer eerder ingevulde waarden zijn dan toch weg. Vandaar dat ik dacht dat je (weer dat voorbeeld) 5 nieuwe records wilde hebben op basis van de 5 keuzes. Je zult wat beter aan moeten geven wat nu specifiek de bedoeling is, want veel meer chocola kan ik er nu niet van maken.
 
Ah nee want de eerste “toer” neem ik brief_patho1 en de tweede toer brief_parho2 en ik kies er nooit meer dan 2 dus... je uitleg klopt niet 100%..... denk in..
 
Nou, aan mijn uitleg mankeerde niet zoveel. Wel was die van jou weer een tikkie te kort :). Het is voor jou veel duidelijker wat je wilt, dan voor ons. Dus wij kunnen pas echt wat zinnigs zeggen als we weten wat de bedoeling is. Ik constateer overigens wel dat je bij Patho2 de eerste regel ook herhaalt, maar dat zal wel de bedoeling zijn dan.
Code:
Dim ctl As Control
Dim itm As Variant
Dim strSQL As String

    Set tb = CurrentDb.OpenRecordset("Correspondentie", dbOpenDynaset)
    tb.AddNew
    Set ctl = Me.Patholgieën
    For Each itm In ctl.ItemsSelected
        If strSQL = "" Then
            strSQL = ctl.Column(5, itm) & " van " & ctl.Column(3, itm) & " op datum: " & ctl.Column(2, itm)
            tb!Brief_patho1 = strSQL
        Else
            strSQL = strSQL & vbCrLf & ctl.Column(5, itm) & " van " & ctl.Column(3, itm) & " op datum: " & ctl.Column(2, itm)
            tb!Brief_patho2 = strSQL
        End If
    Next itm
    tb.Update
 
OK, probleem (voorlopig) opgelost...
Bedankt voor je hulp Michel...
met "Je schrijft in ieder geval niets weg naar een tabel" ben ik wel geen meter vooruit, want dat had ik (deze keer) zelf al bedacht :confused:
 
Laatst bewerkt:
met "Je schrijft in ieder geval niets weg naar een tabel" ben ik wel geen meter vooruit, want dat had ik (deze keer) zelf al bedacht :confused:
Er zijn een paar helpers actief die graag open deuren intrappen, en waarvan de antwoorden dus niet veel bijdragen aan een oplossing. Nou heb ik natuurlijk het voordeel dat ik de db wat beter ken, dus ik kan mij wat beter inleven in de situatie.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan