Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Γενικά] Messenger Επαναλαμβανόμενο! (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4725-messenger-epanalambanomeno.html)

gfevran 01-11-17 15:42

Messenger Επαναλαμβανόμενο!
 
1 Συνημμένο(α)
Καλησπέρα,
Σε μια βάση δεδομένων καταχωρώ ονόματα & τηλέφωνα,
Μέσω του TextBox1 & OptionBatton1 αντίστοιχα κάνω αναζήτηση ονόματος και του TextBox2 & OptionBatton2 αντίστοιχα κάνω αναζήτηση με τηλέφωνο, αντίστοιχα αν γίνει λάθος πληκτρολόγηση να παίρνω μήνυμα λάθους, αυτό αντιμετωπίζω είναι στην αναζήτηση με όνομα και με σωστή πληκτρολόγηση παίρνω πάλι μήνυμα λάθους, ενώ αυτό δεν συμβαίνει με αναζήτηση τηλεφώνου.
Δεν μπόρεσα να βρω τι κάνω λάθος.
Στο σημείο αυτό θα ήθελα τη βοήθεια σας.
Παραθέτω συνημμένο.
Ευχαριστώ για όποια βοήθεια.

kapetang 01-11-17 19:27

Καλησπέρα

Θα πρότεινα να χρησιμοποιήσεις τον κώδικα:

Κώδικας:

Private Sub cmdSearch_Click()
'Αναζήτηση
    Dim totRows As Long, i As Long, j As Long

    totRows = Worksheets("Data").Range("A2").CurrentRegion.Rows.Count

    If OptionButton1.Value = True Then          'αναζήτηση ονόματος
        For i = 2 To totRows
            If Trim(Φύλλο1.Cells(i, 1)) = Trim(TextBox1.Text) Then
                For j = 1 To 4
                    Me.Controls("TextBox" & j) = Φύλλο1.Cells(i, j)
                Next
                Exit Sub
            End If
        Next
       
        MsgBox "Το όνομα δεν αντιστοιχεί" _
            & vbLf & "με τη λίστα της βάσης δεδομένων!", vbInformation, "Αναζήτηση εγγραφής"
        Me.TextBox1.SetFocus

    Else                                    'αναζήτηση τηλεφώνου
        For i = 2 To totRows
            If Trim(Φύλλο1.Cells(i, 2)) = Trim(TextBox2.Text) Then
                For j = 1 To 4
                    Me.Controls("TextBox" & j) = Φύλλο1.Cells(i, j)
                Next
                Exit Sub
            End If
        Next

        MsgBox "Ο αριθμός κινητού δεν αντιστοιχεί" _
            & vbLf & "με τη λίστα της βάσης δεδομένων!", vbInformation, "Αναζήτηση εγγραφής"
        Me.TextBox2.SetFocus
    End If

End Sub


gfevran 01-11-17 21:08

Γιώργο Σε' Ευχαριστώ πολύ.
Δούλεψε Τέλεια!

Spirosgr 01-11-17 22:30

Καλησπέρα
Γιώργο (gfevran), κάποιες παρατηρήσεις για να βελτιώσεις το έργο σου.

Κατ' αρχήν, ποτέ δεν χρησιμοποιείς
Option Explicit,
στην αρχή μιας module.
Αυτό είναι πολύ κακός προγραμματισμός,
παρ' όλο που η vba επιτρέπει εκτέλεση κώδικα,
χωρίς να γίνεται δήλωση μεταβλητών...

Τώρα επι του προκειμένου:
1
Αν υπάρχει στην λίστα πχ Νικολάου με τηλ 2100000000
και καταχωρήσεις πάλι Νικολάου με τηλ 2100000000, θα το δεχτεί (διπλότυπα...)
Δεν έχεις δηλαδή κάπου στο έργο σου, μια ασφάλεια για να αποτρέπει διπλότυπα.
Θα πρότεινα, να χρησιμοποιήσεις το τηλέφωνο σαν ID
μιας και θα μπορούσαν δυο εξαδέλφια πχ
Νικολάου Ε. Νικόλαος και Νικολάου Ε. Νικόλαος να βρίσκονται στην λίστα
αλλά ποτέ δεν θα έχουν τον ίδιο αριθμό τηλεφώνου.
Τώρα αν στην λίστα υπάρχει φυσικό πρόσωπο
Νικολάου Ε. Νικόλαος με αριθμό 2100000000
και εταιρία με αριθμό 2100000000
(συμβαίνει πολλές φορές να καταχωρούμε εταιρίες και πχ τον υπεύθυνο τάδε με τον ίδιο αριθμό)
θα πρέπει να βρείς άλλο στήριγμα πχ ένα Id καταχωρήσεων, έναν ΑΦΜ κλπ...

2
Αν έχεις Νικολάου με τηλ 2100000000 πχ στην 10η γραμμή
και Νικολάου με τηλ 2101111111 πχ στην 50η γραμμή,
όταν θέλεις να διαγράψεις τον Νικολάου με τηλ 2101111111
δεν θα το διαγράψει αλλά αντ' αυτού θα διαγράψει τον πρώτο.

Υπάρχουν κι άλλα μικρότερα σφάλματα...

gfevran 03-11-17 07:44

Καλημέρα Σπύρο,
Σε' Ευχαριστώ για την παρατήρηση, όσο για το Option Explicit
δεν ήξερα ποιο ρόλο παίζει και πότε να το χρησιμοποιήσω, σήμερα έμαθα κάτι καινούργιο
και για να είμαι ειλικρινής τα περισσότερα στο forum τα έχω μάθει από σένα και το Γιώργο
όσο για τη δεύτερη παρατήρηση έχεις δίκιο αλλά δεν ξέρω πως να το κάνω.
Να σε' καλά,
Σε' Ευχαριστώ για το χρόνο σου και το ενδιαφέρον σου.

Φιλικά Γιώργος.


Η ώρα είναι 23:36.

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


Search Engine Optimization by vBSEO 3.3.2