MS Access

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
SAKIS48
Δημοσιεύσεις: 4
Εγγραφή: 07 Φεβ 2008 19:02
Τοποθεσία: ΚΑΛΛΙΘΕΑ

MS Access

Δημοσίευση από SAKIS48 » 07 Φεβ 2008 19:37

Αγαπητοί φίλοι (υ)γεια σας.
Πρώτα θέλω να σας ευχαριστήσω που με δεχτήκατε στο forum.
Έχω μια υποφόρμα η οποία είναι συνδεδεμένη σε μια Φόρμα.Στην υποφόρμα εισάγω δεδομένα εκ των οποίων ένα πεδίο "διεύθυνση" και ένα άλλο "τηλέφωνο". Θα ήθελα να μου εξηγήσετε αν γίνεται όταν θα εισαγάγω ένα ίδιο νούμερο τηλεφώνου σε μια νέα εγγραφή να εμφανίζετε μήνυμα που θα με ενημερώνει ότι ήδη υπάρχει αυτό το νούμερο,και ακολούθως με μια μακροεντολή ή κώδικα να εμφανίζονται οι εγγραφές που περιέχουν το συγκεκριμένο νούμερο τηλεφώνου.
Σας ευχαριστώ. Σάκης
ΣΑΠτ

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

MS Access

Δημοσίευση από kon73 » 14 Απρ 2008 00:56

Φίλε SAKIS48

Μια λύση καλή που θεωρώ πολύ καλή για εγγραφή που ήδη υπάρχει είναι να δώσεις στην σχεδίαση του πίνακα στο πεδίο τηλέφωνο την ιδιότητα Primary key. Γίνεται με δεξί κλικ στο όνομα του πεδίου (Στην σχεδίαση του πίνακα) και να επιλέξεις Primary Key. Μοναδικό κλεδί δηλαδή. Αυτό έχει σαν αποτέλεσμα να εμφανίζει ένα μήνυμα λάθους (Το γράφω στα Αγγλικά) "The changes you requested to the table were not succeful because they would create duplicate values...". Τώρα για να μην εμφανίζεται αυτό το μήνυμα λάθους αλλά κάτι δικό σου πρέπει στην Φόρμα που θα περιέχει τον πίνακα στο Event (Γεγονός) Error (Λάθος) της φόρμας θα δώσεις τον παρακάτω κώδικα που σου παραθέτω.
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 3022 Then MsgBox "Το μήνυμα σου", vbCritical, "Η επικεφαλίδα του Μηνύματος"
Response = acDataErrContinue
End Sub
Μην ξεχάσεις και την γραμμή Response = acDataErrContinue για να παρακάμψει το μήνυμα λάθους που δίνει η Access και να εμφανίσει μόνο το δικό σου μήνυμα.

Αν πάλι έχεις απορρίες ευχαρίστως να σε βοηθήσω.

Φιλικά
kon73

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

MS Access

Δημοσίευση από kon73 » 14 Απρ 2008 01:07

Κάτι βασικό που δεν είπα είναι ότι με το Primary Key έχουμε και έναν ακόμα περιορισμό ότι δηλαδή πρέπει το πεδίο να συμπληρώνεται οπωσδήποτε άσχετα αν του δώσαμε στο πεδίο αυτό στην ιδιότητα [απατείται ] την τιμή όχι. Μου λες το λοιπόν αν θέλεις να συμπληρώνεται ή όχι απαραίτητα το πεδίο αυτό.

Φιλικά

kon73

SAKIS48
Δημοσιεύσεις: 4
Εγγραφή: 07 Φεβ 2008 19:02
Τοποθεσία: ΚΑΛΛΙΘΕΑ

MS Access

Δημοσίευση από SAKIS48 » 14 Απρ 2008 16:25

Φίλε(η) con73
Πρώτα θέλω να σε ευχαριστήσω για την βοήθειά σου.
Ψάχνοτας στα διάφορα forum βρήκα την λύση.
Σε ευχαριστώ.
Sakis48
ΣΑΠτ

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

MS Access

Δημοσίευση από kon73 » 14 Απρ 2008 17:31

Φίλε SAKIS48
Θα ήθελα να ξέρω αν δεν σε πειράζει εν τέλη ποια ήταν η λύση που βρήκες και αν η δική μου πρόταση ήταν μακριά από την επιθυμητή λύση.

και ναι το kon είναι male nick από το Κωνσταντίνος.

Πάντως χαίρομαι που καλύφθηκες. Να σε καλά.


Φιλικά

Κωνσταντίνος

SAKIS48
Δημοσιεύσεις: 4
Εγγραφή: 07 Φεβ 2008 19:02
Τοποθεσία: ΚΑΛΛΙΘΕΑ

MS Access

Δημοσίευση από SAKIS48 » 14 Απρ 2008 18:47

Για να σε βοηθήσω σου λέω ότι υπάρχουν πολλά πεδία με αριθμούς τηλεφώνων στην φόρμα και υποφόρμα και ψάχνει όλα τα ανωτέρω πεδία.

Public Function check_τηλ_db_field(strTel As String) As Boolean
Dim intΤηλCount As Integer, intCounter As Integer, strTable As String
check_τηλ_db_field = False

For intCounter = 1 To 8

Select Case intCounter
Case 1, 2, 3, 4
strTable = "tblΠελάτες"
Case 5, 6, 7, 8
strTable = "tblΥποθέσειςΠελατών"
End Select

On Error Resume Next
' Custom error handling incase we get the query wrong (invalid fields, table names etc.)
intΤηλCount = DCount("*", strTable, "strΤηλέφωνο" & intCounter & " = '" & strTel & "'")
If Err.Number <> 0 Then
' Urgh, error...
MsgBox "Error in DCount query:" & vbCrLf & Err.Description
Else
' Everything working fine!
If (intΤηλCount > 0) Then

MsgBox "ΠΡΟΣΟΧΗ !! Ο αριθμός " _
& strTel & " υπάρχει ήδη στο πεδίο Τηλεφώνου." & intCounter & "." _
& vbCr & vbCr & "Συνέχεια στην εγγραφή.", vbInformation _
, "Πληροφορία διπλότυπης εγγραφής"

'MsgBox ("Telephone number " & strTel & " already exists in field strTel" & intCounter & ".")
check_τηλ_db_field = True
End If
End If
On Error GoTo 0

Next intCounter

End Function

Sakis
ΣΑΠτ

Άβαταρ μέλους
kon73
Script Master
Δημοσιεύσεις: 224
Εγγραφή: 13 Απρ 2008 23:47
Επικοινωνία:

MS Access

Δημοσίευση από kon73 » 15 Απρ 2008 00:35

Φίλε SAKIS48,

Η σύναρτηση Dcount όπως και η Dlookup να πω την αλήθεια είναι από τις αγαπημένες μου. Στην περίπτωση σου το λοιπόν όντως θα εργαζόμουν και εγώ με μία από αυτές τις δύο.

Χαίρομαι που παράθεσες την λύση. Πιστεύω ότι είναι χρήσιμη για πολλούς εδώ στο Forum.

Φιλικά

kon73
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
Εικόνα

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες