Gegevens bijplaatsen in tabel met criterium

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Van op een ongebonden formulier werden er een aantal gegevens in tabellen weggeschreven met onderstaande code:

Code:
                Select Case .ControlType
                    Case acComboBox
                        If .Value <> "" Then
                            sTabel = .Tag
                            On Error Resume Next
                            With CurrentDb.OpenRecordset("GegevensIBD")
                                .AddNew
                                ![Unieke Code] = cmbCode
                                ![Diagnosedatum] = txtDiagnosedatum
                                ![Type IBD] = cmbIBD
                                .Update
                                .Close
                            End With
                        End If
                End Select

Nu zou ik echter graag hebben dat [diagnosedatum] en [Type IBD] worden weggeschreven in een andere tabel, namelijk GegevensPatienten.

Die tabel bevat al gegevens vanop een vorig formulier, onder andere de zo bekende sleutelwaarde [UniekeCode] en naam een voornaam van de pati�nt.

Ik weet wel dat ik hier dus zal moeten werken met iets zoals:

.AddNew en dit in combinatie met
WHERE Unieke Code = Me.cmbUniekeCode

maar ik krijg het zelf niet klaargespeeld...

iemand die me een handje kan helpen?
 
Uit je verhaal maak ik op dat het record al bestaat uit een vorig formulier. In welk geval je een .Edit moet gebruiken i.p.v. AddNew. Je OpenRecordset wordt dan inderdaad een query:
Code:
With CurrentDb.OpenRecordset("SELECT [Unieke code], [Type IBD] FROM [Andere tabel] WHERE [Unieke Code] = Me.cmbUniekeCode")
     If .RecordCount=1 Then
          .Edit
          ![Unieke Code] = cmbCode
          ![Type IBD] = cmbIBD
          .Update
     End If
     .Close
End With
 
Laatst bewerkt:
Als ik het dus goed begrijp moet ik de 2 velden oproepen uit de tabel die ik wil laten invullen. In mijn geval dus de diagnosedatum en het type IBD uit de tabel GegevensPatienten. Daar moet ik het record van hebben waarvan de unieke code overeenstemt met die code van mijn formulier (wat heel logisch is) dus bekom ik hetvolgende... (ik heb het al met en zonder de RecordCount gedaan)

Code:
With CurrentDb.OpenRecordset("Select [Diagnosedatum], [Type IBD] FROM [GegevensPatienten] WHERE [Unieke Code] = Me.cmbUniekeCode")
                                .Edit
                                ![Diagnosedatum] = Me.txtDiagnosedatum
                                ![Type IBD] = Me.cmbIBD
                                .Update
                                .Close
                            End With

Om de een of andere reden werkt het niet...

Nog iets wat ik over het hoofd zie?

ik zet hieronder nog eens de volledige code die schuil gaat achter de knop "verder" die ervoor zorgt dat de gegevens worden opgeslagen. Misschien mis ik verder op in de code nog iets, al hoewel ik denk dat het enkel maar om het bovenstaand stukje gaat:

Code:
Private Sub cmdVerder_Click()
Dim lResponse As Integer
Dim sUniekeCode As String

lResponse = MsgBox("Verder gaan?", vbYesNo, "Verder gaan")
If lResponse = vbYes Then

    If Nz(cmbCode, "") = "" Then
    MsgBox ("Vul de unieke code in aub")
    Exit Sub

    Else
    Dim sTabel As String
    Dim sComplicaties As String
    
        For Each ctl In Controls
            With ctl
                Select Case .ControlType
                    Case acCheckBox
                        If .Value = -1 Then
                            sComplicaties = Mid(.Name, 9, Len(.Name) - 8)
                            sTabel = .Tag
                            On Error Resume Next
                            With CurrentDb.OpenRecordset(sTabel)
                                .AddNew
                                ![Unieke Code] = cmbCode
                                ![Complicaties] = sComplicaties
                                ![Aandoeningen] = sComplicaties
                                ![Aantasting] = sComplicaties
                                .Update
                                .Close
                            End With
                        End If
                    Case acComboBox
                        If .Value <> "" Then
                            sTabel = .Tag
                            On Error Resume Next
                            With CurrentDb.OpenRecordset("Select [Diagnosedatum], [Type IBD] FROM [GegevensPatienten] WHERE [Unieke Code] = Me.cmbCode")
                                If .RecordCount = 1 Then
                                .Edit
                                ![Diagnosedatum] = Me.txtDiagnosedatum
                                ![Type IBD] = Me.cmbIBD
                                .Update
                                End If
                                .Close
                            End With
                        End If
                End Select
            End With
        Next ctl

        If Me.txtAantalcm <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke Code] = cmbCode
            ![Aantasting] = txtAantalcm & " cm"
            .Update
            .Close
        End With
        ElseIf Me.txtOngedefinieerd <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke Code] = cmbCode
            ![Aantasting] = txtOngedefinieerd
            .Update
            .Close
        End With
        End If
        
    End If
    
    lResponse = MsgBox("Verder gaan naar Invoeren behandeling?", vbYesNo, "Verder gaan")
        If lResponse = vbYes Then
            sUniekeCode = Me.cmbCode
            DoCmd.Close acForm, "F_InvoerenIBD"
            DoCmd.OpenForm "F_InvoerenBehandeling", , , , , , sUniekeCode
        Else
            DoCmd.Close acForm, "F_InvoerenIBD"
            DoCmd.OpenForm "F_Start"
        End If

Else
    Exit Sub
End If
End Sub
 
Jammer dat je de Recordcount hebt weggehaald, want daarmee check je of er een record gevonden is of niet. Dat het niet lukt ligt waarschijnlijk aan het sleutelveld, dat in een oudere db van je een tekstveld is. Als dat nog steeds het geval is, moet je de string aanpassen:
Code:
("Select [Diagnosedatum], [Type IBD] FROM [GegevensPatienten] WHERE [Unieke Code] ='" & Me.cmbUniekeCode & "'")
Ook de oude variant had een foutje:
Code:
("Select [Diagnosedatum], [Type IBD] FROM [GegevensPatienten] WHERE [Unieke Code] =" & Me.cmbUniekeCode)
 
Ik heb voor je eerste optie gekozen, en ik ben superblij om te mogen zeggen dat het gelukt is! Voorlopig toch :D

C ya at the next topic ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan