Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   log-Απλή παρακολούθηση Εφαρμογής Access (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5607-log-apli-parakoloithisi-efarmogis-access.html)

gianniskar 30-07-20 10:32

log-Απλή παρακολούθηση Εφαρμογής Access
 
Καλημερα.Τασος οπως εχεις αναφερει εδω https://www.ms-office.gr/forum/acces...is-access.html τα εχω κανει οπως ειπες ,απλα μου βγαζει σφαλμα.Οι πινακες μου ειναι σε sql server.

Runtime error "3027".Δεν ειναι δυνατη η ενημερωση .Η βαση δεδομενων η το αντικειμενο ειναι μονο για αναγνωση

Function LogAction(obj As Object, Optional LastID&)
With CurrentDb.OpenRecordset("tblLog", 2, dbSeeChanges)
If LastID Then
LastID = IIf(obj.Tag <> vbNullString, obj.Tag, -1)
obj.Tag = vbNullString
.MoveFirst
.FindFirst "LogID = " & LastID
If Not .NoMatch Then
.Edit
.Fields("CloseDateTime") = Now
End If
Else
.AddNew <-- εδω μου βγαζει το error
LastID = .Fields("LogID")
obj.Tag = LastID
.Fields("OpenDateTime") = Now
.Fields("DocName") = obj.name
.Fields("ComputerName") = Environ("COMPUTERNAME")
.Fields("WinUser") = Environ("USERNAME")
.Fields("AppUser") = App_User
End If
.Update
.Close
End With
End Function

pctechdr 30-07-20 13:33

Κοιτα αν εχεις στον πινακα tbllog καταρχην πρωτευων κλειδι

Tasos 30-07-20 17:25

Καλησπέρα σε όλους!

Γιάννη, νομίζω ότι υπάρχει κάποιο πρόβλημα στον πίνακα σου (tblLog). Μάλλον όπως λέει και ο Χρήστος έχει να κάνει με το πρωτεύον κλειδί.

Μπορείς να μας δώσεις τον κώδικα SQL (κώδικα δημιουργίας με SQL Script) του πίνακα για να δούμε τι μπορεί να συμβαίνει;

Τάσος

gianniskar 30-07-20 20:10

Καλησπερα παιδια.Αθριο που θα ειμαι στο pc θα το κοιταξω.Το script να το δημιουργησω ηγθατι τιυς πίνακες τους μετεφερα απο την access στον sql .Δεν τους εφτιαξα απευθειας στιν sql.Επισης προτου μεταφερω τον πινακα στον server δούλευε κανονικα τοπικα

pctechdr 31-07-20 00:02

Άρα είναι σίγουρα πρόβλημα απο το πρωτεύον κλειδί.

gianniskar 31-07-20 10:17

Καλημερα.Πρωτευον κλειδι εχει ο πινακας tblLog.Τωρα βγαζει το σφαλμα "invalid use off null" 94 στο σημειο


Function LogAction(obj As Object, Optional LastID&)
With CurrentDb.OpenRecordset("tblLog", 2, dbSeeChanges)
If LastID Then
LastID = IIf(obj.Tag <> vbNullString, obj.Tag, -1)
obj.Tag = vbNullString
.MoveFirst
.FindFirst "LogID = " & LastID
If Not .NoMatch Then
.Edit
.Fields("CloseDateTime") = Now
End If
Else
.AddNew
LastID = .Fields("LogID")
obj.Tag = LastID
.Fields("OpenDateTime") = Now
.Fields("DocName") = obj.name
.Fields("ComputerName") = Environ("COMPUTERNAME")
.Fields("WinUser") = Environ("USERNAME")
.Fields("AppUser") = App_User
End If
.Update
.Close
End With
End Function



------------------

Φενεται να δουλευει τωρα με κατι αλλαγες που εκανα.Απλα επειδη της φορμες τις εχω με ελληνικους χαρακτηρες στο πινακα log μου βγαζει το ονομα τους ετσι "???s?p???_St???e?a".Αυτο μπορει να γινει ετσι ωστε να φενεται κανονικα?




Function LogAction(obj As Object, Optional LastID&)
With CurrentDb.OpenRecordset("SELECT * From tblLog", dbOpenDynaset, dbSeeChanges)
If LastID Then
LastID = IIf(obj.Tag <> vbNullString, obj.Tag, -1)
obj.Tag = vbNullString
.MoveFirst
.FindFirst "LogID = " & LastID
If Not .NoMatch Then
.Edit
.Fields("CloseDateTime") = Now
End If
Else
.AddNew
If Not IsNull(.Fields(0)) Then
LastID = .Fields("LogID")
End If

obj.Tag = LastID
.Fields("OpenDateTime") = Now
.Fields("DocName") = obj.name
.Fields("ComputerName") = Environ("COMPUTERNAME")
.Fields("WinUser") = Environ("USERNAME")
.Fields("AppUser") = Application.CurrentUser
.Update

End If
.Close


End With
End Function

Tasos 31-07-20 13:30

Αγαπητέ Γιάννη Σιγουρέψου ότι μπορείς να ανοίξεις και να δημιουργήσεις νέα εγγραφή στον συνδεμένο πίνακα "tböLogs".

Αν δεν μπορείς να προσθέσεις εγγραφή τότε θα πρέπει να τροποποιήσεις τον πίνακα σου στον Server σύμφωνα με το παρακάτω ερώτημα SQL :
Κώδικας:

USE [ms-office.gr] /*Προσάρμοσε το όνομα της βάσης*/
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [user].[tblLog](
        [logID] [int] IDENTITY(1,1) NOT NULL,
        [CloseDateTime] [datetime2](0) NULL,
        [OpenDateTime] [datetime2](0) NULL,
        [DocName] [nvarchar](50) NULL,
        [ComputerName] [nvarchar](50) NULL,
        [WinUser] [nvarchar](50) NULL,
        [AppUser] [nvarchar](50) NULL,
 CONSTRAINT [tblLog$PrimaryKey] PRIMARY KEY CLUSTERED
(
        [logID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Κατόπιν δοκίμασε τον παρακάτω κώδικα:

Κώδικας:

Function LogAction(obj As Object, Optional LastID As Long)
    With CurrentDb.OpenRecordset("tblLog", dbOpenDynaset, dbSeeChanges)
        If LastID Then
            LastID = IIf(obj.Tag <> vbNullString, obj.Tag, -1)
            obj.Tag = vbNullString
            .MoveFirst
            .FindFirst "LogID = " & LastID
            If Not .NoMatch Then
                .Edit
                .Fields("CloseDateTime") = Format(Now, "yyyy-MM-dd hh:mm:ss")
            End If
        Else
            .AddNew
            LastID = Nz(.Fields("LogID"), 0)
            obj.Tag = LastID
            .Fields("OpenDateTime") = Format(Now, "yyyy-MM-dd hh:mm:ss")
            .Fields("DocName") = obj.Name
            .Fields("ComputerName") = Environ("COMPUTERNAME")
            .Fields("WinUser") = Environ("USERNAME")
            .Fields("AppUser") = App_User
        End If
        .Update
        .Close
    End With
End Function

Καλή συνέχεια!

Τάσος

gianniskar 31-07-20 13:47

οκ Τασο θα το κοιταξω απο δευτερα.Σε ευχαριστω πολυ για τον χρονο σου.Καλη συνεχεια

gianniskar 03-08-20 07:29

Καλημερα.Εκανα οσα μου εγραψες.Αφου βαλω τον user κανω login στην access μου βγαζει τωρα "error 3020,Update η CancelUpdate χωρις Editnew η Edit.

Aλλαξα την γραμμη

.Fields("WinUser") = Environ("USERNAME")
.Fields("AppUser") = "Tasos"
End If
.Update
.Close

End With

βαζωντας τα μεσα στην if και δεν μου βγαζει error.Απλα στο tblog δεν καταχωρουνται τιμες στο πεδιο "CloseDateTime"

.Fields("WinUser") = Environ("USERNAME")
.Fields("AppUser") = "Tasos"

.Update
.Close
End If

End With

gianniskar 10-08-20 07:31

Καλημερα.Τασο μηπως γνωριζεις για ποιο λογο δεν παιρνει τιμες το πεδιο "CloseDateTime"?


Η ώρα είναι 04:51.

Ms-Office.gr - ©2000 - 2020, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2