Avatar billede accessbruger1 Nybegynder
05. februar 2005 - 14:32 Der er 16 kommentarer og
2 løsninger

Sikre overensstemmelse mellem 2 poster

Opgaven lyder:
Der skal indtastes 2 ligelydende poster af 2 forskellige personer (A og B) for at sikre at indtastningen er korrekt.

De 2 ligelydende poster har et fælles IDnr. Der bliver ret mange felter pr post (100-150)

A og B må ikke kunne se hinandens indtastninger under selve indtastningen.

Den der sidst indtaster skal på en eller anden måde have at vide, at indtastningen ikke stemmer overens med den andens indtastning, eller supervisoren skal kunne se, at der ikke er overensstemmelse mellem de 2 poster.

Hvordan skrues det sammen?
Avatar billede terry Ekspert
05. februar 2005 - 14:41 #1
Is this supposed to happen while user number 2 is entering data so that it is also possible to see which field is incorrect?
Avatar billede terry Ekspert
05. februar 2005 - 14:48 #2
How are the two records entered? Here I am thinking about the user interface, are the two records under each other on the same form for example?
Avatar billede terry Ekspert
05. februar 2005 - 15:07 #3
If you want to know if the records are different AFTER you have finished enetering both records then an idea would to make a query where you GROUP on ALL fields

SELECT YourTable.ID, YourTable.f1, YourTable.f2, YourTable.f3
FROM YourTable
GROUP BY YourTable.ID, YourTable.f1, YourTable.f2, YourTable.f3

Then you can use (example)

If Dcount("ID", "YourQuery", "ID = 1") > 1 Then 'records are different
Avatar billede accessbruger1 Nybegynder
05. februar 2005 - 15:45 #4
terry
Jeg forestiller mig:

-at A og B indtaster på samme formular eller hver sin formular på hver sin PC'er.
-at man øjeblikkelig kan se hvilken felt der viser en forskel fra samme felt i den anden post (dette gælder kun for den der sidst indtaster).Feltet kunne måske ændre farve eller noget andet?
-posterne kunne godt være på den samme formular, men grundreglen skal være den, at den andens indtastninger ikke kan ses før posten er indtastet (altså man må ikke kunne komme til at indtaste den andens indtastninger).
Avatar billede terry Ekspert
05. februar 2005 - 15:49 #5
Lets imagine that user 1 has entered data in a form on their won PC. This record has an ID (primary key). Now user 2 has to enter data into a form on their PC. Somehow we need to be able to select which ID we wan to enter control data for, any ideas?
Avatar billede accessbruger1 Nybegynder
05. februar 2005 - 16:01 #6
terry
De 2 ligelydende poster har samme ID.
I hver af de 2 poster vil man skulle se hvem der har indtastet posten.
De 2 poster skal ligge i samme tabel på en server.
Indtastningen vil sandsynligvis ske fra 2 forskellige PC'er.
Avatar billede terry Ekspert
05. februar 2005 - 16:04 #7
But record two doesnt exist until user 2 starts entering the record, or have I misunderstood something?
User 2 needs to know which ID he/she is to enter data for so that the two records can be compared
Avatar billede terry Ekspert
05. februar 2005 - 16:14 #8
You can play around with this idea.
For each fields (NOT ID) BEFORE UPDATE event you call a function which validates the value


'This is only for one field (f1) you need it for them all
Private Sub f1_BeforeUpdate(Cancel As Integer)

    If Not ValidEntry Then
      Cancel = True
      msgbox "Invalid"
    end if
End Sub


Function ValidEntry() As Boolean

    ValidEntry = True
    If DLookup(Me.ActiveControl.Name, "tblTst2", "ID = " & Me.ID) <> Me.ActiveControl Then
   
        MsgBox "Data incorrect"
       
       
        ValidEntry = False
       
    End If

End Function


I'm off out for a while, will look again later
Avatar billede terry Ekspert
05. februar 2005 - 16:16 #9
you dont need this line after cancel = true

msgbox "Invalid"
Avatar billede accessbruger1 Nybegynder
05. februar 2005 - 16:41 #10
terry
Post nr 2 eksisterer ikke før vedkommende starter indtastning af posten.

Id fremgår af journalen der skal indtastes. Journalen cirkulerer fra person A til person B.
05. februar 2005 - 16:49 #11
Jeg ville bruge denne funktion til at sammenligne de 2 tabeller. Den sammeligner samtlige felter - felt for felt:

Public Function RecordCompare(ID As Long) As Boolean
    Dim rs1 As New ADODB.Recordset
    Dim rs2 As New ADODB.Recordset
    Dim cn As ADODB.Connection
    Dim n As Integer
    Set cn = CurrentProject.Connection
    rs1.Open "Select * From Tabel1 Where Medlemsnr = " & ID, cn, adOpenStatic
    rs2.Open "Select * From tabel2 Where Medlemsnr = " & ID, cn, adOpenStatic
    For n = 0 To rs1.Fields.Count - 1
        If rs1(n) <> rs2(n) Then
            RecordCompare = True
            Exit Function
        End If
    Next n
    rs1.Close
    rs2.Close
    Set rs1 = Nothing
    Set rs2 = Nothing
    cn.Close
    Set cn = Nothing
End Function

Herefter lægges denne kode på et strategisk sted:
If RecordCompare(Me!ID) = True then msgbox "Der er fejl!"
Avatar billede terry Ekspert
05. februar 2005 - 18:14 #12
If you have a function similar to this, and there is a field on the form where the ID is entered then this should work.

In ALL fields on the form appart from ID place this
=ValidEntry()


Function ValidEntry()

    If DLookup(Me.ActiveControl.Name, "tblTst2", "ID = " & Me.ID) <> Me.ActiveControl Then
   
        MsgBox "Data incorrect"
        DoCmd.CancelEvent
        Me.ActiveControl.SetFocus
       
    End If

End Function
Avatar billede accessbruger1 Nybegynder
05. februar 2005 - 19:17 #13
terry/thomasjepsen
Nu har jeg fået noget at arbejde med.

Der vil gå en rum tid inden jeg får ovenstående afprøvet, så I må have tålmodighed med mig. Db'en er ikke lavet endnu.

Jeg kommer tilbage.
Avatar billede terry Ekspert
07. februar 2005 - 10:43 #14
The solution I have given needs the second user to enter the same ID as the first. Then all other fields are checked as they get entered.
Avatar billede terry Ekspert
14. februar 2005 - 18:15 #15
status?
Avatar billede accessbruger1 Nybegynder
14. februar 2005 - 22:30 #16
terry
Du får dine points denne gang, selv om jeg ikke er færdig med at afprøve dine forslag. Jeg kommer nok tilbage senere med nogle tillægsspørgsmål.
14. februar 2005 - 22:33 #17
Accessbruger1->prøvede du nogensinde mit forslag?
Avatar billede terry Ekspert
15. februar 2005 - 08:53 #18
If you still need help on this question then place a comment here, or you are also welcome to contact me at eksperten@NOSPAMsanthell.dk
remove NOSPAM

og tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester