Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Ασφάλεια] Κλείδωμα βάσης για συγκεκριμένο χρόνο (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1409-kleidoma-basis-gia-sygkekrimeno-xrono.html)

comsup 02-10-11 22:26

Κλείδωμα βάσης για συγκεκριμένο χρόνο
 
Καλησπέρα σε όλους.
Αυτό που θα ήθελα να μάθω είναι τα εξής:
1. Πως θα κλειδώσω μια βάση φτιαγμένη σε access 2003 ώστε να είναι "προσβάσιμη" για κάποιο συγκεκριμένο χρόνο. (ημερολογιακά). Ο λόγος είναι ότι θέλω να διαθέσω μια εφαρμογή για 1 χρονικό διάστημα (1 έτος ίσως) και με τη λήξη του να ζητά κωδικό για να συνεχίσει να την χρησιμοποιεί.
2. Να μην μπορεί να αλλάξει ο χρήστης τη σχεδίαση πινάκων, φορμών και εκθέσεων.

Έχω ψάξει μήπως έχει ήδη απαντηθεί κάποιο από τα παραπάνω και δεν βρήκα κάτι ακριβώς ίδιο.
Ευχαριστώ εκ των προτέρων.
Δημήτρης

Meteora 03-10-11 16:45

Καλησπέρα

α) Για το δεύτερο ερώτημα πρέπει να μετατρέψεις την εφαρμογή από *.mdb σε *.mde, αφού όμως αρχικά παραμετροποιήσεις την εμφάνιση της εφαρμογής σου στον χρήστη (Εμφάνιση γραμμής κατάστασης, εμφάνιση παραθύρου περιήγησης, επιλογές γραμμής εργαλείων,...).
Συνηθίζεται όμως μια εφαρμογή Access να "σπάει" σε δυό συνδεόμενα κομάτια. Το ένα να περιέχει ΜΟΝΟ τους πίνακες και το άλλο κώδικα, ερωτήματα, φόρμες, μακροεντολές, αναφορές.
Το τμήμα που περιέχει τους πίνακες το κλειδώνεις. Το άλλο απλά το μετατρέπεις σε *.mde οπότε κανείς δεν μπορεί να δεί τι έχεις μέσα!

β) Στο άλλο σου ερώτημα μπορείς να κάνεις κάτι πολύ απλό! Γράφεις λίγο κώδικα που συγκρίνει την ημερομηνία του σήμερα με κάποια άλλη της επιλογής σου. Παράδειγμα αν αυτή είναι μεγαλύτερη ή ίση από την 1/6/2012, τότε ζητάς κωδικό (τον οποίο έχεις ενσωματώσει στον κώδικα). Βέβαια υπάρχουν και άλλες τεχνικές ασφάλειας, αλλά σε αυτές θα φτάσεις με τον καιρό...

Δημήτρη, ελπίζω να βοήθησα...

Με εκτίμηση
Νίκος Δ.

Υστερολόγιο: Φίλοι μου, αν έχω εμφανίσει λανθασμένες άναφορές στα *.mdb και *.mde, παρακαλώ διορθώστε...

comsup 04-10-11 09:54

Διευκρύνιση
 
Ευχαριστώ για την απάντηση. Θα προχωρήσω πρώτα στο θέμα του κλειδώματος της τροποποίησης σχεδιασμού. Θα ήθελα για αυτή τη λύση που μου προτείνεις περισσότερες λεπτομέρειες. Για να είμαι πιο συγκεκριμένος, η εφαρμογή περιέχει πίνακες που μέσα από τις αντίστοιχες φόρμες να μπορεί ο απλός χρήστης να προσθέτει ή να αλλάζει εγγραφές. Θα ήθελα να μην μπορεί να αλλάζει ή και να βλέπει αν γίνεται το σχεδιασμό πινάκων, φορμών, μακροεντολών και εκθέσεων. Απλά να χειρίζεται τις εγγραφές του μέσα από τις φόρμες.
Ευχαριστώ και πάλι
Δημήτρης

Σημ. Δεν γνωρίζω τη διαδικασία που σπάει το πρόγραμμα σε 2.

alex 04-10-11 12:24

Δημήτρη Καλησπέρα

Πρέπει να κάνεις την βάση σου ΜDE.Tότε δεν μπορούν οι (κακόβουλοι) να σου πειράξουν τον κώδικα.Μπορούν όμως να βλέπουν τους πίνακες.
1.Πρώτα πάς Εργαλεία-Εκκίνηση-Φόρμα εμφάνισης.
Βάζεις με ποιά φόρμα θέλεις να ανοίγεις την εφαρμογή και αποτσεκάρεις όλες τις επιλογές ώστε να μην εμφανίζεται το παράθυρο με τους πίνακες και τις φόρμες με το άνοιγμα της βάσης.
2.Για να κάνεις την βάση MDE πας Εργαλεία-Βοηθήματα για βάσεις δεδομένων-Δημιουργία αρχείου MDE.
Αλλά κατα το άνοιγμα της βάσης αν θέλει κάποιος μπορεί πατώντας το Shift να σου ανοίξει το παράθυρο να δεί τους πίνακες.Για να μήν βλέπει τους πίνακες είχε βάλει κάποιος απο τα παιδιά ένα παράδειγμα αλλά δεν θυμάμαι.Είχε σχέση με τον διαχειριστή και το χρήστη.
Πιστεύω να βοηθήθηκες

Φιλικά/Αλέξανδρος

Tasos 04-10-11 12:25

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

Δημήτρη, νομίζω ότι ο παρακάτω σύνδεσμος θα σε βοηθήσει:

http://www.ms-office.gr/forum/access...oma-basis.html

Επίσης ρίξε μια ματιά και σ αυτόν το σύνδεσμο:
http://www.ms-office.gr/forum/access...do-xristi.html

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

Φιλικά

Τάσος

alex 04-10-11 12:51

1 Συνημμένο(α)
Δημήτρη

Βρήκα ένα παράδειγμα απο παλιά βάση που είχα κάνει.Αυτο βέβαια απο το φορούμ το είχα δεί και το προσάρμοσα σε κάποια βάση.Θέλω να αναφέρω οτι δεν είναι κάτι δικό μου.Πιστεύω να σε καλύπτει.Ο κωδικός είναι alex και για το admin και για το χρήστη.Θα δείς πως γίνεται όταν το ανοίξεις.Ετσι με το ΜDE θα κλειδώνεις όλα τα άλλα (Φόρμες εκθέσεις κλπ) και με την εφαρμογή αυτή τους πίνακες

Φιλικά/Αλέξανδρος

comsup 04-10-11 17:20

Άνοιγμα συννημένου
 
Σε ποια έκδοση είναι το παράδειγμα που μου έστειλες; Έχω 2003 και μετατροπέα για 2007 αλλά δεν ανοίγει μετά την αποσυμπίεση.
Και αφού το ανέφερα - δεν είναι σχετικό με το αρχικό μου ερώτημα, αλλά θα εκτιμούσα πάρα πολύ την άποψή σας - έχω κάτι να κερδίσω από την access 2007 ή 2010 σε σχέση με την 2003; Στο υπόλοιπο office έχω δει αλλαγές αλλά στην access τι προτείνετε;

alex 04-10-11 20:04

1 Συνημμένο(α)
Δημήτρη

Το παράδειγμα είναι σε 2002 έκδοση.Λογικά θα έπρεπε να το βλέπεις με 2003.Το ξαναστέλνω μήπως δεν το φόρτωσε καλά.Το αρχικό σου ερώτημα ήταν να κάνεις Demo εφαρμογή αν κατάλαβα καλά
.Η απόκρυψη πινάκων παίζει ρολο για την εφαρμογή που θέλεις που σίγουρα θα υπάρχει κάποιος πίνακας που θα περιέχει κάποια τρέχουσα ημερομηνία.(Μιλάω με απλό κώδικα που να κλειδώνει για κάποιο χρονικό διαστημα)και όχι Μοdule.
Εάν ο χρήστης δει την ημερομηνία αυτή τότε την σβήνει και το Demo ξεκινά πάλι απο την αρχή.
Υπάρχουν βέβαια και κάποια προγραμματάκια στο δυαδίκτιο που σπάνε κωδικούς απο access οπότε πάλι δεν είσαι σίγουρος.
Εγώ νομίζω εάν θέλεις για κάτι σοβαρό να απευθυνθείς σε κάποιο ειδικό να σου κάνει αποκρυπτογράφηση των πινάκων ή να σου φτιάξει μια συνάρτηση Μodule που να καλει την συνάρτηση και να υπάρχει ο πίνακας με την τρέχουσα ημερομηνία μόνο γιατι πρέπει κάπου να περάσει η τρέχουσα ημερομηνία και να κλειδώνει μέσα απο τα register tou Pc.Οπότε και να σου πειράξουν τον πίνακα με την ημερομηνία δεν θα υπάρχει πρόβλημα.Τώρα για τα δεδομένα των πινάκων πιστεύω κάποια σοβαρή εφαρμογή κρατάει backup κάθε ημέρα και δεν υπάρχει προβλημα στο να ανακτήσεις τα δεδομένα.
Πιστεύω να βοηθήθηκες με ενημέρωση πιο πολύ

Φιλικά/Αλέξανδρος

Meteora 04-10-11 23:48

Καλημέρα

Δεν είναι ανάγκη να έχεις την ημερομηνία-όριο σε πίνακα. Την ενσωματώνεις στον κώδικα και δεν υπάρχει περίπτωση σε *.mde να την δει κάποιος.
παράδειγμα αν γράψεις:

If Date > DateSerial(2012, 3, 12) Then
<κώδικας απόρριψης διαχείρισης της εφαρμογής>
End If

Αποκλείεται κάποιος να σε αλλάξει το όριο (12 Μαρτίου 2012). ΜΟΝΟ αν αλλάξει ημερομηνία στον υπολογιστή του μπορεί να συνεχίσει την εφαρμογή...

Με εκτίμηση

Νίκος Δ.

comsup 05-10-11 07:31

Παράθεση:

Αρχική Δημοσίευση από alex (Μήνυμα 8256)
Δημήτρη

Το παράδειγμα είναι σε 2002 έκδοση.Λογικά θα έπρεπε να το βλέπεις με 2003.Το ξαναστέλνω μήπως δεν το φόρτωσε καλά.Το αρχικό σου ερώτημα ήταν να κάνεις Demo εφαρμογή αν κατάλαβα καλά

Φιλικά/Αλέξανδρος

Το πρόβλημα με το αρχείο ειναι μάλλον στο zip. Μήπως θα μπορούσες να στειλεις το αρχειο της access;

comsup 05-10-11 07:36

Παράθεση:

Αρχική Δημοσίευση από Meteora (Μήνυμα 8258)
Καλημέρα

Δεν είναι ανάγκη να έχεις την ημερομηνία-όριο σε πίνακα. Την ενσωματώνεις στον κώδικα και δεν υπάρχει περίπτωση σε *.mde να την δει κάποιος.
παράδειγμα αν γράψεις:

If Date > DateSerial(2011, 3, 12) Then
<κώδικας απόρριψης διαχείρισης της εφαρμογής>
End If

Αποκλείεται κάποιος να σε αλλάξει το όριο (12 Μαρτίου 2011). ΜΟΝΟ αν αλλάξει ημερομηνία στον υπολογιστή του μπορεί να συνεχίσει την εφαρμογή...

Με εκτίμηση

Νίκος Δ.

Αυτό ψάχνω ακριβώς. Ένα μεγάλο χρονικό διάστημα για demo. Δεν υπάρχει περίπτωση να σπάσει κάποιος τον κώδικα - εννοώ σε αυτούς που απευθύνομαι. Απλά θέλω να τους δώσω ένα κίνητρο να επικοινωνούν μαζί μου κάθε χρόνο, ώστε να ανανεώνουν το χρονικό διάστημα. Δεν ξέρω πως να γράψω τον "κώδικα απόρριψης διαχείρισης της εφαρμογής" με ένα κατατοπιστικό μήνυμα στο χρήστη. Έχω μια κεντρική φόρμα menu στην οποία σκέφτομαι να βάλω ενημερωτικό μήνυμα όταν πλησιάζει η λήξη (πχ 30 μέρες ακόμα) και όταν λήξει να κλείνει η εφαρμογή.
Καλημέρα και ευχαριστώ πολύ για το ενδιαφέρον

comsup 05-10-11 07:43

Παράθεση:

Αρχική Δημοσίευση από alex (Μήνυμα 8256)
Δημήτρη

Το παράδειγμα είναι σε 2002 έκδοση.Λογικά θα έπρεπε να το βλέπεις με 2003.Το ξαναστέλνω μήπως δεν το φόρτωσε καλά.Το αρχικό σου ερώτημα ήταν να κάνεις Demo εφαρμογή αν κατάλαβα καλά

Φιλικά/Αλέξανδρος

ΟΚ ανοίγει, ευχαριστώ

alex 05-10-11 08:20

Καλημέρα

Εχεις δίκιο Νίκο για το τρόπο που περιγράφεις .Ισως εγώ δεν έκανα καλή διατύπωση.Πρίν συνταχθεί ο κώδικας για την απόρριψη διαχείρισης της εφαρμογής χρειάζεται και να ελέγχει και την ημερομηνία του υπολογιστή και αυτο μπορεί να γίνει με (DLookup(FieldFRunDate, TblName)) που να ελέγχει τον πίνακα ΠΧ.tblTrial με πεδια TrialActive ,FrstDate,CurDate,DaysTrial όπου
Dim DtFrstDate As Date, CurrDate As Date
CurrDate = Date
Ολα αυτά σε Module. Με το άνοιγμα της εφαρμογής να φορτώνει την τρέχουσα ημερομηνία με αποτέλεσμα εάν αλλάξει κάποιος την ημερομηνία του υπολογιστή μεγαλυτερη > ή < μικρότερη τότε έρχεται σε λειτουργία ο κώδικας και σταματάει η εφαρμογή.Στην περίπτωση αυτή εννοώ ότι εάν κάποιος δεί τον πίνακα και τον αλλάξει επανέρχεται η εφαρμογή.
Η περίπτωση που αναφέρθηκα στο προηγούμενο μήνυμα με αποκρυπτογράφηση των πινάκων και μια συνάρτηση Μodule που να καλει την συνάρτηση και να υπάρχει ο πίνακας με την τρέχουσα ημερομηνία μόνο γιατι πρέπει κάπου να περάσει η τρέχουσα ημερομηνία και να κλειδώνει μέσα απο τα register tou Pc.Οπότε και να σου πειράξουν τον πίνακα με την ημερομηνία δεν θα υπάρχει πρόβλημα.Επίσης εάν γυρίσει η ημερομηνία του υπολογιστή εμπρός ή πίσω τότε πάλι να μπλοκάρει την εφαρμογή.

Φιλικά
Αλέξανδρος

comsup 05-10-11 09:03

Υλοποίηση λύσης
 
Συγνώμη που γίνομαι κουραστικός, κατάλαβα τον τρόπο που προτείνεις να κλειδώσει η ημερομηνία, αλλά δυστυχώς δεν έχω γνώσεις να φτιάξω module. Πως θα μπορούσες να με βοηθήσεις; Αρκεί ένα παράδειγμα με την κεντρική μου φόρμα; Αν γίνεται έτσι, σε παρακαλώ κάνε μου ένα παράδειγμα με μια άδεια φόρμα με όνομα menu και πιστεύω θα καταφέρω να τα μεταφέρω στο πρόγραμμά μου.
Ευχαριστώ και πάλι

alex 05-10-11 10:08

Δημήτρη

Το συγκεκριμένο που έχω το έχω αγοράσει και δεν πρέπει να το βγάλω στον αέρα και είναι παράκληση απο τον πωλητή .Εάν μπορέσω να σου πω περίπου τι να κάνεις.

Για να ανοίγει η βάση να λειτουργεί για συγκεκριμένο αριθμό ημερών...
Φτιάχνω λοιπόν ένα πίνακα "tbldays" με πεδίο "firstdate". Πρέπει λοιπόν στο άνοιγμα της βάσης να γίνεται ένας έλεγχος αν το πεδίο firstdate είναι null και αν είναι να πάρει τιμή date() (πρώτη εκτέλεση της βάσης), αν δεν είναι null να γίνεται μια σύγκριση με το Now() και αν η διαφορά τους είναι μεγαλύτερη από χ ημέρες να βγάζει ένα σχετικό msgbox και να μην ανοίγει η βάση, ενώ αν είναι μικρότερη να προχωρά κανονικά το άνοιγμα της βάσης..
Η παρακάτω συνάρτηση δεν ξέρω εάν είναι και σωστή τα παιδιά που ξέρουν πολύ καλά κώδικα ίσως και βοηθήσουν.

.Public Function fTrialDays()
Dim StartDay As Date

'Ελέγχει τον πίνακα
If IsNull(DMax("[firstdate]", "tbldays")) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO tbldays VALUES ( Now())"
DoCmd.SetWarnings True
Exit Function
Else
StartDay = DMax("[firstdate]", "tbldays")
End If

'Ελεγχος για χ=15 μέρες
If Now() > DateAdd("d", 15, StartDay) Then
'Σχετικό μήνυμα και κλείσιμο της access
MsgBox "Οι x μέρες πέρασαν.", , "Info.."
DoCmd.Quit
else
DoCmd.openForm "frmMain"
End If

End Function
Πιστεύω ότι κάπως έτσι πρέπει να είναι ο κώδικας που δεν έχει καμμια σχέση με αυτόν που έχω αγοράσει.
Εάν γνωρίζει κάποιος πιο πολλά μπορεί να βοηθήσει.
Αλλά πρέπει να εξασκηθείς πιο πολύ για να φτάσεις στο επίπεδο αυτο ώστε να κάνεις κάτι απο μόνος σου.
Φιλικά
Αλέξανδρος

comsup 05-10-11 11:44

Παράθεση:

Αρχική Δημοσίευση από alex (Μήνυμα 8265)
Δημήτρη

'Ελεγχος για χ=15 μέρες
If Now() > DateAdd("d", 15, StartDay) Then
'Σχετικό μήνυμα και κλείσιμο της access
MsgBox "Οι x μέρες πέρασαν.", , "Info.."
DoCmd.Quit
else
DoCmd.openForm "frmMain"
End If
End Function
Φιλικά
Αλέξανδρος


Εάν

Το πρόβλημά μου κυρίως είναι ο τρόπος που θα κλείνει η εφαρμογή. Χρησιμοποιώ μακροεντολή να ελέγχει τις ημερομηνίες, και μπορώ να εμφανίσω μνμ. Δεν μπορώ όμως να κλείσω φόρμα ή εφαρμογή. Στο πιο πανω module - αν μπορώ να καταλάβω σωστα - υπάρχει η εντολή DoCmd.Quit που λογικά κλεινει. Αν είμαι υποχρεωμένος να χρησιμοποιήσω module δεν εχω ιδέα πως να το κάνω. Ειναι κριμα γιατι το υπόλοιπο πρόγραμμα είναι άρτιο και εξυπηρετεί το σκοπό του τέλεια.

alex 05-10-11 11:59

1 Συνημμένο(α)
Δημήτρη καλησπέρα

Βασικά παρόλου που δεν έχω χρόνο γιατί παιδεύομαι με μια βάση POS.Επειδή καταλαβαίνω ότι και πάλι δεν θα το καταφέρεις. Κοιτα το συννημένο δουλεύει.Θέλει όμως ο πίνακας να φορτώνει αμέσως την ημερομηνία του υπολογιστή.Είναι κατι πρόχειρο.Πάντως σου συνιστώ κάτσε και διάβασε και θα καταφέρεις πολλά.Πρέπει τελικά να σου απαντήθηκαν και τα 2 ερωτήματα στο περίπου.
ΝΑ ΓΥΡΙΣΕΙΣ ΤΗΝ ΗΜΕΡΟΜΗΝΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΜΠΡΟΣΤΑ ΓΙΑ ΔΟΚΙΜΗ 20 ΗΜΕΡΕΣ ΓΙΑ ΔΟΚΙΜΗ
Καλή συνέχεια

Φιλικά
Αλέξανδρος

comsup 05-10-11 13:15

Παράθεση:

Αρχική Δημοσίευση από alex (Μήνυμα 8268)
Δημήτρη καλησπέρα

Βασικά παρόλου που δεν έχω χρόνο γιατί παιδεύομαι με μια βάση POS.Επειδή καταλαβαίνω ότι και πάλι δεν θα το καταφέρεις. Κοιτα το συννημένο δουλεύει.Θέλει όμως ο πίνακας να φορτώνει αμέσως την ημερομηνία του υπολογιστή.Είναι κατι πρόχειρο.Πάντως σου συνιστώ κάτσε και διάβασε και θα καταφέρεις πολλά.Πρέπει τελικά να σου απαντήθηκαν και τα 2 ερωτήματα στο περίπου.
ΝΑ ΓΥΡΙΣΕΙΣ ΤΗΝ ΗΜΕΡΟΜΗΝΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΜΠΡΟΣΤΑ ΓΙΑ ΔΟΚΙΜΗ 20 ΗΜΕΡΕΣ ΓΙΑ ΔΟΚΙΜΗ
Καλή συνέχεια

Φιλικά
Αλέξανδρος

Ευχαριστώ, σίγουρα αν παιδευτώ θα μάθω... καλή συνέχεια σε ότι κάνεις


Η ώρα είναι 14:09.

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


Search Engine Optimization by vBSEO 3.3.2