Skip to main content

AccessTr.neT


Log Kaydı Oluşturmak

Log Kaydı Oluşturmak

Çözüldü #1
iyi günler
farklı yetkilere sahip çok fazla kullanıcının olduğu bir programda yapılan işlemlerin 
5N1K formatinda kaydedilmesi için ne yapılabilir(Kim nerede nasıl niçin ne yapmış) mesela 
sekreter Ali 
veli isimli çalışanın 
özlük bilgileri formunda 
adres alanında 
14.03.2020 08:05:25 de
güncelleme yapmış
bunu profosyonel programlar log.txt dosyası şeklinde kaydediyorlar.
biz nasıl yapabiliriz. Txt dosyası yoksa oluşturacak varsa sonuna eklemeye devam edecek
örnek ekle diyeceksiniz belki ama zaten örnek ekleyecek kadar bilsem mesele kalmayacak
bununla ilgili daha önce paylaşım var mı diye baktım bulamadım ya yok yada ben aramasını bilemedim
şöyle bir şey paylaşılmış
CREATE TABLE [Audit Trail]
(
  id AUTONUMBER NOT NULL PRIMARY KEY,
  user CHAR(16) NOT NULL,
  timestamp DATETIME NOT NULL,
  action CHAR(254) NOT NULL,
  description CHAR(254),
  comment MEMO,
);
Public Sub log(ByVal action As String, _
              Optional ByVal description As Variant = Empty, _
              Optional ByVal memo As Variant = Empty)
  Dim q As String

  q = "INSERT INTO [Audit Trail] " & vbCrLf
  q = q & "  ([user], [timestamp], [action], [description], [memo]) " & vbCrLf
  q = q & "  VALUES('" & UserName() & "', " & vbCrLf
  q = q & "        #" & Now() & "#, " & vbCrLf
  q = q & "        '" & action & "', " & vbCrLf
  q = q & "        " & IIf(IsEmpty(description), "NULL", "'" & description & "'") & ", " & vbCrLf
  q = q & "        " & IIf(IsEmpty(memo), "NULL", "'" & memo & "'") & ")"

  Database.Execute(q)
End Sub

2.mesajda eklediğim aslında çok uygun
ben sqlite kullanıyorum veritabanında biriktirecek ama muhtemelen çok fazla şişmeye sebeb olur 
asıl sqlite dosyası yerine farklı bir sqlite dosyasına yazsa da olabilir onu da log.db diye oluştururuz
sizce log.txt mi daha çok yer kaplar yoksa 
log.db mi daha çok yer kaplar
Using a Recordset
Function WriteLog(strEvent As String, strProcess As String)
  Dim dbs As DAO.Database
  Dim rst As DAO.Recordset

  Set dbs = CurrentDb()
  Set rst = dbs.TableDefs("tblLog").OpenRecordset
  With rst
    .AddNew
    !LogEvent = strEvent
    !LogProcess = strProcess
    .Update
    .Close
  End With
  Set rst = Nothing
  Set dbs = Nothing
 
End Function

Using SQL
Function WriteLog(strEvent As String, strProcess As String)
  Dim sSQL As String

  sSQL = "INSERT INTO tblLog ( LogEvent, LogProcess ) " _
    & "VALUES ('" & strEvent & "', '" & strProcess & "')"

  DoCmd.SetWarnings False
  DoCmd.RunSQL sSQL
  DoCmd.SetWarnings True
 
End Function

bunu Excel için yapmışlar ama accesse uyarlanabilir belki
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile("c:\myLogFile.txt")

For Each i In MyArray
  xl.Workbooks.Open (i)
  Do Until xl.ActiveWorkbook.ReadOnly = False
    xl.ActiveWorkbook.Close (False)
    If GetAttr(i) = vbReadOnly Then SetAttr i, vbNormal
    xl.Workbooks.Open (i)
    If xl.ActiveWorkbook.ReadOnly = False Then
        ts.WriteLine "opened file: " & xl.ActiveWorkbook.Name
        Exit Do
    End If
Loop    'Loop above till read/write active

'''''More code here when workbook read/write mode
Next
heralde bizim işimize yarayan kısım bu 

Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile("c:\myLogFile.txt")

ts.WriteLine "opened file: " & xl.ActiveWorkbook.Name

Sub create_log_file()

' Create File System object
    Set SysObj = CreateObject("Scripting.FileSystemObject")
' Create log file
    Set TextStream = SysObj.CreateTextFile("c:\errorlog.log", True)
' Close logfile
    TextStream.Close

End Sub

Sub write_errors(error_message As String)

' Create File System object
    Set SysObj = CreateObject("Scripting.FileSystemObject")
' Get log file
    Set TextFile = SysObj.GetFile("c:\errorlog.log")
' Open log file for appending
    Set TextStream = TextFile.OpenAsTextStream(8, -2)
' Write error message to log file
    TextStream.WriteLine error_message
' Close log file
    TextStream.Close

End Sub

buda giriş çıkışları kaydeden güzel bir kod
Option Compare Database
Option Explicit
Private Const logBox As Boolean = True
' get computer name
Private Declare Function apiGetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Function ComputerName() As String
Dim sysName As String
Dim sLen As Long
sLen = 10&
sysName = String$(sLen, vbNullChar)
If apiGetComputerName(sysName, sLen) = 0& Then
ComputerName = "Unknown"
Else
ComputerName = Left$(sysName, sLen)
End If
End Function

Public Function OpenLog(obj As Object) As Long
Dim SDoc As String
Dim rs As DAO.Recordset
If logBox Then
SDoc = obj.Name
Set rs = DBEngine(0)(0).OpenRecordset("LOG_TABLE", dbOpenDynaset, dbAppendOnly)
rs.AddNew
rs!OpenDateTime = Now()
rs!CloseDateTime = Null
rs!DocName = SDoc
rs!ComputerName = ComputerName()
rs.Update
rs.Bookmark = rs.LastModified
OpenLog = rs!LogDocID
rs.Close
End If
End Function

Public Function CloseLog(obj As Object) As Long
Dim rs As DAO.Recordset
Dim sqlString As String
Dim SDoc As String
Dim sysString As String
If logBox Then
SDoc = obj.Name
sysString = ComputerName()
sqlString = "SELECT LOG_TABLE.* FROM LOG_TABLE WHERE ((LOG_TABLE.DocName = """ & SDoc & """) AND (LOG_TABLE.ComputerName = """ & sysString & """) AND (LOG_TABLE.CloseDateTime Is Null) AND (LOG_TABLE.OpenDateTime <= Now())) ORDER BY LOG_TABLE.OpenDateTime, LOG_TABLE.LogDocID;"
Set rs = DBEngine(0)(0).OpenRecordset(sqlString)
If rs.RecordCount > 0& Then
rs.Edit
rs!CloseDateTime = Now()
rs.Update
Else
rs.AddNew
rs!OpenDateTime = Null
rs!CloseDateTime = Now()
rs!DocName = SDoc
rs!ComputerName = sysString
rs.Update
End If
rs.Bookmark = rs.LastModified
CloseLog = rs!LogDocID
rs.Close
End If
End Function
@benbendedeilem
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 08:10
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 09:39
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 14:21
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 14/03/2020, 14:36
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 14:48
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 14/03/2020, 15:24
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 14/03/2020, 15:27
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 15:38
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 14/03/2020, 15:52
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 14/03/2020, 16:14
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 14/03/2020, 16:16
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 15/03/2020, 20:09
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 15/03/2020, 20:56
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 15/03/2020, 21:08
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 15/03/2020, 21:19
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 15/03/2020, 23:39
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 15/03/2020, 23:46
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 16/03/2020, 17:55
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 16/03/2020, 00:53
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 16/03/2020, 18:21
Cvp: Log Kaydı Oluşturmak - Yazar: feraz - 16/03/2020, 18:38
Cvp: Log Kaydı Oluşturmak - Yazar: berduş - 17/03/2020, 14:16
Cvp: Log Kaydı Oluşturmak - Yazar: accessman - 17/03/2020, 14:51
Cvp: Log Kaydı Oluşturmak - Yazar: berduş - 17/03/2020, 16:56