![]() |
Έλεγχος εάν υπάρχει ο αριθμός στο text file Φίλοι μου καλησπέρα σας, Μήπως γνωρίζει κάποιος εάν είναι δυνατόν να συγκρίνονται δύο τιμές ανάμεσα σε ένα πεδίο μιας φόρμας και σε ένα αρχείο txt. το οποίο βρίσκεται στον C:? Να μπορώ δηλαδή ας πούμε στο On-Open Event της φόρμας να τρέχει ο κώδικας και εφόσον ανοίξει να μου δίνει μήνυμα ότι ας πούμε ο αριθμός 100 υπάρχει μέσα στο text αρχείο που βρίσκεται στον C: Ευχαριστώ εκ προτέρων |
1 Συνημμένο(α) Καλησπέρα Γιώργο, στο συνημμένο θα βρεις μια προσομοίωση του ζητούμενου. 1) Μετά την αποσυμπίεση αντίγραψε το αρχείο Test.txt στο φάκελο C:\Test. 2) Άνοιξε τη ΒΔ και τη φόρμα frmTest και μετακινήσου στις εγγραφές. 3) Παρατήρησε τα σχετικά μηνύματα. Φιλικά/Γιώργος |
Καλησπέρα Γιώργο και εύχομαι πάντα να είσαι καλά φίλε μου, Σε ευχαριστώ πολύ για την βοήθεια, είναι όντως ότι ζητώ μόνο που εάν υπάρχει το ενδεχόμενο να δημιουργείται αυτόματα το αρχείο txt είναι το ιδανικό. Δηλαδή το τελειο στην περίπτωση μου θα ήταν: 1. Με το άνοιγμα της βάσης να μπορεί να γίνεται έλεγχος εάν και κατά πόσο υπάρχει αυτό το αρχείο στον C: και στο folder που θα καθορίσω 2. Εάν δεν υπάρχει να μπορώ να το δημιουργώ με την χρήση μιας εντολής Εάν και αυτό γίνει εφικτό θα με βοηθούσε αφάνταστα.... Σε ευχαριστώ και πάλι |
1 Συνημμένο(α) Καλημέρα Γιώργο, δες το συνημμένο. Όταν φορτώνεται η φόρμα frmStart εκτελείται κώδικας, που ελέγχει αν υπάρχει το αρχείο “c:\Test\test.txt”. Αν υπάρχει το αρχείο η διαδικασία τερματίζει. Αν δεν υπάρχει: 1) Δημιουργείται ο φάκελος “c:\Test”, αν δεν υπάρχει. 2) Δημιουργείται το αρχείο “c:\Test\test.txt”. 3) Εισάγονται δεδομένα στο αρχείο από το χρήστη. Φιλικά/Γιώργος |
Καλησπέρα Γιώργο, Έχω δοκιμάσει την λύση που προτείνεις και αντιμετωπίζω ένα μικρό πρόβλημα. Εφόσον ανοίξει η φόρμα frmStart η οποία περιέχει τον κώδικα ελέγχου εάν υπάρχει το text file, μου βγάζει ένα InputBox το οποίο θέλω να απαληφθεί... Δοκιμασα να κάνω μια μετρτοπή στον κώδικα διαγράφωντας το κομματι του κώδικα που σχετίζεται με το InputBox και βάζωντας στην θέση του να ενημερώνεται απο ένα unbound που έβλα στην φόρμα αλλά, αν και τρέχει ο κώδικας, πηγαίνει και μου βάζει εκατοντάδες στοιχεία μέσα στο αρχείο Test.txt..... Τι κανω λάθος Γιώργο? Παραθέτω τον κώδικα με την μετατροπή που έκανα Sub CreateTextFile(sFile As String) Dim nFile As Integer, sNum As String 'Ο επόμενος ελεύθερος αριθμός για ταυτότητα αρχείου nFile = FreeFile 'Άνοιγμα αρχείου για εγγραφή δεδομένων Open sFile For Output As #nFile Do sNum = Forms!StartForm.CurrentSVN If sNum = "" Then Exit Do Else Print #nFile, "" & sNum & "" End If Loop Close #nFile End Sub |
Γιώργο, όπως ήταν διαμορφωμένος ο κώδικας, παρουσιάζοντας διάφορα InputBox, έδινε τη δυνατότητα προσθήκης στο αρχείο πολλών αριθμών. Γι’ αυτό που θέλεις δοκίμασε τον κώδικα: Κώδικας: Sub CreateTextFile(sFile As String) |
Καλησπέρα και πάλι Γιώργο και σε ευχαριστώ πολύ για την βοήθεια. Θα δοκιμάσω την αλλαγή στον κώδικα αύριο και αν έχω οποιοδήποτε πρόβλημα θα επανέλθω ξανά. Καλό βράδυ και ευχαριστώ ξανά |
Καλησπέρα σε όλους τους φίλους, Με την βοήθεια του φίλου μας Kapetang (τον οποίο ευχαριστώ θερμά και πάλι) έφτασα στο ζητούμενο του προβλήματος μου που ήταν στην ουσία η δημιουργία ενός Folder και ενός αρχείου .txt μέσα στο οποιο θα αποθηκεύονται διάφοροι αριθμοί. Χρησιμοποιώντας λοιπόν τον κώδικα και την βοηθεια του Kapetag μπόρεσα δηλαδη να κάνω τα εξής: Όταν φορτώνεται η φόρμα frmStart εκτελείται κώδικας, που ελέγχει αν υπάρχει το αρχείο “c:\Test\test.txt”. Αν υπάρχει το αρχείο η διαδικασία τερματίζει. Αν δεν υπάρχει: 1) Δημιουργείται ο φάκελος “c:\Test”, αν δεν υπάρχει. 2) Δημιουργείται το αρχείο “c:\Test\test.txt”. 3) Εισάγονται δεδομένα στο αρχείο από το χρήστη. Τώρα όμως θα ήθελα και ένα δεύτερο σκέλος του ζητούμενου μου να μπορεί με κάποιο τρόπο να γίνεται: Θέλω να μπορω να προσθέτω ή αντιστόφως να σβήνω κάποια απο τα δεδομένα που υπάρχουν σε αυτο το αρχειο. Δηλαδή: ¨Εστω ότι υπάρχει ο φάκελος και το αρχείο στην διαδρομή “c:\Test\test.txt”. 1) Να μπορώ μεσω μιας εντολης να προσθετω και άλλα δεδομένα στο file .txt (σε νέα γραμμή) 2) Να μπορώ επίσης μέσω μιας εντολής να εντοπίζω τον αριθμό στο αρχειο .txt που θέλω να διαγράψω και να μπορώ να το κάνω.. Θα εκτιμούσα την βοήθεια σας και προσδοκώ πως το θα επιτευχθεί το ζητούμενο με την δικής σας βοήθεια. Με εκτίμηση, |
1 Συνημμένο(α) Γεια σου φιλέ Γιώργο, Πιστεύω να είναι αυτό που θέλεις. Δες το συνημμένο αρχείο. |
Καλησπέρα Γιώργο, Υπερ-πολύτιμη βοήθεια σου φίλε μου..!! Με καλύπτει η λύση σου αλλά χωρίς τα Input Boxes..! Θα προσπαθήσω να τα αφαιρέσω και να διαμορφώσω τον κώδικα έτσι ώστε να παίρνει τιμή απο κάποιο πεδίο που θέλω.. Επλίζω Γιώργο μου να τα καταφέρω (δεν είμαι έμπειρος σε θέμα vba) Σε ευχαριστώ φίλε μου, εάν βρώ δυσκολία θα επανέλθω. Φιλικά, |
1 Συνημμένο(α) Γιώργο προσπαθώντας να διαμορφώσω τον κώδικα στα μέτρα μου έπεσα στο συναπτόμενο σφάλμα... |
1 Συνημμένο(α) Καλημέρα Γιώργο, Θα πρέπει να πας από τον vba editor από το μενού Tools->References και στο παράθυρο διαλόγου που θα ανοίγει να βρεις το Microsoft Scripting Runtime να το τσεκάρεις και να πατήσεις OK και είσαι έτοιμος. |
Γειά σου Γιώργο μου, Σε ευχαριστώ φίλε μου, όταν θα πάω στο σπίτι θα το δοκιμάσω και εάν έχω οτιδήποτε θα επανέλθω. Σε ευχαριστώ πάντως για την βοήθεια και το ενδιαφέρον να βοηθήσεις έναν άσχετο..:plaf: |
1 Συνημμένο(α) Καλησπέρα σε όλους και ιδιαιτέρως σε εσένα φίλε Γιώργο, Προσπαθώ να προσαρμίσω τον κώδικα αυτό έτσι ώστε να παρακάμψω την διαδικασία του Input Box και να παίρνει τιμή απο ένα πεδίο στην φόρμα SKey αλλά κτυπάει ο κώδικας συνεχώς μιας και απο την απειρία μου μάλλον έχω κάνει κάποιο λάθος.. Ο κώδικας οπως τον έχω διαμορφώσει και συνημμένη η φωτο με το σημείο που κτυπά ο κώδιας.. Function findtext(sfile As String) As String lngLine = 0 nfile = FreeFile strSearch = Forms!SKey.txtMod1 lngLine = 0 blnFound = False Open sfile For Random As #nfile Open sfile For Random As #nfile Do While Not EOF(nfile) lngLine = lngLine + 1 Line Input #nfile, strLine If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then msg = MsgBox("Ο αριθμός :" & strSearch & " βρέθηκε στην γραμμή: " & lngLine & " θελετε να διαγραφεί?", vbQuestion + vbOKCancel) blnFound = True If msg = vbOK Then Call DeleteLinefile(sfile, lngLine) Close #nfile Exit Do End If End If Loop If blnFound = False Then MsgBox "Ο αριθμός :" & strSearch & " δεν βρέθηκε", vbInformation End If Close #nfile End Function Θα εκτημήσω ενα χέρι βοήθειας.. |
2 Συνημμένο(α) Γεια σου Γιώργο. Στον κώδικα που έχεις σου χτυπάει λάθος η γραμμή «Open sfile For Random As #nfile» γιατί την έχεις δυο φορές, σβήσε την μια. Το αρχείο γιατί το ανοίγεις «For Random». Δες τα επισυναπτόμενα αρχεία και πρόσεξε την διαφορά που έχουν. Στο ένα μεταβιβάζουμε την τιμή του textbox την μεταβλητή «strSearch» ενώ στο άλλο την περνάμε σαν όρισμα στην συνάρτηση «findtext». Αρκεί και στις δυο περιπτώσεις το περιεχόμενο των μεταβλητών να μην είναι κενό. |
Γιώργο γειά σου και ευχαριστώ για την ανταπόκριση φίλε μου, Βασικά Γιώργο μου θέλω να αποφύγω εντελώς το Input Box και να παίρνει τιμη από την φόρμα (SKey) και απο το πεδίο [0txtMod1]. Για αυτό προσπάθησα να προσαρμόσω τον κώδικα έτσι ώστε να κάνει τα εξής: 1. Στην διαδρομή "C:\ProgramData\Dash\Slash.txt" υπάρχει το αρχείο μέσα στο οποίο αποθηκεύονται περίπου 20 αριθμοί ό ένας κάτω απο τον άλλο (σε διαφορετικη γραμμή δηλαδή) 2. Εφόσον ανοίξει η φόρμα (SKey) το πεδίο [txtMod1] παίρνει όλες τις τιμές (όλες δηλαδή τις γραμμές) που υπαρχουν στο αρχείο Slash.txt που όπως είπα βρίσκεται μέσα στο Folder Dash (C:\ProgramData\Dash\Slash.txt). 3. Αυτό που προσπαθώ να επιτύχω (και θα εκτιμούσα την αμέριστη βοήθεια σου) είναι εφόσον πατώσω την εντολή cmdSearch να μπορεί ο κώδικας να "κοιτάζει" σε αυτό το αρχείο εάν υπάρχει σε οποιαδήποτε γραμμή ο αριθμός που βρίσκεται σε ένα άλλο πεδίο (το [txtData]) που βρίσκεται και αυτό στην φόρμα.. Προσπάθησα λοιπόν να μετατρέψω τον κώδικα αλλά....μάταια.. Function findtext(sfile As String) As String lngLine = 0 nfile = FreeFile strSearch = Forms!SKey.txtMod1 lngLine = 0 blnFound = False Open sfile For Random As #nfile Do While Not EOF(nfile) lngLine = lngLine + 1 Line Input #nfile, strLine If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then msg = MsgBox("Ο αριθμός :" & strSearch & " βρέθηκε στην γραμμή: " & lngLine & " θελετε να διαγραφεί?", vbQuestion + vbOKCancel) blnFound = True If msg = vbOK Then Call DeleteLinefile(sfile, lngLine) Close #nfile Exit Do End If End If Loop If blnFound = False Then MsgBox "Ο αριθμός :" & strSearch & " δεν βρέθηκε", vbInformation End If Close #nfile End Function Ευχαριστώ εκ προτέρων |
Καλημέρα φίλε Γιώργο Στον κώδικα strSearch = Forms!SKey.txtMod1 άλλαξε το σε strSearch = Forms_SKey.txtData.value. Αρκεί να κάνεις έλεγχο να μην είναι κενό. |
Καλησπέρα φίλε Γιώργο, Σήμερα βρήκα χρόνο να ελέξω τον κώδικα. Προσπαθώντας όμως να προσαρμόσω την εντολή να "τρέχει" απο κάποιο κουμπί, έγραψα απλά το findtext αλλά κτυπάει....άλλαξα και το Function σε Public αλλά και πάλι πρόβλημα.. Κάθε βοήθεια είναι εκτιμητέα. Σε ευχαριστώ |
Γεια σου Γιωργο Η συναρτηση για να εκτελεστη πρεπει να εχει ορισμα την διαδρομη του αρχειου. π.χ call findtext(pathfile) οπου pathfile="c:\folder\folder\file.txt" . |
Γεια σου Γιώργο Η συνάρτηση για να εκτελεστή πρέπει να έχει όρισμα την διαδρομή του αρχείου. π.χ call findtext(pathfile) οπου pathfile="c:\folder\folder\file.txt" . |
Γιώργο γειά σου και πάλι, Θα κάνω τις δοκιμές μου φίλε και αν έχω πρόβλημα θα επανέλθω.. Απολογούμαι εάν κάνω ηλίθιες ερωτησεις αλλά δεν γνωριζω και πολλά απο κώδικα...Το παλεύω πάντως..!! Νά σαι καλά και ευχαριστώ |
| Η ώρα είναι 16:28. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.